re PR target/18329 (mmix-knuth-mmixware testsuite failure: execute/920501-7.c, execut...
authorHans-Peter Nilsson <hp@bitrange.com>
Thu, 13 Jan 2005 01:18:58 +0000 (01:18 +0000)
committerHans-Peter Nilsson <hp@gcc.gnu.org>
Thu, 13 Jan 2005 01:18:58 +0000 (01:18 +0000)
PR target/18329
PR target/18330
* reload1.c (delete_output_reload): Don't delete an output reload
if the pseudo lives longer than a single basic block.  Adjust and
improve wording of comment.

From-SVN: r93250

gcc/ChangeLog
gcc/reload1.c

index b612dafd8ef12392b7203d775d96671bd5b3dd3c..d0846592770cc0986bc640251a7881310d2eebb6 100644 (file)
@@ -1,3 +1,11 @@
+2005-01-13  Hans-Peter Nilsson  <hp@bitrange.com>
+
+       PR target/18329
+       PR target/18330
+       * reload1.c (delete_output_reload): Don't delete an output reload
+       if the pseudo lives longer than a single basic block.  Adjust and
+       improve wording of comment.
+
 2005-01-12  Andrew Pinski  <pinskia@physics.uc.edu>
 
        PR target/19334
index 64020507aa6c950cac94e574c038d976b8273388..71c1afadd54c66850b1386b19d61aa33f4433362 100644 (file)
@@ -7624,13 +7624,13 @@ delete_output_reload (rtx insn, int j, int last_reload_reg)
 
   /* If the pseudo-reg we are reloading is no longer referenced
      anywhere between the store into it and here,
-     and no jumps or labels intervene, then the value can get
-     here through the reload reg alone.
+     and we're within the same basic block, then the value can only
+     pass through the reload reg and end up here.
      Otherwise, give up--return.  */
   for (i1 = NEXT_INSN (output_reload_insn);
        i1 != insn; i1 = NEXT_INSN (i1))
     {
-      if (LABEL_P (i1) || JUMP_P (i1))
+      if (NOTE_INSN_BASIC_BLOCK_P (i1))
        return;
       if ((NONJUMP_INSN_P (i1) || CALL_P (i1))
          && reg_mentioned_p (reg, PATTERN (i1)))