Commit fca81712 by Sebastian Pop Committed by Sebastian Pop

tree-scalar-evolution.c (instantiate_parameters_1): Return as soon as a…

tree-scalar-evolution.c (instantiate_parameters_1): Return as soon as a chrec_dont_know is detected.

	* tree-scalar-evolution.c (instantiate_parameters_1): Return
	as soon as a chrec_dont_know is detected.

From-SVN: r97253
parent 2d8a7f23
2005-03-30 Sebastian Pop <pop@cri.ensmp.fr>
* tree-scalar-evolution.c (instantiate_parameters_1): Return
as soon as a chrec_dont_know is detected.
2005-03-31 Danny Smith <dannysmith@users.sourceforge.net> 2005-03-31 Danny Smith <dannysmith@users.sourceforge.net>
Merge from csl-arm-branch. Merge from csl-arm-branch.
......
...@@ -1990,7 +1990,9 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, ...@@ -1990,7 +1990,9 @@ instantiate_parameters_1 (struct loop *loop, tree chrec,
result again. */ result again. */
bitmap_set_bit (already_instantiated, SSA_NAME_VERSION (chrec)); bitmap_set_bit (already_instantiated, SSA_NAME_VERSION (chrec));
res = analyze_scalar_evolution (def_loop, chrec); res = analyze_scalar_evolution (def_loop, chrec);
res = instantiate_parameters_1 (loop, res, allow_superloop_chrecs, cache); if (res != chrec_dont_know)
res = instantiate_parameters_1 (loop, res, allow_superloop_chrecs,
cache);
bitmap_clear_bit (already_instantiated, SSA_NAME_VERSION (chrec)); bitmap_clear_bit (already_instantiated, SSA_NAME_VERSION (chrec));
/* Store the correct value to the cache. */ /* Store the correct value to the cache. */
...@@ -2000,8 +2002,14 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, ...@@ -2000,8 +2002,14 @@ instantiate_parameters_1 (struct loop *loop, tree chrec,
case POLYNOMIAL_CHREC: case POLYNOMIAL_CHREC:
op0 = instantiate_parameters_1 (loop, CHREC_LEFT (chrec), op0 = instantiate_parameters_1 (loop, CHREC_LEFT (chrec),
allow_superloop_chrecs, cache); allow_superloop_chrecs, cache);
if (op0 == chrec_dont_know)
return chrec_dont_know;
op1 = instantiate_parameters_1 (loop, CHREC_RIGHT (chrec), op1 = instantiate_parameters_1 (loop, CHREC_RIGHT (chrec),
allow_superloop_chrecs, cache); allow_superloop_chrecs, cache);
if (op1 == chrec_dont_know)
return chrec_dont_know;
if (CHREC_LEFT (chrec) != op0 if (CHREC_LEFT (chrec) != op0
|| CHREC_RIGHT (chrec) != op1) || CHREC_RIGHT (chrec) != op1)
chrec = build_polynomial_chrec (CHREC_VARIABLE (chrec), op0, op1); chrec = build_polynomial_chrec (CHREC_VARIABLE (chrec), op0, op1);
...@@ -2010,8 +2018,14 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, ...@@ -2010,8 +2018,14 @@ instantiate_parameters_1 (struct loop *loop, tree chrec,
case PLUS_EXPR: case PLUS_EXPR:
op0 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 0), op0 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 0),
allow_superloop_chrecs, cache); allow_superloop_chrecs, cache);
if (op0 == chrec_dont_know)
return chrec_dont_know;
op1 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 1), op1 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 1),
allow_superloop_chrecs, cache); allow_superloop_chrecs, cache);
if (op1 == chrec_dont_know)
return chrec_dont_know;
if (TREE_OPERAND (chrec, 0) != op0 if (TREE_OPERAND (chrec, 0) != op0
|| TREE_OPERAND (chrec, 1) != op1) || TREE_OPERAND (chrec, 1) != op1)
chrec = chrec_fold_plus (TREE_TYPE (chrec), op0, op1); chrec = chrec_fold_plus (TREE_TYPE (chrec), op0, op1);
...@@ -2020,8 +2034,14 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, ...@@ -2020,8 +2034,14 @@ instantiate_parameters_1 (struct loop *loop, tree chrec,
case MINUS_EXPR: case MINUS_EXPR:
op0 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 0), op0 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 0),
allow_superloop_chrecs, cache); allow_superloop_chrecs, cache);
if (op0 == chrec_dont_know)
return chrec_dont_know;
op1 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 1), op1 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 1),
allow_superloop_chrecs, cache); allow_superloop_chrecs, cache);
if (op1 == chrec_dont_know)
return chrec_dont_know;
if (TREE_OPERAND (chrec, 0) != op0 if (TREE_OPERAND (chrec, 0) != op0
|| TREE_OPERAND (chrec, 1) != op1) || TREE_OPERAND (chrec, 1) != op1)
chrec = chrec_fold_minus (TREE_TYPE (chrec), op0, op1); chrec = chrec_fold_minus (TREE_TYPE (chrec), op0, op1);
...@@ -2030,8 +2050,14 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, ...@@ -2030,8 +2050,14 @@ instantiate_parameters_1 (struct loop *loop, tree chrec,
case MULT_EXPR: case MULT_EXPR:
op0 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 0), op0 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 0),
allow_superloop_chrecs, cache); allow_superloop_chrecs, cache);
if (op0 == chrec_dont_know)
return chrec_dont_know;
op1 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 1), op1 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 1),
allow_superloop_chrecs, cache); allow_superloop_chrecs, cache);
if (op1 == chrec_dont_know)
return chrec_dont_know;
if (TREE_OPERAND (chrec, 0) != op0 if (TREE_OPERAND (chrec, 0) != op0
|| TREE_OPERAND (chrec, 1) != op1) || TREE_OPERAND (chrec, 1) != op1)
chrec = chrec_fold_multiply (TREE_TYPE (chrec), op0, op1); chrec = chrec_fold_multiply (TREE_TYPE (chrec), op0, op1);
...@@ -2065,13 +2091,17 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, ...@@ -2065,13 +2091,17 @@ instantiate_parameters_1 (struct loop *loop, tree chrec,
case 3: case 3:
op0 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 0), op0 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 0),
allow_superloop_chrecs, cache); allow_superloop_chrecs, cache);
if (op0 == chrec_dont_know)
return chrec_dont_know;
op1 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 1), op1 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 1),
allow_superloop_chrecs, cache); allow_superloop_chrecs, cache);
if (op1 == chrec_dont_know)
return chrec_dont_know;
op2 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 2), op2 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 2),
allow_superloop_chrecs, cache); allow_superloop_chrecs, cache);
if (op0 == chrec_dont_know if (op2 == chrec_dont_know)
|| op1 == chrec_dont_know
|| op2 == chrec_dont_know)
return chrec_dont_know; return chrec_dont_know;
if (op0 == TREE_OPERAND (chrec, 0) if (op0 == TREE_OPERAND (chrec, 0)
...@@ -2085,10 +2115,12 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, ...@@ -2085,10 +2115,12 @@ instantiate_parameters_1 (struct loop *loop, tree chrec,
case 2: case 2:
op0 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 0), op0 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 0),
allow_superloop_chrecs, cache); allow_superloop_chrecs, cache);
if (op0 == chrec_dont_know)
return chrec_dont_know;
op1 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 1), op1 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 1),
allow_superloop_chrecs, cache); allow_superloop_chrecs, cache);
if (op0 == chrec_dont_know if (op1 == chrec_dont_know)
|| op1 == chrec_dont_know)
return chrec_dont_know; return chrec_dont_know;
if (op0 == TREE_OPERAND (chrec, 0) if (op0 == TREE_OPERAND (chrec, 0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment