OSDN Git Service

* reload.c (find_reloads): Don't narrow scope of RELOAD_OTHER to
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 18 Jun 1998 09:33:39 +0000 (09:33 +0000)
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 18 Jun 1998 09:33:39 +0000 (09:33 +0000)
RELOAD_FOR_INSN.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@20559 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/reload.c

index 31bc065..f0127ad 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 172fa67..a8908a9 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);