loop.c (loop_insn_first_p): Don't compare LUIDs when P is a note...
authorJ"orn Rennecke <amylaar@cygnus.co.uk>
Wed, 9 Jun 1999 14:09:50 +0000 (14:09 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Wed, 9 Jun 1999 14:09:50 +0000 (15:09 +0100)
* loop.c (loop_insn_first_p): Don't compare LUIDs when P
is a note; use <= for the compare; advance P while it is
a NOTE.

From-SVN: r27454

gcc/ChangeLog
gcc/loop.c

index c0b2113c2eb73a347a7d686212321f6f41b87ec8..eff5e8a917a6364bef330496b2c02e1b183ae2c3 100644 (file)
@@ -1,3 +1,9 @@
+Wed Jun  9 19:44:26 1999  J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * loop.c (loop_insn_first_p): Don't compare LUIDs when P
+       is a note; use <= for the compare; advance P while it is
+       a NOTE.
+
 Wed Jun  9 13:12:24 1999  Jeffrey A Law  (law@cygnus.com)
 
        * varasm.c (remove_from_pending_weak_list): Verify t->name
index fe49027bbc624d6c38772e902760edcde5e96c12..80b22a7b26ee500815a91f983c208bbabc757fa4 100644 (file)
@@ -8199,11 +8199,16 @@ loop_insn_first_p (insn, reference)
       if (p == reference || ! q)
         return 1;
 
+      /* Either of P or Q might be a NOTE.  Notes have the same LUID as the
+         previous insn, hence the <= comparison below does not work if
+        P is a note.  */
       if (INSN_UID (p) < max_uid_for_loop
-         && INSN_UID (q) < max_uid_for_loop)
-       return INSN_LUID (p) < INSN_LUID (q);
+         && INSN_UID (q) < max_uid_for_loop
+         && GET_CODE (p) != NOTE)
+       return INSN_LUID (p) <= INSN_LUID (q);
 
-      if (INSN_UID (p) >= max_uid_for_loop)
+      if (INSN_UID (p) >= max_uid_for_loop
+         || GET_CODE (p) == NOTE)
        p = NEXT_INSN (p);
       if (INSN_UID (q) >= max_uid_for_loop)
        q = NEXT_INSN (q);