diff options
Diffstat (limited to 'gcc/cfgcleanup.c')
-rw-r--r-- | gcc/cfgcleanup.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index 7139e3a..67e5632 100644 --- a/gcc/cfgcleanup.c +++ b/gcc/cfgcleanup.c @@ -2367,7 +2367,13 @@ cleanup_cfg (int mode) break; else if ((mode & CLEANUP_CROSSJUMP) && crossjumps_occured) - run_fast_dce (); + { + /* Fast DCE is expensive, we really want to be sure we don't + re-run it just because crossjumping cascade. */ + while (try_optimize_cfg (mode)) + delete_unreachable_blocks (); + run_fast_dce (); + } } else break; |