return;
}
+ type_t *type = skip_typeref(declaration->type);
+
if (initializer->kind == INITIALIZER_VALUE) {
initializer_value_t *initializer_value = &initializer->value;
dbg_info *dbgi
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 {
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);
}
}