diff options
author | Zdenek Dvorak <dvorakz@suse.cz> | 2005-11-03 17:28:09 +0100 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2005-11-03 16:28:09 +0000 |
commit | 98d59fe652402d1b42d3da0f39ab897d13d7a042 (patch) | |
tree | 033cdae83cc749fc9515c5b7930d80638b1929b3 /gcc/tree-ssa-loop-ivopts.c | |
parent | ca0b7d18c1cd76de7015e01ff1414c4314eda7b4 (diff) | |
download | gcc-98d59fe652402d1b42d3da0f39ab897d13d7a042.zip gcc-98d59fe652402d1b42d3da0f39ab897d13d7a042.tar.gz gcc-98d59fe652402d1b42d3da0f39ab897d13d7a042.tar.bz2 |
re PR tree-optimization/24483 (ICE in ivopts)
PR tree-optimization/24483
* tree-ssa-loop-ivopts.c (aff_combination_add_elt): Move rest
field to elts if possible.
From-SVN: r106440
Diffstat (limited to 'gcc/tree-ssa-loop-ivopts.c')
-rw-r--r-- | gcc/tree-ssa-loop-ivopts.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index 8bfbf7f..1235379 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -2761,6 +2761,15 @@ aff_combination_add_elt (struct affine_tree_combination *comb, tree elt, comb->n--; comb->coefs[i] = comb->coefs[comb->n]; comb->elts[i] = comb->elts[comb->n]; + + if (comb->rest) + { + gcc_assert (comb->n == MAX_AFF_ELTS - 1); + comb->coefs[comb->n] = 1; + comb->elts[comb->n] = comb->rest; + comb->rest = NULL_TREE; + comb->n++; + } return; } if (comb->n < MAX_AFF_ELTS) @@ -2793,7 +2802,7 @@ aff_combination_add (struct affine_tree_combination *comb1, unsigned i; comb1->offset = (comb1->offset + comb2->offset) & comb1->mask; - for (i = 0; i < comb2-> n; i++) + for (i = 0; i < comb2->n; i++) aff_combination_add_elt (comb1, comb2->elts[i], comb2->coefs[i]); if (comb2->rest) aff_combination_add_elt (comb1, comb2->rest, 1); |