OSDN Git Service

* global.c (build_insn_chain): Allow ADDR_VEC or ADDR_DIF_VEC after
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 7 Jun 2001 20:17:28 +0000 (20:17 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 7 Jun 2001 20:17:28 +0000 (20:17 +0000)
end of last block if last real insn is a JUMP_INSN.

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

gcc/ChangeLog
gcc/global.c

index 1f9ef86..266904d 100644 (file)
@@ -1,3 +1,8 @@
+Thu Jun  7 16:17:40 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * global.c (build_insn_chain): Allow ADDR_VEC or ADDR_DIF_VEC after
+       end of last block if last real insn is a JUMP_INSN.
+
 2001-06-07  Joseph S. Myers  <jsm28@cam.ac.uk>
 
        * NEWS: Regenerate.
index 2f757bd..4460836 100644 (file)
@@ -1851,11 +1851,17 @@ build_insn_chain (first)
         no real insns are after the end of the last basic block.
 
         We may want to reorganize the loop somewhat since this test should
-        always be the right exit test.  */
+        always be the right exit test.  Allow an ADDR_VEC or ADDR_DIF_VEC if
+        the previous real insn is a JUMP_INSN.  */
       if (b == n_basic_blocks)
        {
          for (first = NEXT_INSN (first) ; first; first = NEXT_INSN (first))
-           if (INSN_P (first) && GET_CODE (PATTERN (first)) != USE)
+           if (INSN_P (first)
+               && GET_CODE (PATTERN (first)) != USE
+               && ! ((GET_CODE (PATTERN (first)) == ADDR_VEC
+                      || GET_CODE (PATTERN (first)) == ADDR_DIFF_VEC)
+                     && prev_real_insn (first) != 0
+                     && GET_CODE (prev_real_insn (first)) == JUMP_INSN))
              abort ();
          break;
        }