diff options
author | Kostya Serebryany <kcc@google.com> | 2015-10-14 00:21:05 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2015-10-14 00:21:05 +0000 |
commit | 5cb86d5a401d33e2abc7d65864682f738917e471 (patch) | |
tree | 819f68dc6a4fee51ca1d663a05f0e2a301aa25df /llvm/lib/Analysis | |
parent | e7dc8bf9c24ca4edd7bbaccf6fe4366208dccff5 (diff) | |
download | bcm5719-llvm-5cb86d5a401d33e2abc7d65864682f738917e471.tar.gz bcm5719-llvm-5cb86d5a401d33e2abc7d65864682f738917e471.zip |
[asan] Disabling speculative loads under asan. Patch by Mike Aizatsky
llvm-svn: 250259
Diffstat (limited to 'llvm/lib/Analysis')
-rw-r--r-- | llvm/lib/Analysis/ValueTracking.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index 2a93e0d64d6..5caffee8fe7 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -3187,7 +3187,11 @@ bool llvm::isSafeToSpeculativelyExecute(const Value *V, const LoadInst *LI = cast<LoadInst>(Inst); if (!LI->isUnordered() || // Speculative load may create a race that did not exist in the source. - LI->getParent()->getParent()->hasFnAttribute(Attribute::SanitizeThread)) + LI->getParent()->getParent()->hasFnAttribute( + Attribute::SanitizeThread) || + // Speculative load may load data from dirty regions. + LI->getParent()->getParent()->hasFnAttribute( + Attribute::SanitizeAddress)) return false; const DataLayout &DL = LI->getModule()->getDataLayout(); return isDereferenceableAndAlignedPointer( |