- ir_node *value = expression_to_firm(initializer->value);
- type_t *type = initializer->value->base.type;
+ type_t *type = initializer->value->base.type;
+ expression_t *expr = initializer->value;
+ if (initializer_use_bitfield_basetype) {
+ type_t *skipped = skip_typeref(type);
+ if (skipped->kind == TYPE_BITFIELD) {
+ /* remove the bitfield cast... */
+ assert(expr->kind == EXPR_UNARY_CAST_IMPLICIT);
+ expr = expr->unary.value;
+ type = skipped->bitfield.base_type;
+ }
+ }
+ ir_node *value = expression_to_firm(expr);