aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>2001-06-07 20:17:28 +0000
committerRichard Kenner <kenner@gcc.gnu.org>2001-06-07 16:17:28 -0400
commit28bf9c88431fcfd0e60e77cd1450076b76e0b22b (patch)
tree22ad5015296068755fad1f65e11de68239bb7465
parent47c2a318dd7d75b6a44dc12c2d1f9cbf01069159 (diff)
downloadgcc-28bf9c88431fcfd0e60e77cd1450076b76e0b22b.zip
gcc-28bf9c88431fcfd0e60e77cd1450076b76e0b22b.tar.gz
gcc-28bf9c88431fcfd0e60e77cd1450076b76e0b22b.tar.bz2
global.c (build_insn_chain): Allow ADDR_VEC or ADDR_DIF_VEC after end of last block if...
* 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. From-SVN: r42977
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/global.c10
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1f9ef86..266904d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/global.c b/gcc/global.c
index 2f757bd..4460836 100644
--- a/gcc/global.c
+++ b/gcc/global.c
@@ -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;
}