diff options
author | Martin Jambor <mjambor@suse.cz> | 2011-12-13 17:08:14 +0100 |
---|---|---|
committer | Martin Jambor <jamborm@gcc.gnu.org> | 2011-12-13 17:08:14 +0100 |
commit | d370518679f55fa676afe6010301945b9ccc7053 (patch) | |
tree | 8b65d455f3dae2ce04e2319a34c93258fc6395fc /gcc | |
parent | 0318fc774964ac07f2bc1c9672cfa75b5355501b (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-sra.c | 28 |
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; } |