diff options
author | Richard Biener <rguenther@suse.de> | 2020-02-25 11:46:02 +0100 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2020-05-04 15:37:26 +0200 |
commit | 367766f40a031ff064857681dc4da3309f0ce57d (patch) | |
tree | 3cb7e3831a5e9eede1a75862644548782366f765 /gcc | |
parent | ec40967f1323069da3a5a45286f71fa4f80926df (diff) | |
download | gcc-367766f40a031ff064857681dc4da3309f0ce57d.zip gcc-367766f40a031ff064857681dc4da3309f0ce57d.tar.gz gcc-367766f40a031ff064857681dc4da3309f0ce57d.tar.bz2 |
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.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-ssa-sccvn.c | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 61d5ce5..88a32ac 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 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 * tree-ssa-loop-im.c (im_mem_ref::loaded): New member. (set_ref_loaded_in_loop): New. diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index 238931d..8a4af91 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; } |