[MemCpyOpt] Don't hoist store that's not guaranteed to execute
authorNikita Popov <nikita.ppv@gmail.com>
Fri, 9 Oct 2020 19:09:16 +0000 (21:09 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Sat, 10 Oct 2020 08:26:28 +0000 (10:26 +0200)
commit5e855f1e8056ca0800134469ee82e0ff5ad5af59
treecc14bd9294132c2415112a6a5b448246380ef8cf
parent2b96dcebfae65485859d956954f10f409abaae79
[MemCpyOpt] Don't hoist store that's not guaranteed to execute

MemCpyOpt can hoist stores while load+store pairs into memcpy.
This hoisting can currently result in stores being executed that
weren't guaranteed to execute in the original problem.

Differential Revision: https://reviews.llvm.org/D89154
llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
llvm/test/Transforms/MemCpyOpt/fca2memcpy.ll