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
This commit is contained in:
Zdenek Dvorak 2006-05-17 13:33:00 +02:00 committed by Zdenek Dvorak
parent 7bab4b9026
commit e5db35150e
4 changed files with 15 additions and 2 deletions

View File

@ -1,3 +1,11 @@
2006-05-17 Zdenek Dvorak <dvorakz@suse.cz>
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.
2005-05-17 Bernd Schmidt <bernd.schmidt@analog.com>
PR middle-end/27620

View File

@ -842,6 +842,7 @@ bool can_unroll_loop_p (struct loop *loop, unsigned factor,
struct tree_niter_desc *niter);
void tree_unroll_loop (struct loops *, struct loop *, unsigned,
edge, struct tree_niter_desc *);
bool contains_abnormal_ssa_name_p (tree);
/* In tree-ssa-threadedge.c */
extern bool potentially_threadable_block (basic_block);

View File

@ -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

View File

@ -678,7 +678,7 @@ idx_contains_abnormal_ssa_name_p (tree base, tree *index,
/* Returns true if EXPR contains a ssa name that occurs in an
abnormal phi node. */
static bool
bool
contains_abnormal_ssa_name_p (tree expr)
{
enum tree_code code;