diff options
author | Zdenek Dvorak <dvorakz@suse.cz> | 2007-07-20 03:32:47 +0200 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2007-07-20 01:32:47 +0000 |
commit | 30a873c3f3697132e95b32ba1cf261e93f27045b (patch) | |
tree | 5c837c5f6e803acf2fbd4efe010fd38dea7d6cb2 | |
parent | d24a32a1860b9d5a23ccca40cc70d165cd285e8b (diff) | |
download | gcc-30a873c3f3697132e95b32ba1cf261e93f27045b.zip gcc-30a873c3f3697132e95b32ba1cf261e93f27045b.tar.gz gcc-30a873c3f3697132e95b32ba1cf261e93f27045b.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/function.c | 13 |
2 files changed, 17 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4a999b0..902c61d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2007-07-20 Zdenek Dvorak <dvorakz@suse.cz> + * function.c (thread_prologue_and_epilogue_insns): Fix exit + predecessor fallthru flags. + +2007-07-20 Zdenek Dvorak <dvorakz@suse.cz> + * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands of compare to the same type. * cfgloopmanip.c (add_loop): Update information about loop exits. diff --git a/gcc/function.c b/gcc/function.c index c69e18b..68a3f7e 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. */ |