diff options
author | Sebastian Pop <pop@cri.ensmp.fr> | 2005-03-30 14:14:49 +0200 |
---|---|---|
committer | Sebastian Pop <spop@gcc.gnu.org> | 2005-03-30 12:14:49 +0000 |
commit | fca81712a37e37a8fd00c6f054b88e522122ff04 (patch) | |
tree | 3375533a1762558e9a7ea90af28165101380dd63 | |
parent | 2d8a7f23ee9cbb193bbe2afb82288f2943df87d2 (diff) | |
download | gcc-fca81712a37e37a8fd00c6f054b88e522122ff04.zip gcc-fca81712a37e37a8fd00c6f054b88e522122ff04.tar.gz gcc-fca81712a37e37a8fd00c6f054b88e522122ff04.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-scalar-evolution.c | 44 |
2 files changed, 43 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 00025a8..b33491d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +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> Merge from csl-arm-branch. diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c index c6a60fe..576fce0 100644 --- a/gcc/tree-scalar-evolution.c +++ b/gcc/tree-scalar-evolution.c @@ -1990,7 +1990,9 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, result again. */ bitmap_set_bit (already_instantiated, SSA_NAME_VERSION (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)); /* Store the correct value to the cache. */ @@ -2000,8 +2002,14 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, case POLYNOMIAL_CHREC: op0 = instantiate_parameters_1 (loop, CHREC_LEFT (chrec), allow_superloop_chrecs, cache); + if (op0 == chrec_dont_know) + return chrec_dont_know; + op1 = instantiate_parameters_1 (loop, CHREC_RIGHT (chrec), allow_superloop_chrecs, cache); + if (op1 == chrec_dont_know) + return chrec_dont_know; + if (CHREC_LEFT (chrec) != op0 || CHREC_RIGHT (chrec) != op1) chrec = build_polynomial_chrec (CHREC_VARIABLE (chrec), op0, op1); @@ -2010,8 +2018,14 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, case PLUS_EXPR: op0 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 0), allow_superloop_chrecs, cache); + if (op0 == chrec_dont_know) + return chrec_dont_know; + op1 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 1), allow_superloop_chrecs, cache); + if (op1 == chrec_dont_know) + return chrec_dont_know; + if (TREE_OPERAND (chrec, 0) != op0 || TREE_OPERAND (chrec, 1) != op1) chrec = chrec_fold_plus (TREE_TYPE (chrec), op0, op1); @@ -2020,8 +2034,14 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, case MINUS_EXPR: op0 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 0), allow_superloop_chrecs, cache); + if (op0 == chrec_dont_know) + return chrec_dont_know; + op1 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 1), allow_superloop_chrecs, cache); + if (op1 == chrec_dont_know) + return chrec_dont_know; + if (TREE_OPERAND (chrec, 0) != op0 || TREE_OPERAND (chrec, 1) != op1) chrec = chrec_fold_minus (TREE_TYPE (chrec), op0, op1); @@ -2030,8 +2050,14 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, case MULT_EXPR: op0 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 0), allow_superloop_chrecs, cache); + if (op0 == chrec_dont_know) + return chrec_dont_know; + op1 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 1), allow_superloop_chrecs, cache); + if (op1 == chrec_dont_know) + return chrec_dont_know; + if (TREE_OPERAND (chrec, 0) != op0 || TREE_OPERAND (chrec, 1) != op1) chrec = chrec_fold_multiply (TREE_TYPE (chrec), op0, op1); @@ -2065,13 +2091,17 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, case 3: op0 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 0), allow_superloop_chrecs, cache); + if (op0 == chrec_dont_know) + return chrec_dont_know; + op1 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 1), allow_superloop_chrecs, cache); + if (op1 == chrec_dont_know) + return chrec_dont_know; + op2 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 2), allow_superloop_chrecs, cache); - if (op0 == chrec_dont_know - || op1 == chrec_dont_know - || op2 == chrec_dont_know) + if (op2 == chrec_dont_know) return chrec_dont_know; if (op0 == TREE_OPERAND (chrec, 0) @@ -2085,10 +2115,12 @@ instantiate_parameters_1 (struct loop *loop, tree chrec, case 2: op0 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 0), allow_superloop_chrecs, cache); + if (op0 == chrec_dont_know) + return chrec_dont_know; + op1 = instantiate_parameters_1 (loop, TREE_OPERAND (chrec, 1), allow_superloop_chrecs, cache); - if (op0 == chrec_dont_know - || op1 == chrec_dont_know) + if (op1 == chrec_dont_know) return chrec_dont_know; if (op0 == TREE_OPERAND (chrec, 0) |