we still need an esp keep for allocas
authorMatthias Braun <matze@braunis.de>
Tue, 2 Oct 2007 18:34:23 +0000 (18:34 +0000)
committerMatthias Braun <matze@braunis.de>
Tue, 2 Oct 2007 18:34:23 +0000 (18:34 +0000)
[r16037]

ir/be/beabi.c

index a7e3ce1..0547a0c 100644 (file)
@@ -1150,7 +1150,8 @@ static void process_calls_in_block(ir_node *bl, void *data)
 
                /* Keep the last stack state in the block by tying it to Keep node,
                 * the proj from calls is already kept */
 
                /* Keep the last stack state in the block by tying it to Keep node,
                 * the proj from calls is already kept */
-               if(curr_sp != env->init_sp && !is_Proj(curr_sp)) {
+               if(curr_sp != env->init_sp
+                               && !(is_Proj(curr_sp) && be_is_Call(get_Proj_pred(curr_sp)))) {
                        nodes[0] = curr_sp;
                        keep     = be_new_Keep(env->isa->sp->reg_class, get_irn_irg(bl),
                                               bl, 1, nodes);
                        nodes[0] = curr_sp;
                        keep     = be_new_Keep(env->isa->sp->reg_class, get_irn_irg(bl),
                                               bl, 1, nodes);