summaryrefslogtreecommitdiff
path: root/gcc/cfglayout.c
diff options
context:
space:
mode:
authorAndreas Krebbel <Andreas.Krebbel@de.ibm.com>2009-09-17 07:52:40 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2009-09-17 07:52:40 +0000
commit10e154dfd7e4e61f1205a364d07ec0789c85bfd3 (patch)
tree4514b02eb3f66a3122257eb620cf2f322e1a4902 /gcc/cfglayout.c
parentbbc1e3ba53a28e618d2763b19c16c60621148b01 (diff)
downloadgcc-10e154dfd7e4e61f1205a364d07ec0789c85bfd3.tar.gz
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.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/cfglayout.c b/gcc/cfglayout.c
index bc8ed8b7f32..d6d1b3ab697 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)