diff options
author | John Wehle <john@feith.com> | 1999-05-31 08:43:04 +0000 |
---|---|---|
committer | John Wehle <wehle@gcc.gnu.org> | 1999-05-31 08:43:04 +0000 |
commit | e4b8a413b1f92a8b7106b642227f830c58351f86 (patch) | |
tree | 78c2d352fc235963ecbb33a4a29bd39217e6aca8 /gcc/sched.c | |
parent | b2d352ba5a352660e9bee9c31a92c1bce9e3f27f (diff) | |
download | gcc-e4b8a413b1f92a8b7106b642227f830c58351f86.zip gcc-e4b8a413b1f92a8b7106b642227f830c58351f86.tar.gz gcc-e4b8a413b1f92a8b7106b642227f830c58351f86.tar.bz2 |
flow.c (mark_regs_live_at_end, [...]): Only give FRAME_POINTER_REGNUM and HARD_FRAME_POINTER_REGNUM special treatment...
* flow.c (mark_regs_live_at_end, insn_dead_p,
mark_set_1, mark_used_regs): Only give FRAME_POINTER_REGNUM
and HARD_FRAME_POINTER_REGNUM special treatment if reload
hasn't run or the frame pointer is needed.
* haifa-sched.c (attach_deaths): Likewise.
* sched.c (attach_deaths): Likewise.
From-SVN: r27276
Diffstat (limited to 'gcc/sched.c')
-rw-r--r-- | gcc/sched.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/gcc/sched.c b/gcc/sched.c index f4e8939..e8cd070 100644 --- a/gcc/sched.c +++ b/gcc/sched.c @@ -2309,12 +2309,15 @@ attach_deaths (x, insn, set_p) if (regno >= FIRST_PSEUDO_REGISTER || ! global_regs[regno]) { - /* Never add REG_DEAD notes for the FRAME_POINTER_REGNUM or the - STACK_POINTER_REGNUM, since these are always considered to be - live. Similarly for ARG_POINTER_REGNUM if it is fixed. */ - if (regno != FRAME_POINTER_REGNUM + /* Never add REG_DEAD notes for STACK_POINTER_REGNUM + since it's always considered to be live. Similarly + for FRAME_POINTER_REGNUM if a frame pointer is needed + and for ARG_POINTER_REGNUM if it is fixed. */ + if (! (regno == FRAME_POINTER_REGNUM + && (! reload_completed || frame_pointer_needed)) #if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM - && ! (regno == HARD_FRAME_POINTER_REGNUM) + && ! (regno == HARD_FRAME_POINTER_REGNUM + && (! reload_completed || frame_pointer_needed)) #endif #if ARG_POINTER_REGNUM != FRAME_POINTER_REGNUM && ! (regno == ARG_POINTER_REGNUM && fixed_regs[regno]) |