OSDN Git Service

2008-08-18 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 18 Aug 2008 08:40:32 +0000 (08:40 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 18 Aug 2008 08:40:32 +0000 (08:40 +0000)
* tree-sra.c (generate_element_init_1): Deal with NULL constructor
element index.
(scalarize_init): If we failed to generate some initializers
do not generate zeros for not instantiated members.  Instead
rely on the copy out.
* tree-ssa-operands.c (get_addr_dereference_operands): Warn
about missing flow-sensitive alias info only if we have
aliases computed.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@139188 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-sra.c
gcc/tree-ssa-operands.c

index 4d5c6b4..0f42ce4 100644 (file)
@@ -1,3 +1,14 @@
+2008-08-18  Richard Guenther  <rguenther@suse.de>
+
+       * tree-sra.c (generate_element_init_1): Deal with NULL constructor
+       element index.
+       (scalarize_init): If we failed to generate some initializers
+       do not generate zeros for not instantiated members.  Instead
+       rely on the copy out.
+       * tree-ssa-operands.c (get_addr_dereference_operands): Warn
+       about missing flow-sensitive alias info only if we have
+       aliases computed.
+
 2008-08-17  Nick Clifton  <nickc@redhat.com>
 
        * doc/extend.texi (Function Attributes): Fix typo in description
index 5ae1c51..85217ec 100644 (file)
@@ -2779,6 +2779,12 @@ generate_element_init_1 (struct sra_elt *elt, tree init, gimple_seq *seq_p)
     case CONSTRUCTOR:
       FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (init), idx, purpose, value)
        {
+         /* Array constructors are routinely created with NULL indices.  */
+         if (purpose == NULL_TREE)
+           {
+             result = false;
+             break;
+           }
          if (TREE_CODE (purpose) == RANGE_EXPR)
            {
              tree lower = TREE_OPERAND (purpose, 0);
@@ -3404,11 +3410,6 @@ scalarize_init (struct sra_elt *lhs_elt, tree rhs, gimple_stmt_iterator *gsi)
       result = generate_element_init (lhs_elt, rhs, &init_seq);
     }
 
-  /* CONSTRUCTOR is defined such that any member not mentioned is assigned
-     a zero value.  Initialize the rest of the instantiated elements.  */
-  generate_element_zero (lhs_elt, &seq);
-  gimple_seq_add_seq (&seq, init_seq);
-
   if (!result)
     {
       /* If we failed to convert the entire initializer, then we must
@@ -3423,6 +3424,13 @@ scalarize_init (struct sra_elt *lhs_elt, tree rhs, gimple_stmt_iterator *gsi)
       gimple_seq_add_seq (&seq0, seq);
       seq = seq0;
     }
+  else
+    {
+      /* CONSTRUCTOR is defined such that any member not mentioned is assigned
+        a zero value.  Initialize the rest of the instantiated elements.  */
+      generate_element_zero (lhs_elt, &seq);
+      gimple_seq_add_seq (&seq, init_seq);
+    }
 
   if (lhs_elt->use_block_copy || !result)
     {
index 304df53..8c94baa 100644 (file)
@@ -1504,7 +1504,8 @@ get_addr_dereference_operands (gimple stmt, tree *addr, int flags,
              && TREE_CODE (ptr) == SSA_NAME
              && (pi == NULL
                  || (pi->name_mem_tag == NULL_TREE
-                     && !pi->pt_anything)))
+                     && !pi->pt_anything))
+             && gimple_aliases_computed_p (cfun))
            {
              fprintf (dump_file,
                  "NOTE: no flow-sensitive alias info for ");