diff options
author | Andreas Krebbel <Andreas.Krebbel@de.ibm.com> | 2009-09-17 07:52:40 +0000 |
---|---|---|
committer | Andreas Krebbel <krebbel@gcc.gnu.org> | 2009-09-17 07:52:40 +0000 |
commit | 10e154dfd7e4e61f1205a364d07ec0789c85bfd3 (patch) | |
tree | 4514b02eb3f66a3122257eb620cf2f322e1a4902 /gcc/cfglayout.c | |
parent | bbc1e3ba53a28e618d2763b19c16c60621148b01 (diff) | |
download | gcc-10e154dfd7e4e61f1205a364d07ec0789c85bfd3.zip gcc-10e154dfd7e4e61f1205a364d07ec0789c85bfd3.tar.gz gcc-10e154dfd7e4e61f1205a364d07ec0789c85bfd3.tar.bz2 |
cfglayout.c (fixup_reorder_chain): Accept conditional jumps without a fallthrough edge.
2009-09-17 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* cfglayout.c (fixup_reorder_chain): Accept conditional jumps
without a fallthrough edge.
2009-09-17 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* gcc.c-torture/compile/20090917-1.c: New testcase.
From-SVN: r151790
Diffstat (limited to 'gcc/cfglayout.c')
-rw-r--r-- | gcc/cfglayout.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/cfglayout.c b/gcc/cfglayout.c index bc8ed8b..d6d1b3a 100644 --- a/gcc/cfglayout.c +++ b/gcc/cfglayout.c @@ -787,6 +787,17 @@ fixup_reorder_chain (void) { if (any_condjump_p (bb_end_insn)) { + /* This might happen if the conditional jump has side + effects and could therefore not be optimized away. + Make the basic block to end with a barrier in order + to prevent rtl_verify_flow_info from complaining. */ + if (!e_fall) + { + gcc_assert (!onlyjump_p (bb_end_insn)); + bb->il.rtl->footer = emit_barrier_after (bb_end_insn); + continue; + } + /* If the old fallthru is still next, nothing to do. */ if (bb->aux == e_fall->dest || e_fall->dest == EXIT_BLOCK_PTR) |