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
This commit is contained in:
Martin Jambor 2011-12-13 17:08:14 +01:00 committed by Martin Jambor
parent 0318fc7749
commit d370518679
2 changed files with 21 additions and 13 deletions

View 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> 2011-12-13 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/51362 PR tree-optimization/51362

View File

@ -2266,21 +2266,23 @@ propagate_subaccesses_across_link (struct access *lacc, struct access *racc)
|| racc->grp_unscalarizable_region) || racc->grp_unscalarizable_region)
return false; return false;
if (!lacc->first_child && !racc->first_child if (is_gimple_reg_type (racc->type))
&& is_gimple_reg_type (racc->type))
{ {
tree t = lacc->base; if (!lacc->first_child && !racc->first_child)
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), tree t = lacc->base;
lacc->base, lacc->offset,
racc, NULL, false); lacc->type = racc->type;
lacc->grp_no_warning = true; 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; return false;
} }