From 0ca4f243d76173f60f9965bf5fb4e7a20f04a718 Mon Sep 17 00:00:00 2001
From: Richard Henderson <rth@cygnus.com>
Date: Sun, 30 Apr 2000 11:41:37 -0700
Subject: [PATCH] ifcvt.c (dead_or_predicable): Manually squeeze non-movable
 notes from the last insn in the sequence.

        * ifcvt.c (dead_or_predicable): Manually squeeze non-movable notes
        from the last insn in the sequence.

From-SVN: r33555
---
 gcc/ChangeLog |  5 +++++
 gcc/ifcvt.c   | 13 +++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 29912dfa830..6d9e0266c4e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c
index 33c19183132..b831b3e14d2 100644
--- a/gcc/ifcvt.c
+++ b/gcc/ifcvt.c
@@ -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;