summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2012-01-11 18:15:23 +0000
committerKostya Serebryany <kcc@google.com>2012-01-11 18:15:23 +0000
commit687d0781926e996d51fc7cd11e3b03d1cb9f6b1b (patch)
tree2979068412be426998fd3f7ee5d8c16ea663ec39 /llvm/lib
parent6635ae1c178fa823cb769376a1c3fbc1539ae8d3 (diff)
downloadbcm5719-llvm-687d0781926e996d51fc7cd11e3b03d1cb9f6b1b.tar.gz
bcm5719-llvm-687d0781926e996d51fc7cd11e3b03d1cb9f6b1b.zip
[asan] extend the workaround for http://llvm.org/bugs/show_bug.cgi?id=11395: don't instrument the function at all on x86_32 if it has a large asm blob
llvm-svn: 147953
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
index dbd9ebaf55c..e645a9fdbdd 100644
--- a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
@@ -617,6 +617,7 @@ bool AddressSanitizer::handleFunction(Module &M, Function &F) {
TempsToInstrument.clear();
for (BasicBlock::iterator BI = FI->begin(), BE = FI->end();
BI != BE; ++BI) {
+ if (LooksLikeCodeInBug11395(BI)) return false;
if ((isa<LoadInst>(BI) && ClInstrumentReads) ||
(isa<StoreInst>(BI) && ClInstrumentWrites)) {
Value *Addr = getLDSTOperand(BI);
@@ -792,7 +793,6 @@ bool AddressSanitizer::poisonStackInFunction(Module &M, Function &F) {
BasicBlock &BB = *FI;
for (BasicBlock::iterator BI = BB.begin(), BE = BB.end();
BI != BE; ++BI) {
- if (LooksLikeCodeInBug11395(BI)) return false;
if (isa<ReturnInst>(BI)) {
RetVec.push_back(BI);
continue;
OpenPOWER on IntegriCloud