[PATCH] tree-optimization/93891 - improve same-store disambiguation
Richard Biener
rguenther@suse.de
Mon May 4 12:12:46 GMT 2020
This doesn't fix the testcase at hand but is a first step.
Bootstrap / regtest ongoing on x86_64-unknown-linux-gnu.
We need a reference to assess alignment, fall back to the original
reference tree if available.
2020-02-16 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.
---
gcc/tree-ssa-sccvn.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
index 238931d3f3e..8a4af91c54e 100644
--- a/gcc/tree-ssa-sccvn.c
+++ b/gcc/tree-ssa-sccvn.c
@@ -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;
}
--
2.16.4
More information about the Gcc-patches
mailing list