OSDN Git Service

* ifcvt.c (dead_or_predicable): Manually squeeze non-movable notes
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 30 Apr 2000 18:41:37 +0000 (18:41 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 30 Apr 2000 18:41:37 +0000 (18:41 +0000)
        from the last insn in the sequence.

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

gcc/ChangeLog
gcc/ifcvt.c

index 29912df..6d9e026 100644 (file)
@@ -1,3 +1,8 @@
+2000-04-30  Richard Henderson  <rth@cygnus.com>
+
+       * ifcvt.c (dead_or_predicable): Manually squeeze non-movable notes
+       from the last insn in the sequence.
+
 2000-04-30  Zack Weinberg  <zack@wolery.cumb.org>
 
        * cpplex.c (cpp_idcmp): New function.
index 33c1918..b831b3e 100644 (file)
@@ -1927,6 +1927,19 @@ dead_or_predicable (test_bb, merge_bb, other_bb, new_dest, reversep)
   if (head != NULL)
     {
       head = squeeze_notes (head, end);
+      if (GET_CODE (end) == NOTE
+         && (NOTE_LINE_NUMBER (end) == NOTE_INSN_BLOCK_END
+              || NOTE_LINE_NUMBER (end) == NOTE_INSN_BLOCK_BEG
+              || NOTE_LINE_NUMBER (end) == NOTE_INSN_LOOP_BEG
+              || NOTE_LINE_NUMBER (end) == NOTE_INSN_LOOP_END
+              || NOTE_LINE_NUMBER (end) == NOTE_INSN_LOOP_CONT
+              || NOTE_LINE_NUMBER (end) == NOTE_INSN_LOOP_VTOP))
+       {
+         if (head == end)
+           return TRUE;
+         end = PREV_INSN (end);
+       }
+
       reorder_insns (head, end, PREV_INSN (earliest));
     }
   return TRUE;