diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-ssa-loop-ivopts.c | 11 |
2 files changed, 16 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1ab1c66..26597bb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-11-03 Zdenek Dvorak <dvorakz@suse.cz> + + PR tree-optimization/24483 + * tree-ssa-loop-ivopts.c (aff_combination_add_elt): Move rest + field to elts if possible. + 2005-11-03 Andrew Pinski <pinskia@physics.uc.edu> PR middle-end/23155 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); |