[msan] Handle mixed track-origins and keep-going settings (llvm part).
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>
Fri, 31 May 2013 12:04:29 +0000 (12:04 +0000)
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>
Fri, 31 May 2013 12:04:29 +0000 (12:04 +0000)
commit7ae921dbec5db9823c89fa736b2a4c3afe163e4f
treea545dc6200e455e550169cc541e9795e01e22e9a
parent43887bf3e62daab1c8571be8a73741c9275f866a
[msan] Handle mixed track-origins and keep-going settings (llvm part).

Before this change, each module defined a weak_odr global __msan_track_origins
with a value of 1 if origin tracking is enabled, 0 if disabled. If there are
modules with different values, any of them may win. If 0 wins, and there is at
least one module with 1, the program will most likely crash.

With this change, __msan_track_origins is only emitted if origin tracking is
on. Then runtime library detects if there is at least one module with origin
tracking, and enables runtime support for it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182997 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Instrumentation/MemorySanitizer.cpp
test/Instrumentation/MemorySanitizer/msan_basic.ll