type_t *arg_type = skip_typeref(expression->base.type);
if (!is_type_compound(arg_type)) {
- ir_mode *mode = get_ir_mode_storage(expression->base.type);
- arg_node = create_conv(dbgi, arg_node, mode);
- arg_node = do_strict_conv(dbgi, arg_node);
+ ir_mode *const mode = get_ir_mode_storage(arg_type);
+ arg_node = create_conv(dbgi, arg_node, mode);
+ arg_node = do_strict_conv(dbgi, arg_node);
}
in[n] = arg_node;
if (from_var != NULL) {
ir_node *const addr = create_symconst(dbgi, from_var->v.entity);
ir_node *const base = deref_address(dbgi, from_var->base.type, addr);
- value_node = new_d_Add(dbgi, value_node, base, get_ir_mode_storage(from_type));
+ value_node = new_d_Add(dbgi, value_node, base, mode);
}
if (to_var != NULL) {
ir_node *const addr = create_symconst(dbgi, to_var->v.entity);
&& expression->tp_expression != NULL) {
expression_to_firm(expression->tp_expression);
}
- /* strange gnu extensions: sizeof(function) == 1 */
- if (is_type_function(type)) {
- ir_mode *mode = get_ir_mode_storage(type_size_t);
- return new_Const(get_mode_one(mode));
- }
return get_type_size_node(type);
}
type_qualifiers_t tq = get_type_qualifier(type, true);
if (initializer->kind == INITIALIZER_VALUE) {
- initializer_value_t *initializer_value = &initializer->value;
- dbg_info *dbgi = get_dbg_info(&entity->base.source_position);
- expression_t *value = initializer_value->value;
- type_t *init_type = value->base.type;
- type_t *skipped = skip_typeref(init_type);
+ expression_t * value = initializer->value.value;
+ type_t *const init_type = skip_typeref(value->base.type);
- if (!is_type_scalar(skipped)) {
+ if (!is_type_scalar(init_type)) {
/* skip convs */
while (value->kind == EXPR_UNARY_CAST)
value = value->unary.value;
goto have_initializer;
}
- ir_node *node = expression_to_firm(initializer_value->value);
-
- ir_mode *mode = get_ir_mode_storage(init_type);
+ ir_node * node = expression_to_firm(value);
+ dbg_info *const dbgi = get_dbg_info(&entity->base.source_position);
+ ir_mode *const mode = get_ir_mode_storage(init_type);
node = create_conv(dbgi, node, mode);
node = do_strict_conv(dbgi, node);