(emit_reload_insns): Don't update the status of a register from an
authorRichard Kenner <kenner@gcc.gnu.org>
Sat, 3 Apr 1993 22:39:33 +0000 (17:39 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Sat, 3 Apr 1993 22:39:33 +0000 (17:39 -0500)
input reload if it also has an output reload.

From-SVN: r3994

gcc/reload1.c

index e6302c211cd45f7aac8459ce78afc07d208c2012..bcbd68f5916b5395ce57b3bf9c1e35b6b1939651 100644 (file)
@@ -6148,11 +6148,15 @@ emit_reload_insns (insn)
                }
            }
 
-         /* Maybe the spill reg contains a copy of reload_in.  */
+         /* Maybe the spill reg contains a copy of reload_in.  Only do
+            something if there will not be an output reload for
+            the register being reloaded.  */
          else if (reload_out[r] == 0
                   && reload_in[r] != 0
-                  && (GET_CODE (reload_in[r]) == REG
-                      || GET_CODE (reload_in_reg[r]) == REG))
+                  && ((GET_CODE (reload_in[r]) == REG
+                       && ! reg_has_output_reload[REGNO (reload_in[r])]
+                      || (GET_CODE (reload_in_reg[r]) == REG
+                          && ! reg_has_output_reload[REGNO (reload_in_reg[r])]))))
            {
              register int nregno;
              int nnr;