X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=ast2firm.c;h=75b674c7824142952b4dde66fe71dbac02c67e6e;hb=23ebb996cbe0f5d2c74184d1cfb783cb2a529a13;hp=bcd470b89fe70597c9d8d3eba93302190af5d5e5;hpb=748763449ab2381619083a2b4776531b8a559b1a;p=cparser diff --git a/ast2firm.c b/ast2firm.c index bcd470b..75b674c 100644 --- a/ast2firm.c +++ b/ast2firm.c @@ -1862,9 +1862,9 @@ static ir_node *call_expression_to_firm(const call_expression_t *const call) 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; @@ -2385,7 +2385,7 @@ static ir_node *create_cast(dbg_info *dbgi, ir_node *value_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); @@ -2915,11 +2915,6 @@ static ir_node *sizeof_to_firm(const typeprop_expression_t *expression) && 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); } @@ -4281,13 +4276,10 @@ static void create_variable_initializer(entity_t *entity) 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; @@ -4298,9 +4290,9 @@ static void create_variable_initializer(entity_t *entity) 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);