reload1.c (delete_output_reload_insn): If a pseudo is set multiple times, then it...
authorJeffrey A Law <law@cygnus.com>
Mon, 9 Nov 1998 02:12:55 +0000 (02:12 +0000)
committerJeff Law <law@gcc.gnu.org>
Mon, 9 Nov 1998 02:12:55 +0000 (19:12 -0700)
* reload1.c (delete_output_reload_insn): If a pseudo is set multiple
times, then it can not be completely replaced.
Fixes mis-compilation of wave5 in spec92.

From-SVN: r23581

gcc/ChangeLog
gcc/reload1.c

index 1ff5cc471bef98c819419c97009d37f0ab3b67ce..3d404514883c07d1231dbe95dfd5804065393c67 100644 (file)
@@ -1,3 +1,8 @@
+Mon Nov  9 03:06:24 1998  Jeffrey A Law  (law@cygnus.com)
+
+       * reload1.c (delete_output_reload_insn): If a pseudo is set multiple
+       times, then it can not be completely replaced.
+
 Mon Nov  9 00:39:02 1998  Richard Henderson  <rth@cygnus.com>
 
        * alpha.md (call, call_value) [OSF]: Correct alt 3 insn length.
index 0d587ae4040d26fd681b15ceb2af753a693c91bd..ea8bc1fc97d07ac515f715af809e357ed5441019 100644 (file)
@@ -7931,6 +7931,7 @@ delete_output_reload (insn, j, last_reload_reg)
      and forget we had a stack slot for the pseudo.  */
   if (reload_out[j] != reload_in[j]
       && REG_N_DEATHS (REGNO (reg)) == 1
+      && REG_N_SETS (REGNO (reg)) == 1
       && REG_BASIC_BLOCK (REGNO (reg)) >= 0
       && find_regno_note (insn, REG_DEAD, REGNO (reg)))
     {