emit-rtl.c (gen_rtx_REG): After reload...
authorLars Brinkhoff <lars@nocrew.org>
Thu, 8 Aug 2002 17:17:09 +0000 (17:17 +0000)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 8 Aug 2002 17:17:09 +0000 (10:17 -0700)
        * emit-rtl.c (gen_rtx_REG): After reload, only return
        frame_pointer_rtx or hard_frame_pointer_rtx if frame_pointer_needed.

Co-Authored-By: Richard Henderson <rth@redhat.com>
From-SVN: r56133

gcc/ChangeLog
gcc/emit-rtl.c

index f79f8b132d3935b04bc6d8636bdbadb05ac4c07d..3c578c278b29229ff89f99e3bb2f865ce6b8b1de 100644 (file)
@@ -1,3 +1,9 @@
+2002-08-08  Lars Brinkhoff  <lars@nocrew.org>
+           Richard Henderson  <rth@redhat.com>
+
+       * emit-rtl.c (gen_rtx_REG): After reload, only return
+       frame_pointer_rtx or hard_frame_pointer_rtx if frame_pointer_needed.
+
 2002-08-08  Jakub Jelinek  <jakub@redhat.com>
 
        * config/rs6000/rs6000-protos.h (rs6000_field_alignment): Remove.
index 26032c16d356056f12355bfe3e6d573dec131b5c..d8689243e98de01fbbc724f7769452f9f506aaf3 100644 (file)
@@ -514,10 +514,12 @@ gen_rtx_REG (mode, regno)
 
   if (mode == Pmode && !reload_in_progress)
     {
-      if (regno == FRAME_POINTER_REGNUM)
+      if (regno == FRAME_POINTER_REGNUM
+         && (!reload_completed || frame_pointer_needed))
        return frame_pointer_rtx;
 #if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
-      if (regno == HARD_FRAME_POINTER_REGNUM)
+      if (regno == HARD_FRAME_POINTER_REGNUM
+         && (!reload_completed || frame_pointer_needed))
        return hard_frame_pointer_rtx;
 #endif
 #if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM && HARD_FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
@@ -542,7 +544,11 @@ gen_rtx_REG (mode, regno)
      This code is disabled for now until we can fix the various backends
      which depend on having non-shared hard registers in some cases.   Long
      term we want to re-enable this code as it can significantly cut down
-     on the amount of useless RTL that gets generated.  */
+     on the amount of useless RTL that gets generated.
+
+     We'll also need to fix some code that runs after reload that wants to
+     set ORIGINAL_REGNO.  */
+
   if (cfun
       && cfun->emit
       && regno_reg_rtx