tree-optimization/93891 - improve same-store disambiguation

We need a reference to assess alignment, fall back to the original
reference tree if available.

2020-05-04  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/93891
	* tree-ssa-sccvn.c (vn_reference_lookup_3): Fall back to
	the original reference tree for assessing access alignment.
This commit is contained in:
Richard Biener 2020-02-25 11:46:02 +01:00
parent ec40967f13
commit 367766f40a
2 changed files with 10 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2020-05-04 Richard Biener <rguenther@suse.de>
PR tree-optimization/93891
* tree-ssa-sccvn.c (vn_reference_lookup_3): Fall back to
the original reference tree for assessing access alignment.
2020-05-04 Richard Biener <rguenther@suse.de>
PR tree-optimization/39612

View File

@ -2527,7 +2527,7 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *data_,
and return the found value. */
if (is_gimple_reg_type (TREE_TYPE (lhs))
&& types_compatible_p (TREE_TYPE (lhs), vr->type)
&& ref->ref)
&& (ref->ref || data->orig_ref.ref))
{
tree *saved_last_vuse_ptr = data->last_vuse_ptr;
/* Do not update last_vuse_ptr in vn_reference_lookup_2. */
@ -2552,7 +2552,9 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *data_,
-fno-strict-aliasing. So simply resort to alignment to
rule out overlaps. Do this check last because it is
quite expensive compared to the hash-lookup above. */
&& multiple_p (get_object_alignment (ref->ref), ref->size)
&& multiple_p (get_object_alignment
(ref->ref ? ref->ref : data->orig_ref.ref),
ref->size)
&& multiple_p (get_object_alignment (lhs), ref->size))
return res;
}