[PATCH] D83595: [Draft][MSAN] Optimize away poisoning allocas that are always written before load
Gui Andrade via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 31 14:54:12 PDT 2020
guiand added a comment.
In D83595#2188021 <https://reviews.llvm.org/D83595#2188021>, @eugenis wrote:
> In general, this implementation looks pretty complex and easy to get wrong. I'd prefer something along the lines of AArch64StackTagging::collectInitializers - directly calculate the offset for each store/load instruction. It might do some extra work with unrelated memory instructions, but probably not too much.
I'll take a look at `collectInitializers`. As for the current implementation -- yeah, I always figured there would be a better way. But I tried to be pretty conservative with how I implemented it, so while we might miss some stores, we should never "forget" to poison an alloca.
> How do you handle this case?
>
> a = alloca
> b = bitcast a
> lifetime_start b
> store b
>
> When scanning from lifetime_start, this code will never encounter any direct use of a, and would miss the transitive use.
The code currently scans from the alloca, rather than from the lifetime_start. This might make only searching in single BB pretty limiting, since afaict an alloca can be detached from its lifetime region.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D83595/new/
https://reviews.llvm.org/D83595
More information about the llvm-commits
mailing list