From df75a3eefb7701a3e44b4d5718da95fb250512b8 Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Mon, 22 Sep 2008 08:22:30 +0000 Subject: [PATCH] ia32_Leave does not need esp as input operand, it only overwrites it. [r22164] --- ir/be/ia32/bearch_ia32.c | 2 +- ir/be/ia32/ia32_spec.pl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ir/be/ia32/bearch_ia32.c b/ir/be/ia32/bearch_ia32.c index ee63efefd..381b91c06 100644 --- a/ir/be/ia32/bearch_ia32.c +++ b/ir/be/ia32/bearch_ia32.c @@ -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); diff --git a/ir/be/ia32/ia32_spec.pl b/ir/be/ia32/ia32_spec.pl index cd3be7a80..08ec1c84d 100644 --- a/ir/be/ia32/ia32_spec.pl +++ b/ir/be/ia32/ia32_spec.pl @@ -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, -- 2.20.1