summaryrefslogtreecommitdiff
path: root/gcc/sched.c
diff options
context:
space:
mode:
authorwehle <wehle@138bc75d-0d04-0410-961f-82ee72b054a4>1999-05-31 08:43:04 +0000
committerwehle <wehle@138bc75d-0d04-0410-961f-82ee72b054a4>1999-05-31 08:43:04 +0000
commit596624f8f738d3dca99c02e7395bd2afa4e4fcd0 (patch)
tree78c2d352fc235963ecbb33a4a29bd39217e6aca8 /gcc/sched.c
parent563ce9c45b030dfffe6b12295d46b10c349ef3a5 (diff)
downloadgcc-596624f8f738d3dca99c02e7395bd2afa4e4fcd0.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27276 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/sched.c')
-rw-r--r--gcc/sched.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/gcc/sched.c b/gcc/sched.c
index f4e893987a2..e8cd070e45c 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])