diff options
author | Richard Biener <rguenther@suse.de> | 2025-08-11 14:43:58 +0200 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2025-08-12 08:36:55 +0200 |
commit | 6d9c1aad2c46092ac0e5adcaad2ea5af57fad180 (patch) | |
tree | d3730722999c41b357bfe0916a2e20eeee16a48e /gcc | |
parent | 587b8a62f501792618df232d82c8336bb80f40f1 (diff) | |
download | gcc-6d9c1aad2c46092ac0e5adcaad2ea5af57fad180.zip gcc-6d9c1aad2c46092ac0e5adcaad2ea5af57fad180.tar.gz gcc-6d9c1aad2c46092ac0e5adcaad2ea5af57fad180.tar.bz2 |
Restrict aggregate copy VN generalization
The following avoids ending up with a MEM_REF as component to apply.
* tree-ssa-sccvn.cc (vn_reference_lookup_3): When we fail to
match up the two base MEM_REFs, fail.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/tree-ssa-sccvn.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/tree-ssa-sccvn.cc b/gcc/tree-ssa-sccvn.cc index 61d794d..cdd7c05 100644 --- a/gcc/tree-ssa-sccvn.cc +++ b/gcc/tree-ssa-sccvn.cc @@ -3631,7 +3631,12 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *data_, { extra_off = vr->operands[i].off - lhs_ops[j].off; i--, j--; + found = true; } + /* If we did find a match we'd eventually append a MEM_REF + as component. Don't. */ + if (!found) + return (void *)-1; } else return (void *)-1; |