aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-loop-ivopts.c
diff options
context:
space:
mode:
authorZdenek Dvorak <dvorakz@suse.cz>2005-11-03 16:28:09 +0000
committerZdenek Dvorak <dvorakz@suse.cz>2005-11-03 16:28:09 +0000
commit97725bcde2236d163655a4999232cbbd07246cdd (patch)
tree033cdae83cc749fc9515c5b7930d80638b1929b3 /gcc/tree-ssa-loop-ivopts.c
parent0921df65ca0b9a8a06dc7d1d005277a23bd17aa8 (diff)
PR tree-optimization/24483
* tree-ssa-loop-ivopts.c (aff_combination_add_elt): Move rest field to elts if possible. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@106440 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-loop-ivopts.c')
-rw-r--r--gcc/tree-ssa-loop-ivopts.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c
index 8bfbf7f8424..1235379aa43 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);