diff options
author | Andrew Pinski <quic_apinski@quicinc.com> | 2025-02-24 12:33:32 -0800 |
---|---|---|
committer | Andrew Pinski <quic_apinski@quicinc.com> | 2025-04-18 09:13:47 -0700 |
commit | 7b4849ec79873fa6de98436deda47e19cbac32ef (patch) | |
tree | e3328c25c0ceea46d1c992961cc130f40297a99e /libjava/gnu/java/security/ber | |
parent | 94f275432f7ea4781ec7c05fa9d1d81ef6cb3fc1 (diff) | |
download | gcc-7b4849ec79873fa6de98436deda47e19cbac32ef.zip gcc-7b4849ec79873fa6de98436deda47e19cbac32ef.tar.gz gcc-7b4849ec79873fa6de98436deda47e19cbac32ef.tar.bz2 |
gimple-fold: Improve optimize_memcpy_to_memset by walking back until aliasing says the ref is a may clobber. [PR118947]
The case here is we have:
```
char buf[32] = {};
void* ret = aaa();
__builtin_memcpy(ret, buf, 32);
```
And buf does not escape. But we don't prop the zeroing from buf to the memcpy statement
because optimize_memcpy_to_memset only looks back one statement. This can be fixed to look back
until we get an statement that may clobber the reference. If we get a phi node, then we don't do
anything.
Bootstrapped and tested on x86_64-linux-gnu.
PR tree-optimization/118947
gcc/ChangeLog:
* gimple-fold.cc (optimize_memcpy_to_memset): Walk back until we get a
statement that may clobber the read.
gcc/testsuite/ChangeLog:
* gcc.dg/pr118947-1.c: New test.
Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
Diffstat (limited to 'libjava/gnu/java/security/ber')
0 files changed, 0 insertions, 0 deletions