summaryrefslogtreecommitdiff
path: root/gcc/gcse.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@libertysurf.fr>2007-11-12 22:21:37 +0100
committerEric Botcazou <ebotcazou@gcc.gnu.org>2007-11-12 21:21:37 +0000
commit2aac3a017189eddb8740b0de66243765ed505e0a (patch)
tree4e90b09d7ebd094cdf433aeb27f13654901ad0ce /gcc/gcse.c
parentd51fba8ef2918636d8d51389297aa558b235d1ca (diff)
downloadgcc-2aac3a017189eddb8740b0de66243765ed505e0a.tar.gz
re PR rtl-optimization/34035 (ICE in calc_dfs_tree with -O2 -fnon-call-exceptions -ffast-math -fno-gcse)
PR rtl-optimization/34035 * cse.c (cse_cfg_altered): New global variable. (cse_jumps_altered): Make boolean. (recorded_label_ref): Likewise. (cse_insn): Adjust for above changes. (cse_extended_basic_block): Likewise. Set cse_cfg_altered if dead edges have been purged. (cse_main): Change return value specification and adjust code. (rest_of_handle_cse): Adjust for above change. (rest_of_handle_cse2): Likewise. * gcse.c (rest_of_handle_gcse): Likewise. From-SVN: r130122
Diffstat (limited to 'gcc/gcse.c')
-rw-r--r--gcc/gcse.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/gcse.c b/gcc/gcse.c
index 21d3da45185..c5e8c7b44f5 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -6737,13 +6737,15 @@ rest_of_handle_gcse (void)
/* If gcse or cse altered any jumps, rerun jump optimizations to clean
things up. */
- if (tem || tem2)
+ if (tem || tem2 == 2)
{
timevar_push (TV_JUMP);
rebuild_jump_labels (get_insns ());
cleanup_cfg (0);
timevar_pop (TV_JUMP);
}
+ else if (tem2 == 1)
+ cleanup_cfg (0);
flag_cse_skip_blocks = save_csb;
flag_cse_follow_jumps = save_cfj;