From: Matthias Braun Date: Fri, 1 Aug 2008 10:58:44 +0000 (+0000) Subject: mark constants as variability_constant X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=984da01e9c6590b18df8e6f49c4d7077c80dfee6;p=cparser mark constants as variability_constant [r20894] --- diff --git a/ast2firm.c b/ast2firm.c index 509f302..655f6d4 100644 --- a/ast2firm.c +++ b/ast2firm.c @@ -3671,6 +3671,8 @@ static void create_declaration_initializer(declaration_t *declaration) return; } + type_t *type = skip_typeref(declaration->type); + if (initializer->kind == INITIALIZER_VALUE) { initializer_value_t *initializer_value = &initializer->value; dbg_info *dbgi @@ -3686,7 +3688,11 @@ static void create_declaration_initializer(declaration_t *declaration) ir_entity *entity = declaration->v.entity; - set_entity_variability(entity, variability_initialized); + if (type->base.qualifiers & TYPE_QUALIFIER_CONST) { + set_entity_variability(entity, variability_constant); + } else { + set_entity_variability(entity, variability_initialized); + } set_atomic_ent_value(entity, value); } } else { @@ -3695,9 +3701,13 @@ static void create_declaration_initializer(declaration_t *declaration) ir_entity *entity = declaration->v.entity; ir_initializer_t *irinitializer - = create_ir_initializer(initializer, declaration->type); + = create_ir_initializer(initializer, type); - set_entity_variability(entity, variability_initialized); + if (type->base.qualifiers & TYPE_QUALIFIER_CONST) { + set_entity_variability(entity, variability_constant); + } else { + set_entity_variability(entity, variability_initialized); + } set_entity_initializer(entity, irinitializer); } }