ia32_Leave does not need esp as input operand, it only overwrites it.
authorChristoph Mallon <christoph.mallon@gmx.de>
Mon, 22 Sep 2008 08:22:30 +0000 (08:22 +0000)
committerChristoph Mallon <christoph.mallon@gmx.de>
Mon, 22 Sep 2008 08:22:30 +0000 (08:22 +0000)
[r22164]

ir/be/ia32/bearch_ia32.c
ir/be/ia32/ia32_spec.pl

index ee63efe..381b91c 100644 (file)
@@ -497,7 +497,7 @@ static void ia32_abi_epilogue(void *self, ir_node *bl, ir_node **mem, pmap *reg_
                        ir_node *leave;
 
                        /* leave */
-                       leave   = new_rd_ia32_Leave(NULL, irg, bl, curr_sp, curr_bp);
+                       leave   = new_rd_ia32_Leave(NULL, irg, bl, curr_bp);
                        set_ia32_flags(leave, arch_irn_flags_ignore);
                        curr_bp = new_r_Proj(irg, bl, leave, mode_bp, pn_ia32_Leave_frame);
                        curr_sp = new_r_Proj(irg, bl, leave, get_irn_mode(curr_sp), pn_ia32_Leave_stack);
index cd3be7a..08ec1c8 100644 (file)
@@ -1400,7 +1400,7 @@ Enter => {
 },
 
 Leave => {
-       reg_req   => { in => [ "esp", "ebp" ], out => [ "ebp", "esp" ] },
+       reg_req   => { in => [ "ebp" ], out => [ "ebp", "esp" ] },
        emit      => '. leave',
        outs      => [ "frame:I", "stack:I|S" ],
        latency   => 3,