summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
diff options
context:
space:
mode:
authorMike Aizatsky <aizatsky@chromium.org>2015-11-18 20:43:00 +0000
committerMike Aizatsky <aizatsky@chromium.org>2015-11-18 20:43:00 +0000
commitc7810baaa6761fe9771d4b3cba675266e576b19d (patch)
tree584668fee17c97b2e7c41689d5152a77ada3f2dc /llvm/lib/Transforms
parent617c60013dc31e5b768912217bd354b133888796 (diff)
downloadbcm5719-llvm-c7810baaa6761fe9771d4b3cba675266e576b19d.tar.gz
bcm5719-llvm-c7810baaa6761fe9771d4b3cba675266e576b19d.zip
Disable gvn non-local speculative loads under asan.
Summary: Fix for https://llvm.org/bugs/show_bug.cgi?id=25550 Differential Revision: http://reviews.llvm.org/D14763 llvm-svn: 253498
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r--llvm/lib/Transforms/Scalar/GVN.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Scalar/GVN.cpp b/llvm/lib/Transforms/Scalar/GVN.cpp
index 06faa2d76b6..d261b2acae9 100644
--- a/llvm/lib/Transforms/Scalar/GVN.cpp
+++ b/llvm/lib/Transforms/Scalar/GVN.cpp
@@ -1701,6 +1701,10 @@ bool GVN::PerformLoadPRE(LoadInst *LI, AvailValInBlkVect &ValuesPerBlock,
/// Attempt to eliminate a load whose dependencies are
/// non-local by performing PHI construction.
bool GVN::processNonLocalLoad(LoadInst *LI) {
+ // non-local speculations are not allowed under asan.
+ if (LI->getParent()->getParent()->hasFnAttribute(Attribute::SanitizeAddress))
+ return false;
+
// Step 1: Find the non-local dependencies of the load.
LoadDepVect Deps;
MD->getNonLocalPointerDependency(LI, Deps);
OpenPOWER on IntegriCloud