Do not return an error statement, if a goto misses its label argument, but create...
[cparser] / ast2firm.c
index 4b7bbde..75b674c 100644 (file)
@@ -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);
@@ -4276,7 +4276,6 @@ static void create_variable_initializer(entity_t *entity)
        type_qualifiers_t  tq   = get_type_qualifier(type, true);
 
        if (initializer->kind == INITIALIZER_VALUE) {
-               dbg_info     *const dbgi      = get_dbg_info(&entity->base.source_position);
                expression_t *      value     = initializer->value.value;
                type_t       *const init_type = skip_typeref(value->base.type);
 
@@ -4291,9 +4290,9 @@ static void create_variable_initializer(entity_t *entity)
                        goto have_initializer;
                }
 
-               ir_node *node = expression_to_firm(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);