aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2011-12-13 17:08:14 +0100
committerMartin Jambor <jamborm@gcc.gnu.org>2011-12-13 17:08:14 +0100
commitd370518679f55fa676afe6010301945b9ccc7053 (patch)
tree8b65d455f3dae2ce04e2319a34c93258fc6395fc /gcc
parent0318fc774964ac07f2bc1c9672cfa75b5355501b (diff)
downloadgcc-d370518679f55fa676afe6010301945b9ccc7053.zip
gcc-d370518679f55fa676afe6010301945b9ccc7053.tar.gz
gcc-d370518679f55fa676afe6010301945b9ccc7053.tar.bz2
re PR middle-end/50628 (gfortran.fortran-torture/execute/entry_4.f90 fails)
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/tree-sra.c28
2 files changed, 21 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3b28a5d..a9022e0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
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
* ipa-cp.c (estimate_local_effects): When estimated size of a
specialized clone is zero, bump it to one.
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
index b921c76..84cbc84 100644
--- a/gcc/tree-sra.c
+++ b/gcc/tree-sra.c
@@ -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;
}