diff options
author | Jan Hubicka <jh@suse.cz> | 2010-06-06 21:29:01 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2010-06-06 19:29:01 +0000 |
commit | a7e3698d81844438d339a957ba4fe7ead0ee2357 (patch) | |
tree | 33762169b920df538a949d4040921754532aa165 /gcc/cfgcleanup.c | |
parent | e62b90b403f1e528aef8dc5042e45f921b365cf8 (diff) | |
download | gcc-a7e3698d81844438d339a957ba4fe7ead0ee2357.zip gcc-a7e3698d81844438d339a957ba4fe7ead0ee2357.tar.gz gcc-a7e3698d81844438d339a957ba4fe7ead0ee2357.tar.bz2 |
df-core.c (df_set_blocks): Use bitmap_head instead of bitmap.
* 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.
From-SVN: r160348
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; |