aboutsummaryrefslogtreecommitdiff
path: root/llvm/utils/FileCheck/FileCheck.cpp
diff options
context:
space:
mode:
authorAlexander Potapenko <glider@google.com>2018-07-20 16:28:49 +0000
committerAlexander Potapenko <glider@google.com>2018-07-20 16:28:49 +0000
commit5ff3abbc3151f28b990f14cff844b8724acdb12b (patch)
tree764457281977c2b55d58beeda446faba2c0f5fcf /llvm/utils/FileCheck/FileCheck.cpp
parentc7132031a2a10b2d6fa2333f7e1d397b16014563 (diff)
downloadllvm-5ff3abbc3151f28b990f14cff844b8724acdb12b.zip
llvm-5ff3abbc3151f28b990f14cff844b8724acdb12b.tar.gz
llvm-5ff3abbc3151f28b990f14cff844b8724acdb12b.tar.bz2
[MSan] run materializeChecks() before materializeStores()
When pointer checking is enabled, it's important that every pointer is checked before its value is used. For stores MSan used to generate code that calculates shadow/origin addresses from a pointer before checking it. For userspace this isn't a problem, because the shadow calculation code is quite simple and compiler is able to move it after the check on -O2. But for KMSAN getShadowOriginPtr() creates a runtime call, so we want the check to be performed strictly before that call. Swapping materializeChecks() and materializeStores() resolves the issue: both functions insert code before the given IR location, so the new insertion order guarantees that the code calculating shadow address is between the address check and the memory access. llvm-svn: 337571
Diffstat (limited to 'llvm/utils/FileCheck/FileCheck.cpp')
0 files changed, 0 insertions, 0 deletions