From: Zdenek Dvorak Date: Fri, 20 Jul 2007 01:32:47 +0000 (+0200) Subject: function.c (thread_prologue_and_epilogue_insns): Fix exit predecessor fallthru flags. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=30a873c3f3697132e95b32ba1cf261e93f27045b;p=gcc.git function.c (thread_prologue_and_epilogue_insns): Fix exit predecessor fallthru flags. * function.c (thread_prologue_and_epilogue_insns): Fix exit predecessor fallthru flags. From-SVN: r126797 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4a999b0281d..902c61d6659 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2007-07-20 Zdenek Dvorak + + * function.c (thread_prologue_and_epilogue_insns): Fix exit + predecessor fallthru flags. + 2007-07-20 Zdenek Dvorak * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands diff --git a/gcc/function.c b/gcc/function.c index c69e18b61f1..68a3f7e0a43 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -5256,7 +5256,18 @@ thread_prologue_and_epilogue_insns (void) epilogue_done: if (inserted) - commit_edge_insertions (); + { + commit_edge_insertions (); + + /* The epilogue insns we inserted may cause the exit edge to no longer + be fallthru. */ + FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR->preds) + { + if (((e->flags & EDGE_FALLTHRU) != 0) + && returnjump_p (BB_END (e->src))) + e->flags &= ~EDGE_FALLTHRU; + } + } #ifdef HAVE_sibcall_epilogue /* Emit sibling epilogues before any sibling call sites. */