projects
/
cparser
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
- BugFix: unitializer must be created using qualifiers from array-skipped typed
[cparser]
/
ast2firm.c
diff --git
a/ast2firm.c
b/ast2firm.c
index
86638a7
..
e3eed6e
100644
(file)
--- a/
ast2firm.c
+++ b/
ast2firm.c
@@
-3862,7
+3862,8
@@
static void create_declaration_initializer(declaration_t *declaration)
return;
}
return;
}
- type_t *type = skip_typeref(declaration->type);
+ type_t *type = declaration->type;
+ type_qualifiers_t tq = get_type_qualifier(type, true);
if (initializer->kind == INITIALIZER_VALUE) {
initializer_value_t *initializer_value = &initializer->value;
if (initializer->kind == INITIALIZER_VALUE) {
initializer_value_t *initializer_value = &initializer->value;
@@
-3879,7
+3880,7
@@
static void create_declaration_initializer(declaration_t *declaration)
ir_entity *entity = declaration->v.entity;
ir_entity *entity = declaration->v.entity;
- if (t
ype->base.qualifiers
& TYPE_QUALIFIER_CONST) {
+ if (t
q
& TYPE_QUALIFIER_CONST) {
set_entity_variability(entity, variability_constant);
} else {
set_entity_variability(entity, variability_initialized);
set_entity_variability(entity, variability_constant);
} else {
set_entity_variability(entity, variability_initialized);
@@
-3887,14
+3888,14
@@
static void create_declaration_initializer(declaration_t *declaration)
set_atomic_ent_value(entity, value);
}
} else {
set_atomic_ent_value(entity, value);
}
} else {
- assert(declaration_kind == DECLARATION_KIND_LOCAL_VARIABLE_ENTITY
-
||
declaration_kind == DECLARATION_KIND_GLOBAL_VARIABLE);
+ assert(declaration_kind == DECLARATION_KIND_LOCAL_VARIABLE_ENTITY
||
+ declaration_kind == DECLARATION_KIND_GLOBAL_VARIABLE);
ir_entity *entity = declaration->v.entity;
ir_initializer_t *irinitializer
= create_ir_initializer(initializer, type);
ir_entity *entity = declaration->v.entity;
ir_initializer_t *irinitializer
= create_ir_initializer(initializer, type);
- if (t
ype->base.qualifiers
& TYPE_QUALIFIER_CONST) {
+ if (t
q
& TYPE_QUALIFIER_CONST) {
set_entity_variability(entity, variability_constant);
} else {
set_entity_variability(entity, variability_initialized);
set_entity_variability(entity, variability_constant);
} else {
set_entity_variability(entity, variability_initialized);