aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgcleanup.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2010-06-06 19:29:01 +0000
committerJan Hubicka <jh@suse.cz>2010-06-06 19:29:01 +0000
commit92ec9d934b40bf00dbd82b29a871f3487e164ede (patch)
tree33762169b920df538a949d4040921754532aa165 /gcc/cfgcleanup.c
parent016200936b26ba9577d1b17f12bb09c39fab7121 (diff)
* df-core.c (df_set_blocks): Use bitmap_head instead of bitmap.
(df_compact_blocks): Likewise. * df.h (struct df): Turn hardware_regs_used, regular_block_artificial_uses, eh_block_artificial_uses, insns_to_delete, insns_to_rescan, insns_to_notes_rescan into bitmap_head. * df-problems.c (df_lr_local_compute, df_lr_confluence_0, df_byte_lr_alloc, df_simulate_fixup_sets): Update. * df-scan.c (df_scan_free_internal, df_scan_alloc, df_scan_start_dump, df_scan_blocks, df_insn_delete, df_insn_rescan, df_insn_rescan_debug_internal, df_insn_rescan_all, df_process_deferred_rescans, df_process_deferred_rescans, df_notes_rescan, df_get_call_refs, df_get_call_refs, regs_invalidated_by_call_regset, df_get_call_refs, df_bb_refs_collect, df_record_entry_block_defs, df_record_exit_block_uses, df_update_exit_block_uses, df_bb_verify, df_entry_block_bitmap_verify, df_scan_verify): Update. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@160348 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfgcleanup.c')
-rw-r--r--gcc/cfgcleanup.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c
index 7139e3a7bce..67e5632e6cb 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;