haifa-sched.c (schedule_insns): Correctly remove inter-block dependencies after reload.
authorRichard Henderson <rth@cygnus.com>
Tue, 13 Jan 1998 21:38:31 +0000 (13:38 -0800)
committerJeff Law <law@gcc.gnu.org>
Tue, 13 Jan 1998 21:38:31 +0000 (14:38 -0700)
        * haifa-sched.c (schedule_insns): Correctly remove inter-block
        dependencies after reload.

From-SVN: r17346

gcc/ChangeLog
gcc/haifa-sched.c

index 1a27f2f353cac3f485ce74c12fa33e871ee1cef3..1ac803a762185d74f97b184fc051a48df3ed6591 100644 (file)
@@ -1,3 +1,8 @@
+Tue Jan 13 22:39:40 1998  Richard Henderson  (rth@cygnus.com)
+
+       * haifa-sched.c (schedule_insns): Correctly remove inter-block
+       dependencies after reload.
+
 Tue Jan 13 22:22:31 1998 Franz Sirl <franz.sirl-kernel@lauterbach.com>
 
        * rs6000/linux.h (CPP_PREDEFINES): Add -D__ELF__.
index 02350e1941fa197adbdb326157fa7284cad7c6cd..ec66e77a7639e09dbb8356f53c7c6d480dfb71ac 100644 (file)
@@ -8533,16 +8533,23 @@ schedule_insns (dump_file)
       for (b = 0; b < n_basic_blocks; b++)
        for (insn = basic_block_head[b];; insn = NEXT_INSN (insn))
          {
-           rtx link;
+           rtx link, prev;
 
            if (GET_RTX_CLASS (GET_CODE (insn)) == 'i')
              {
-               for (link = LOG_LINKS (insn); link; link = XEXP (link, 1))
+               prev = NULL_RTX;
+               link = LOG_LINKS (insn);
+               while (link)
                  {
                    rtx x = XEXP (link, 0);
 
                    if (INSN_BLOCK (x) != b)
-                     remove_dependence (insn, x);
+                     {
+                       remove_dependence (insn, x);
+                       link = prev ? XEXP (prev, 1) : LOG_LINKS (insn);
+                     }
+                   else
+                     prev = link, link = XEXP (prev, 1);
                  }
              }