reload.c (find_reloads): Don't narrow scope of RELOAD_OTHER to RELOAD_FOR_INSN.
authorJ"orn Rennecke <amylaar@cygnus.co.uk>
Thu, 18 Jun 1998 09:33:39 +0000 (09:33 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Thu, 18 Jun 1998 09:33:39 +0000 (10:33 +0100)
* reload.c (find_reloads): Don't narrow scope of RELOAD_OTHER to
RELOAD_FOR_INSN.

From-SVN: r20559

gcc/ChangeLog
gcc/reload.c

index 31bc065021af513a88010fc4411de6b84f7da125..f0127adfeb927573c56b48a44882388b7d4cd940 100644 (file)
@@ -1,3 +1,8 @@
+Thu Jun 18 17:30:39 1998  J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * reload.c (find_reloads): Don't narrow scope of RELOAD_OTHER to
+       RELOAD_FOR_INSN.
+
 Thu Jun 18 09:36:50 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * Makefile.in (c-lang.o): Depend on output.h.
index 172fa67340eb5111d08d954edebce1762e5eb19c..a8908a99ef753d8ff61ed389c238c505a9adadff 100644 (file)
@@ -3574,11 +3574,13 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
         a SCRATCH).  In this case, we only need have the reload live 
         through the insn itself, but not for any of our input or output
         reloads. 
+        But we must not accidentally narrow the scope of an existing
+        RELOAD_OTHER reload - leave these alone.
 
         In any case, anything needed to address this operand can remain
         however they were previously categorized.  */
 
-      if (goal_alternative_earlyclobber[i])
+      if (goal_alternative_earlyclobber[i] && operand_type[i] != RELOAD_OTHER)
        operand_type[i]
          = (find_reg_note (insn, REG_UNUSED, recog_operand[i])
             ? RELOAD_FOR_INSN : RELOAD_OTHER);