aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload1.c
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2002-04-10 17:56:02 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2002-04-10 17:56:02 +0000
commit2f460a0a57bb984d7159f7d40f4cf8724da907ca (patch)
tree6554b57f5818e4bb7dc50d8933ac6ec89e8552d1 /gcc/reload1.c
parent6127eac4bdeb3bdd7c03831880a64b3b4a3be34e (diff)
downloadgcc-2f460a0a57bb984d7159f7d40f4cf8724da907ca.zip
gcc-2f460a0a57bb984d7159f7d40f4cf8724da907ca.tar.gz
gcc-2f460a0a57bb984d7159f7d40f4cf8724da907ca.tar.bz2
reload1.c (choose_reload_regs): HARD_FRAME_POINTER_REGNUM is only used as frame pointer when...
* reload1.c (choose_reload_regs): HARD_FRAME_POINTER_REGNUM is only used as frame pointer when frame_pointer_needed is true. From-SVN: r52140
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r--gcc/reload1.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index c36799f..cf807af 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -5565,6 +5565,7 @@ choose_reload_regs (chain)
&& ! TEST_HARD_REG_BIT (reg_reloaded_dead, i))
/* Don't clobber the frame pointer. */
|| (i == HARD_FRAME_POINTER_REGNUM
+ && frame_pointer_needed
&& rld[r].out)
/* Don't really use the inherited spill reg
if we need it wider than we've got it. */
@@ -5735,7 +5736,9 @@ choose_reload_regs (chain)
/* If we found an equivalent reg, say no code need be generated
to load it, and use it as our reload reg. */
- if (equiv != 0 && regno != HARD_FRAME_POINTER_REGNUM)
+ if (equiv != 0
+ && (regno != HARD_FRAME_POINTER_REGNUM
+ || !frame_pointer_needed))
{
int nr = HARD_REGNO_NREGS (regno, rld[r].mode);
int k;