final.c (final_scan_insn): Revert part of 2005-03-30 patch...
authorIan Lance Taylor <ian@airs.com>
Fri, 1 Apr 2005 15:27:58 +0000 (15:27 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Fri, 1 Apr 2005 15:27:58 +0000 (15:27 +0000)
* final.c (final_scan_insn): Revert part of 2005-03-30 patch: when
doing a peephole optimization, once again put any notes in the
proper position.

From-SVN: r97399

gcc/ChangeLog
gcc/final.c

index 56a28793ffe63883cfa3d25e5d3af50dcb9d19be..02d6e23b62f14e581f5e94faefddbe52b398daa0 100644 (file)
@@ -1,3 +1,9 @@
+2005-04-01  Ian Lance Taylor  <ian@airs.com>
+
+       * final.c (final_scan_insn): Revert part of 2005-03-30 patch: when
+       doing a peephole optimization, once again put any notes in the
+       proper position.
+
 2005-04-01  Kazu Hirata  <kazu@cs.umass.edu>
 
        * bb-reorder.c, fold-const.c, varasm.c: Fix comment typos.
index 76337244e4ac6238396ca7e276493f7f73ace942..ea842550cfbfca6af65cb871119ca6484c6d1938 100644 (file)
@@ -2306,11 +2306,23 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED,
               emit them before the peephole.  */
            if (next != 0 && next != NEXT_INSN (insn))
              {
-               rtx note;
+               rtx note, prev = PREV_INSN (insn);
 
                for (note = NEXT_INSN (insn); note != next;
                     note = NEXT_INSN (note))
                  final_scan_insn (note, file, optimize, nopeepholes, seen);
+
+               /* Put the notes in the proper position for a later
+                  rescan.  For example, the SH target can do this
+                  when generating a far jump in a delayed branch
+                  sequence.  */
+               note = NEXT_INSN (insn);
+               PREV_INSN (note) = prev;
+               NEXT_INSN (prev) = note;
+               NEXT_INSN (PREV_INSN (next)) = insn;
+               PREV_INSN (insn) = PREV_INSN (next);
+               NEXT_INSN (insn) = next;
+               PREV_INSN (next) = insn;
              }
 
            /* PEEPHOLE might have changed this.  */