]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/50628 (gfortran.fortran-torture/execute/entry_4.f90 fails)
authorMartin Jambor <mjambor@suse.cz>
Tue, 13 Dec 2011 16:08:14 +0000 (17:08 +0100)
committerMartin Jambor <jamborm@gcc.gnu.org>
Tue, 13 Dec 2011 16:08:14 +0000 (17:08 +0100)
2011-12-13  Martin Jambor  <mjambor@suse.cz>

PR middle-end/50628
* tree-sra.c (propagate_subaccesses_across_link): Do not propagate
sub-accesses of scalar accesses.

From-SVN: r182289

gcc/ChangeLog
gcc/tree-sra.c

index 3b28a5d10fc273d743145ee1244feda20ced0b09..a9022e0b7b4be8e64a475d6df76c9d60574c00f1 100644 (file)
@@ -1,3 +1,9 @@
+2011-12-13  Martin Jambor  <mjambor@suse.cz>
+
+       PR middle-end/50628
+       * tree-sra.c (propagate_subaccesses_across_link): Do not propagate
+       sub-accesses of scalar accesses.
+
 2011-12-13  Martin Jambor  <mjambor@suse.cz>
 
        PR tree-optimization/51362
index b921c76377397b5447e67a205d6fa3712845c57b..84cbc84621493b091b28b91972598f5c2c886498 100644 (file)
@@ -2266,21 +2266,23 @@ propagate_subaccesses_across_link (struct access *lacc, struct access *racc)
       || racc->grp_unscalarizable_region)
     return false;
 
-  if (!lacc->first_child && !racc->first_child
-      && is_gimple_reg_type (racc->type))
+  if (is_gimple_reg_type (racc->type))
     {
-      tree t = lacc->base;
-
-      lacc->type = racc->type;
-      if (build_user_friendly_ref_for_offset (&t, TREE_TYPE (t), lacc->offset,
-                                             racc->type))
-       lacc->expr = t;
-      else
+      if (!lacc->first_child && !racc->first_child)
        {
-         lacc->expr = build_ref_for_model (EXPR_LOCATION (lacc->base),
-                                           lacc->base, lacc->offset,
-                                           racc, NULL, false);
-         lacc->grp_no_warning = true;
+         tree t = lacc->base;
+
+         lacc->type = racc->type;
+         if (build_user_friendly_ref_for_offset (&t, TREE_TYPE (t),
+                                                 lacc->offset, racc->type))
+           lacc->expr = t;
+         else
+           {
+             lacc->expr = build_ref_for_model (EXPR_LOCATION (lacc->base),
+                                               lacc->base, lacc->offset,
+                                               racc, NULL, false);
+             lacc->grp_no_warning = true;
+           }
        }
       return false;
     }