OSDN Git Service

* combine.c (recog_for_combine): Remove the old notes
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 4 Aug 2000 19:16:05 +0000 (19:16 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 4 Aug 2000 19:16:05 +0000 (19:16 +0000)
        prior to attempting to recognize the new pattern.
        (distribute_notes): Ignore REG_NONNEG notes.

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

gcc/ChangeLog
gcc/combine.c

index 0b35e73..7450039 100644 (file)
@@ -1,3 +1,9 @@
+Fri Aug  4 11:43:49 2000  John Wehle  (john@feith.com)
+
+       * combine.c (recog_for_combine): Remove the old notes
+       prior to attempting to recognize the new pattern.
+       (distribute_notes): Ignore REG_NONNEG notes.
+
 2000-08-04  Chandrakala Chavva  <cchavva@redhat.com>
 
        * varasm.c (output_constructor): Add .align 0 for packed vars.
index 9f1c59e..0d43891 100644 (file)
@@ -9569,6 +9569,7 @@ recog_for_combine (pnewpat, insn, pnotes)
   int num_clobbers_to_add = 0;
   int i;
   rtx notes = 0;
+  rtx old_notes;
 
   /* If PAT is a PARALLEL, check to see if it contains the CLOBBER
      we use to indicate that something didn't match.  If we find such a
@@ -9579,6 +9580,10 @@ recog_for_combine (pnewpat, insn, pnotes)
          && XEXP (XVECEXP (pat, 0, i), 0) == const0_rtx)
        return -1;
 
+  /* Remove the old notes prior to trying to recognize the new pattern.  */
+  old_notes = REG_NOTES (insn);
+  REG_NOTES (insn) = 0;
+
   /* Is the result of combination a valid instruction?  */
   insn_code_number = recog (pat, insn, &num_clobbers_to_add);
 
@@ -9608,6 +9613,8 @@ recog_for_combine (pnewpat, insn, pnotes)
       insn_code_number = recog (pat, insn, &num_clobbers_to_add);
     }
 
+  REG_NOTES (insn) = old_notes;
+
   /* If we had any clobbers to add, make a new pattern than contains
      them.  Then check to make sure that all of them are dead.  */
   if (num_clobbers_to_add)
@@ -12079,7 +12086,6 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
 
        case REG_EQUAL:
        case REG_EQUIV:
-       case REG_NONNEG:
        case REG_NOALIAS:
          /* These notes say something about results of an insn.  We can
             only support them if they used to be on I3 in which case they
@@ -12137,9 +12143,12 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
            }
          break;
 
+       case REG_NONNEG:
        case REG_WAS_0:
-         /* It is too much trouble to try to see if this note is still
-            correct in all situations.  It is better to simply delete it.  */
+         /* These notes say something about the value of a register prior
+            to the execution of an insn.  It is too much trouble to see
+            if the note is still correct in all situations.  It is better
+            to simply delete it.  */
          break;
 
        case REG_RETVAL: