aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-scalar-evolution.c
diff options
context:
space:
mode:
authorZdenek Dvorak <dvorakz@suse.cz>2006-05-17 13:33:00 +0200
committerZdenek Dvorak <rakdver@gcc.gnu.org>2006-05-17 11:33:00 +0000
commite5db35150e9377adf263374bccb2a3f68af5d7ca (patch)
tree33916ea3c4848f357fbbe3a72c1cb90195ac6f21 /gcc/tree-scalar-evolution.c
parent7bab4b902623f21a99b2bbe0512f9d77e10e00ba (diff)
downloadgcc-e5db35150e9377adf263374bccb2a3f68af5d7ca.zip
gcc-e5db35150e9377adf263374bccb2a3f68af5d7ca.tar.gz
gcc-e5db35150e9377adf263374bccb2a3f68af5d7ca.tar.bz2
re PR tree-optimization/27548 (ICE: SSA corruption - Conflict across an abnormal edge)
PR tree-optimization/27548 * tree-scalar-evolution.c (scev_const_prop): Do not prolong life range of ssa names that appear on abnormal edges. * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Export. * tree-flow.h (contains_abnormal_ssa_name_p): Declare. From-SVN: r113853
Diffstat (limited to 'gcc/tree-scalar-evolution.c')
-rw-r--r--gcc/tree-scalar-evolution.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c
index 6fcfaa4..22ca912 100644
--- a/gcc/tree-scalar-evolution.c
+++ b/gcc/tree-scalar-evolution.c
@@ -2802,7 +2802,11 @@ scev_const_prop (void)
def = analyze_scalar_evolution_in_loop (ex_loop, loop, def, NULL);
def = compute_overall_effect_of_inner_loop (ex_loop, def);
if (!tree_does_not_contain_chrecs (def)
- || chrec_contains_symbols_defined_in_loop (def, ex_loop->num))
+ || chrec_contains_symbols_defined_in_loop (def, ex_loop->num)
+ /* Moving the computation from the loop may prolong life range
+ of some ssa names, which may cause problems if they appear
+ on abnormal edges. */
+ || contains_abnormal_ssa_name_p (def))
continue;
/* Eliminate the phi node and replace it by a computation outside