From 8e07e38f1f659d15768a53ed4cf5c401d873e869 Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Fri, 1 Aug 2008 08:51:29 +0000 Subject: [PATCH] fix cp_error037, fix noconst.c [r20882] --- ast.c | 5 +++-- ast2firm.c | 10 +++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/ast.c b/ast.c index 7869a05..a191992 100644 --- a/ast.c +++ b/ast.c @@ -1504,13 +1504,14 @@ bool is_address_constant(const expression_t *expression) return is_object_with_linker_constant_address(expression->unary.value); case EXPR_UNARY_DEREFERENCE: { - type_t *real_type = revert_automatic_type_conversion(expression->unary.value); + type_t *real_type + = revert_automatic_type_conversion(expression->unary.value); /* dereferencing a function is a NOP */ if(is_type_function(real_type)) { return is_address_constant(expression->unary.value); } - return false; + /* fallthrough */ } case EXPR_UNARY_CAST: diff --git a/ast2firm.c b/ast2firm.c index 35ceade..509f302 100644 --- a/ast2firm.c +++ b/ast2firm.c @@ -997,13 +997,13 @@ static ir_entity *get_function_entity(declaration_t *declaration) dbg_info *const dbgi = get_dbg_info(&declaration->source_position); entity = new_d_entity(global_type, id, ir_type_method, dbgi); set_entity_ld_ident(entity, create_ld_ident(entity, declaration)); - if (declaration->storage_class == STORAGE_CLASS_STATIC && - declaration->init.statement == NULL) { - /* this entity was declared, but never defined */ - set_entity_peculiarity(entity, peculiarity_description); - } + if (declaration->storage_class == STORAGE_CLASS_STATIC || declaration->is_inline) { + if (declaration->init.statement == NULL) { + /* this entity was declared, but is defined nowhere */ + set_entity_peculiarity(entity, peculiarity_description); + } set_entity_visibility(entity, visibility_local); } else if (declaration->init.statement != NULL) { set_entity_visibility(entity, visibility_external_visible); -- 2.20.1