aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2025-08-11 14:43:58 +0200
committerRichard Biener <rguenth@gcc.gnu.org>2025-08-12 08:36:55 +0200
commit6d9c1aad2c46092ac0e5adcaad2ea5af57fad180 (patch)
treed3730722999c41b357bfe0916a2e20eeee16a48e /gcc
parent587b8a62f501792618df232d82c8336bb80f40f1 (diff)
downloadgcc-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.cc5
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;