diff options
author | Kazu Hirata <kazu@cs.umass.edu> | 2005-02-23 01:28:59 +0000 |
---|---|---|
committer | Kazu Hirata <kazu@gcc.gnu.org> | 2005-02-23 01:28:59 +0000 |
commit | 78d5a34be5a7ddf381c654bec90c8a0af0795888 (patch) | |
tree | 5ce60a7bc9cf70398ccad1c8317ac978dc617854 /gcc/passes.c | |
parent | 263fb23d4aee9876d22ea0dd72fe174335c277f3 (diff) | |
download | gcc-78d5a34be5a7ddf381c654bec90c8a0af0795888.zip gcc-78d5a34be5a7ddf381c654bec90c8a0af0795888.tar.gz gcc-78d5a34be5a7ddf381c654bec90c8a0af0795888.tar.bz2 |
re PR rtl-optimization/20017 (internal compiler error: in rtl_verify_flow_info, at cfgrtl.c:2212)
gcc/
PR rtl-optimization/20017.
* passes.c (rest_of_handle_combine, rest_of_handle_cse,
rest_of_handle_cse2, rest_of_handle_gcse): Call
delete_dead_jumptables immediately before calling cleanup_cfg.
testsuite/
PR rtl-optimization/20017.
* gcc.dg/pr20017.c: New.
From-SVN: r95431
Diffstat (limited to 'gcc/passes.c')
-rw-r--r-- | gcc/passes.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/passes.c b/gcc/passes.c index 695e490..956885a 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -895,6 +895,7 @@ rest_of_handle_combine (void) rebuild_jump_labels (get_insns ()); timevar_pop (TV_JUMP); + delete_dead_jumptables (); cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_UPDATE_LIFE); } @@ -971,6 +972,9 @@ rest_of_handle_cse (void) expecting CSE to be run. But always rerun it in a cheap mode. */ cse_not_expected = !flag_rerun_cse_after_loop && !flag_gcse; + if (tem) + delete_dead_jumptables (); + if (tem || optimize > 1) cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP); @@ -1006,6 +1010,7 @@ rest_of_handle_cse2 (void) { timevar_push (TV_JUMP); rebuild_jump_labels (get_insns ()); + delete_dead_jumptables (); cleanup_cfg (CLEANUP_EXPENSIVE); timevar_pop (TV_JUMP); } @@ -1053,6 +1058,7 @@ rest_of_handle_gcse (void) { timevar_push (TV_JUMP); rebuild_jump_labels (get_insns ()); + delete_dead_jumptables (); cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP); timevar_pop (TV_JUMP); } |