diff options
author | Doug Evans <dje@gnu.org> | 1993-09-24 19:54:46 +0000 |
---|---|---|
committer | Doug Evans <dje@gnu.org> | 1993-09-24 19:54:46 +0000 |
commit | cd0ca9ad6ddec1af5ac76d3c8cee303ce89cbc51 (patch) | |
tree | cc8ddbb9e89cd08480119222653daa5f7d041a66 /gcc/sched.c | |
parent | b3b6c9b3f3dab2f1ae27beeb9ebe5b732411c695 (diff) | |
download | gcc-cd0ca9ad6ddec1af5ac76d3c8cee303ce89cbc51.zip gcc-cd0ca9ad6ddec1af5ac76d3c8cee303ce89cbc51.tar.gz gcc-cd0ca9ad6ddec1af5ac76d3c8cee303ce89cbc51.tar.bz2 |
sched.c: (memrefs_conflict_p): We can work out whether references via...
* sched.c: (memrefs_conflict_p): We can work out whether references
via hard_frame_pointer_rtx are likely to conflict.
(attach_deaths, case REG): Don't add death notes for
HARD_FRAME_POINTER_REGNUM.
From-SVN: r5466
Diffstat (limited to 'gcc/sched.c')
-rw-r--r-- | gcc/sched.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/sched.c b/gcc/sched.c index 2ec48f4..b067d36 100644 --- a/gcc/sched.c +++ b/gcc/sched.c @@ -563,7 +563,8 @@ memrefs_conflict_p (xsize, x, ysize, y, c) return (xsize == 0 || ysize == 0 || (c >= 0 && xsize > c) || (c < 0 && ysize+c > 0)); - if (y == frame_pointer_rtx || y == stack_pointer_rtx) + if (y == frame_pointer_rtx || y == hard_frame_pointer_rtx + || y == stack_pointer_rtx) { rtx t = y; int tsize = ysize; @@ -571,7 +572,8 @@ memrefs_conflict_p (xsize, x, ysize, y, c) x = t; xsize = tsize; } - if (x == frame_pointer_rtx || x == stack_pointer_rtx) + if (x == frame_pointer_rtx || x == hard_frame_pointer_rtx + || x == stack_pointer_rtx) { rtx y1; @@ -2663,6 +2665,9 @@ attach_deaths (x, insn, set_p) 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 +#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM + && ! (regno == HARD_FRAME_POINTER_REGNUM) +#endif #if ARG_POINTER_REGNUM != FRAME_POINTER_REGNUM && ! (regno == ARG_POINTER_REGNUM && fixed_regs[regno]) #endif |