create sub esp, imm instead off add esp -imm instructions
[libfirm] / ir / be / beabi.c
index f45b0b8..1466e21 100644 (file)
@@ -536,7 +536,7 @@ static ir_node *adjust_call(be_abi_irg_t *env, ir_node *irn, ir_node *curr_sp)
                                        unspeakable Proj_T from the Call. Therefore, all real argument
                                        Proj numbers must be increased by pn_Call_max
                                */
-                               proj += pn_Call_max;
+                               proj += pn_Call_max;
                                set_Proj_proj(res, proj);
                                obstack_ptr_grow(obst, res);
 
@@ -565,9 +565,11 @@ static ir_node *adjust_call(be_abi_irg_t *env, ir_node *irn, ir_node *curr_sp)
                be_Call_set_entity(low_call, get_SymConst_entity(call_ptr));
        }
 
-       else
+  else
                low_call = be_new_Call(irg, bl, curr_mem, curr_sp, call_ptr, curr_res_proj + pset_count(caller_save), n_low_args, in);
 
+  set_irn_dbg_info(low_call, get_irn_dbg_info(irn));
+
        /*
                TODO:
                Set the register class of the call address to the same as the stack pointer's.
@@ -1037,7 +1039,7 @@ static reg_node_map_t *reg_map_to_arr(struct obstack *obst, pmap *reg_map)
 static void create_barrier(be_abi_irg_t *env, ir_node *bl, ir_node **mem, pmap *regs, int in_req)
 {
        ir_graph *irg = env->birg->irg;
-       int i, n;
+       int n;
        int n_regs = pmap_count(regs);
        ir_node *irn;
        ir_node **in;
@@ -1045,8 +1047,8 @@ static void create_barrier(be_abi_irg_t *env, ir_node *bl, ir_node **mem, pmap *
 
        rm = reg_map_to_arr(&env->obst, regs);
 
-       for(i = 0, n = 0; i < n_regs; ++i, ++n)
-               obstack_ptr_grow(&env->obst, rm[i].irn);
+       for(n = 0; n < n_regs; ++n)
+               obstack_ptr_grow(&env->obst, rm[n].irn);
 
        if(mem) {
                obstack_ptr_grow(&env->obst, *mem);
@@ -1062,7 +1064,7 @@ static void create_barrier(be_abi_irg_t *env, ir_node *bl, ir_node **mem, pmap *
                ir_node *proj;
                const arch_register_t *reg = rm[n].reg;
 
-               proj = new_r_Proj(env->birg->irg, bl, irn, get_irn_mode(rm[i].irn), n);
+               proj = new_r_Proj(env->birg->irg, bl, irn, get_irn_mode(rm[n].irn), n);
                be_node_set_reg_class(irn, n, reg->reg_class);
                if(in_req)
                        be_set_constr_single_reg(irn, n, reg);
@@ -1349,6 +1351,7 @@ static void modify_irg(be_abi_irg_t *env)
                }
        }
 
+       del_pset(dont_save);
        obstack_free(&env->obst, args);
 }