diff options
author | Jeffrey A Law <law@cygnus.com> | 1998-10-09 13:28:55 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1998-10-09 07:28:55 -0600 |
commit | 3663a3047f7ec94514d5c76483f1b7e8457934cf (patch) | |
tree | 38ebfe3efc2f94febce92b87abc221e38f62ee5c | |
parent | a9e6be8ed0f3e8767865d51923c84d251dd462ec (diff) | |
download | gcc-3663a3047f7ec94514d5c76483f1b7e8457934cf.zip gcc-3663a3047f7ec94514d5c76483f1b7e8457934cf.tar.gz gcc-3663a3047f7ec94514d5c76483f1b7e8457934cf.tar.bz2 |
global.c (build_insn_chain): Verify no real insns exist past the end of the last basic block, then exit the loop.
* global.c (build_insn_chain): Verify no real insns exist past the
end of the last basic block, then exit the loop.
From-SVN: r22961
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/global.c | 14 |
2 files changed, 19 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 57bf533..436cd1d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Fri Oct 9 14:26:44 1998 Jeffrey A Law (law@cygnus.com) + + * global.c (build_insn_chain): Verify no real insns exist past the + end of the last basic block, then exit the loop. + Fri Oct 9 11:44:47 1998 David Edelsohn <edelsohn@mhpcc.edu> * loop.c (insert_bct): Ensure loop_iteration_var non-zero before use. diff --git a/gcc/global.c b/gcc/global.c index 0bacc23..af27ea0 100644 --- a/gcc/global.c +++ b/gcc/global.c @@ -1722,6 +1722,20 @@ build_insn_chain (first) if (first == basic_block_end[b]) b++; + + /* Stop after we pass the end of the last basic block. Verify that + 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. */ + if (b == n_basic_blocks) + { + for (first = NEXT_INSN (first) ; first; first = NEXT_INSN (first)) + if (GET_RTX_CLASS (GET_CODE (first)) == 'i' + && GET_CODE (PATTERN (first)) != USE) + abort (); + break; + } } FREE_REG_SET (live_relevant_regs); *p = 0; |