The memory output for asm nodes uses proj N, not N+1.
[cparser] / ast2firm.c
index 4156376..00f7497 100644 (file)
@@ -5475,7 +5475,7 @@ static void asm_statement_to_firm(const asm_statement_t *statement)
 
        /* create output projs & connect them */
        if (needs_memory) {
-               ir_node *projm = new_Proj(node, mode_M, out_size+1);
+               ir_node *projm = new_Proj(node, mode_M, out_size);
                set_store(projm);
        }
 
@@ -5643,13 +5643,12 @@ static void initialize_function_parameters(entity_t *entity)
        assert(entity->kind == ENTITY_FUNCTION);
        ir_graph *irg             = current_ir_graph;
        ir_node  *args            = get_irg_args(irg);
-       ir_node  *start_block     = get_irg_start_block(irg);
        ir_type  *function_irtype = get_ir_type(entity->declaration.type);
        int      first_param_nr   = 0;
 
        if (entity->function.need_closure) {
                /* add an extra parameter for the static link */
-               entity->function.static_link = new_r_Proj(start_block, args, mode_P_data, 0);
+               entity->function.static_link = new_r_Proj(args, mode_P_data, 0);
                ++first_param_nr;
        }
 
@@ -5683,7 +5682,7 @@ static void initialize_function_parameters(entity_t *entity)
                ir_mode *param_mode   = get_type_mode(param_irtype);
 
                long     pn    = n + first_param_nr;
-               ir_node *value = new_r_Proj(start_block, args, param_mode, pn);
+               ir_node *value = new_r_Proj(args, param_mode, pn);
 
                ir_mode *mode = get_ir_mode_storage(type);
                value = create_conv(NULL, value, mode);