From 3663a3047f7ec94514d5c76483f1b7e8457934cf Mon Sep 17 00:00:00 2001 From: Jeffrey A Law Date: Fri, 9 Oct 1998 13:28:55 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/global.c | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 57bf533207d..436cd1d33a2 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 * loop.c (insert_bct): Ensure loop_iteration_var non-zero before use. diff --git a/gcc/global.c b/gcc/global.c index 0bacc238172..af27ea0dc84 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; -- 2.30.2