reload1.c (choose_reload_regs): HARD_FRAME_POINTER_REGNUM is only used as frame point...
authorUlrich Weigand <uweigand@de.ibm.com>
Wed, 10 Apr 2002 17:56:02 +0000 (17:56 +0000)
committerUlrich Weigand <uweigand@gcc.gnu.org>
Wed, 10 Apr 2002 17:56:02 +0000 (17:56 +0000)
* reload1.c (choose_reload_regs): HARD_FRAME_POINTER_REGNUM
is only used as frame pointer when frame_pointer_needed is true.

From-SVN: r52140

gcc/ChangeLog
gcc/reload1.c

index 9b53b5551cf64102775e581be884342f0c6d50d6..dd1a961dcaaa9a135b9d103ae9511460639c6407 100644 (file)
@@ -1,3 +1,8 @@
+2002-04-10  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * reload1.c (choose_reload_regs): HARD_FRAME_POINTER_REGNUM
+       is only used as frame pointer when frame_pointer_needed is true.
+
 2002-04-10  Richard Earnshaw  <rearnsha@arm.com>
 
        PR target/817
index c36799f4381fee3db594815cb6c1d61ec368ed1c..cf807af01e1b5c1cca42c41777513103878ecfcd 100644 (file)
@@ -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;