diff options
author | Richard Henderson <rth@redhat.com> | 2009-09-16 08:04:06 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2009-09-16 08:04:06 -0700 |
commit | 798763075fa686158fc9b40b2e6b3bc57320dd5a (patch) | |
tree | 00b526e6b0899f2c8935d2bf97966bacb064ecf9 | |
parent | 20faffe76f5c17d2f21a7946be0e19d0f4898b89 (diff) | |
download | gcc-798763075fa686158fc9b40b2e6b3bc57320dd5a.zip gcc-798763075fa686158fc9b40b2e6b3bc57320dd5a.tar.gz gcc-798763075fa686158fc9b40b2e6b3bc57320dd5a.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cfgbuild.c | 12 |
2 files changed, 15 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c8d8846..706f3e2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2009-09-16 Richard Henderson <rth@redhat.com> + + PR middle-end/41360 + * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix. + 2009-09-16 Jakub Jelinek <jakub@redhat.com> * integrate.c (set_block_abstract_flags): Call 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); |