re PR tree-optimization/24483 (ICE in ivopts)
authorZdenek Dvorak <dvorakz@suse.cz>
Thu, 3 Nov 2005 16:28:09 +0000 (17:28 +0100)
committerZdenek Dvorak <rakdver@gcc.gnu.org>
Thu, 3 Nov 2005 16:28:09 +0000 (16:28 +0000)
PR tree-optimization/24483
* tree-ssa-loop-ivopts.c (aff_combination_add_elt): Move rest
field to elts if possible.

From-SVN: r106440

gcc/ChangeLog
gcc/tree-ssa-loop-ivopts.c

index 1ab1c66f7addd68d39c7f0a98498acd7e0267d23..26597bb1aafe9c7590b96bddf8ed7cf7b7cdad0d 100644 (file)
@@ -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
index 8bfbf7f8424b0637c61a0bf8839b93c5814ea7b5..1235379aa43a8c0fd237c713d58e803e0d9e502b 100644 (file)
@@ -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);