[MemCpyOpt] Don't generate zero-size memset
authorNikita Popov <nikita.ppv@gmail.com>
Sat, 13 Mar 2021 10:34:58 +0000 (11:34 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Sat, 13 Mar 2021 10:41:15 +0000 (11:41 +0100)
commit9080444f3311d62a98c28ce5a72b39da9e54e3cc
tree81973cb0887f17f74bd647bbfa9c75f051ec5c07
parentdabd6abbcd8ead8a16c2d6e0b2571f86c8e033a3
[MemCpyOpt] Don't generate zero-size memset

If a memset destination is overwritten by a memcpy and the sizes
are exactly the same, then the memset is simply dead. We can
directly drop it, instead of replacing it with a memset of zero
size, which is particularly ugly for the case of a dynamic size.
llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
llvm/test/Transforms/MemCpyOpt/memset-memcpy-redundant-memset.ll
llvm/test/Transforms/MemCpyOpt/preserve-memssa.ll