From: Richard Biener Date: Tue, 25 Feb 2020 10:46:02 +0000 (+0100) Subject: tree-optimization/93891 - improve same-store disambiguation X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=367766f40a031ff064857681dc4da3309f0ce57d;p=gcc.git 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 PR tree-optimization/93891 * tree-ssa-sccvn.c (vn_reference_lookup_3): Fall back to the original reference tree for assessing access alignment. --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 61d5ce5ae1f..88a32acefc0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2020-05-04 Richard Biener + + 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 PR tree-optimization/39612 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; }