From: Jason Eckhardt Date: Tue, 14 Mar 2000 21:21:18 +0000 (+0000) Subject: flow.c (reorder_basic_blocks): Account for barriers when writing over NEXT_INSN ... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0edd203b8dcf9b32999e9c61603ae406158e260a;p=gcc.git flow.c (reorder_basic_blocks): Account for barriers when writing over NEXT_INSN (last_bb->end). * flow.c (reorder_basic_blocks): Account for barriers when writing over NEXT_INSN (last_bb->end). (verify_flow_info): Add check for missing barriers. From-SVN: r32545 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c139e27b188..8c5ac0b6114 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ + +2000-03-14 Jason Eckhardt + * flow.c (reorder_basic_blocks): Account for barriers when writing + over NEXT_INSN (last_bb->end). + (verify_flow_info): Add check for missing barriers. + 2000-03-14 Greg McGary * c-lex.h (enum rid): Add RID_BOUNDED & RID_UNBOUNDED. diff --git a/gcc/flow.c b/gcc/flow.c index 26c1a6faa0d..fe221cae631 100644 --- a/gcc/flow.c +++ b/gcc/flow.c @@ -5785,6 +5785,7 @@ set_block_num (insn, bb) and NOTE_INSN_BASIC_BLOCK - check that all insns are in the basic blocks (except the switch handling code, barriers and notes) + - check that all returns are followed by barriers In future it can be extended check a lot of other stuff as well (reachability of basic blocks, life information, etc. etc.). */ @@ -5988,6 +5989,12 @@ verify_flow_info () } } + if (GET_RTX_CLASS (GET_CODE (x)) == 'i' + && GET_CODE (x) == JUMP_INSN + && returnjump_p (x) + && ! (NEXT_INSN (x) && GET_CODE (NEXT_INSN (x)) == BARRIER)) + fatal_insn ("Return not followed by barrier", x); + x = NEXT_INSN (x); } @@ -7758,8 +7765,19 @@ reorder_basic_blocks () BASIC_BLOCK (j) = tempbb; } } - - NEXT_INSN (BASIC_BLOCK (n_basic_blocks - 1)->end) = last_insn; + + { + rtx xafter = skip_insns_between_block (BASIC_BLOCK (n_basic_blocks - 1), + REORDER_SKIP_AFTER); + if (xafter) + NEXT_INSN (xafter) = last_insn; + else + abort(); + } + +#ifdef ENABLE_CHECKING + verify_flow_info (); +#endif for (i = 0; i < n_basic_blocks - 1; i++) {