]> gcc.gnu.org Git - gcc.git/commitdiff
re PR tree-optimization/46286 (ICE in do_complex_constraint, at tree-ssa-structalias...
authorRichard Guenther <rguenther@suse.de>
Wed, 3 Nov 2010 12:20:28 +0000 (12:20 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 3 Nov 2010 12:20:28 +0000 (12:20 +0000)
2010-11-03  Richard Guenther  <rguenther@suse.de>

PR tree-optimization/46286
* tree-ssa-structalias.c (get_constraint_for_1): Avoid referencing
re-allocated vector data.

From-SVN: r166241

gcc/ChangeLog
gcc/tree-ssa-structalias.c

index 55b233d3318e07a16f3b73cedc08fe7ff6913caa..8f34c23031fe0fb97a93fcc4d8d89c9139458025 100644 (file)
@@ -1,3 +1,9 @@
+2010-11-03  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/46286
+       * tree-ssa-structalias.c (get_constraint_for_1): Avoid referencing
+       re-allocated vector data.
+
 2010-11-03  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR target/46285
index 315bef6f0da077eace8bc0e3f1414adb30e1d99e..45efd55b7555572a5da56541372c2bd6fcaa7eb1 100644 (file)
@@ -3339,7 +3339,7 @@ get_constraint_for_1 (tree t, VEC (ce_s, heap) **results, bool address_p,
          {
          case MEM_REF:
            {
-             struct constraint_expr *c;
+             struct constraint_expr cs;
              varinfo_t vi, curr;
              tree off = double_int_to_tree (sizetype, mem_ref_offset (t));
              get_constraint_for_ptr_offset (TREE_OPERAND (t, 0), off, results);
@@ -3347,12 +3347,12 @@ get_constraint_for_1 (tree t, VEC (ce_s, heap) **results, bool address_p,
 
              /* If we are not taking the address then make sure to process
                 all subvariables we might access.  */
-             c = VEC_last (ce_s, *results);
+             cs = *VEC_last (ce_s, *results);
              if (address_p
-                 || c->type != SCALAR)
+                 || cs.type != SCALAR)
                return;
 
-             vi = get_varinfo (c->var);
+             vi = get_varinfo (cs.var);
              curr = vi->next;
              if (!vi->is_full_var
                  && curr)
@@ -3366,7 +3366,6 @@ get_constraint_for_1 (tree t, VEC (ce_s, heap) **results, bool address_p,
                    {
                      if (curr->offset - vi->offset < size)
                        {
-                         struct constraint_expr cs = *c;
                          cs.var = curr->id;
                          VEC_safe_push (ce_s, heap, *results, &cs);
                        }
This page took 0.133538 seconds and 5 git commands to generate.