summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2015-10-14 00:21:05 +0000
committerKostya Serebryany <kcc@google.com>2015-10-14 00:21:05 +0000
commit5cb86d5a401d33e2abc7d65864682f738917e471 (patch)
tree819f68dc6a4fee51ca1d663a05f0e2a301aa25df /llvm/lib/Analysis
parente7dc8bf9c24ca4edd7bbaccf6fe4366208dccff5 (diff)
downloadbcm5719-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.cpp6
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(
OpenPOWER on IntegriCloud