From 798763075fa686158fc9b40b2e6b3bc57320dd5a Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 16 Sep 2009 08:04:06 -0700 Subject: re PR middle-end/41360 (Revision 151696 breaks gcc.c-torture/compile/builtin_unreachable-1.c) PR middle-end/41360 * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix. From-SVN: r151759 --- gcc/cfgbuild.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'gcc/cfgbuild.c') diff --git a/gcc/cfgbuild.c b/gcc/cfgbuild.c index b5ddadd..5744108 100644 --- a/gcc/cfgbuild.c +++ b/gcc/cfgbuild.c @@ -477,9 +477,17 @@ find_bb_boundaries (basic_block bb) if (code == CODE_LABEL && LABEL_ALT_ENTRY_P (insn)) make_edge (ENTRY_BLOCK_PTR, bb, 0); } - - if (control_flow_insn_p (insn)) + else if (code == BARRIER) + { + /* __builtin_unreachable () may cause a barrier to be emitted in + the middle of a BB. We need to split it in the same manner as + if the barrier were preceded by a control_flow_insn_p insn. */ + if (!flow_transfer_insn) + flow_transfer_insn = prev_nonnote_insn_bb (insn); + } + else if (control_flow_insn_p (insn)) flow_transfer_insn = insn; + if (insn == end) break; insn = NEXT_INSN (insn); -- cgit v1.1