Msan has default handler for unknown instructions which
previously applied to these as well. However depending on
mask, not all pointers or passthru part will be used. This
allows other passes to insert undef into sum arguments.
As result, default strict instruction handler can produce false reports.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp | ||
---|---|---|
3270 | "Store shadow"? | |
3276–3277 | What is this for? | |
3298 | not 2? | |
3309 | "Check Loaded shadow"? | |
llvm/test/Instrumentation/MemorySanitizer/masked-store-load.ll | ||
359–370 | I thought this would have been swept into the implementation (as it was elsewhere). |
llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp | ||
---|---|---|
3276–3277 | Maybe move to https://reviews.llvm.org/D133682, as you did for handleMaskedScatter. | |
3298 | I see you using it in https://reviews.llvm.org/D133682. |
comments
llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp | ||
---|---|---|
3309 | Actually Scatter it kind of store, so we need to store the shadown | |
llvm/test/Instrumentation/MemorySanitizer/masked-store-load.ll | ||
359–370 | This is from introduced if (ClCheckAccessAddress) { insertShadowCheck(Ptr, &I); insertShadowCheck(Mask, &I); } |
"Store shadow"?