From: serge-sans-paille Date: Thu, 4 Jun 2020 07:13:11 +0000 (+0200) Subject: Fix return status of AddressSanitizer pass X-Git-Tag: llvmorg-12-init~3998 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2fc085e0e5f6d78630e7d3648b389f1cd62b6e36;p=platform%2Fupstream%2Fllvm.git Fix return status of AddressSanitizer pass Differential Revision: https://reviews.llvm.org/D81240 --- diff --git a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp index f622702..55f58a6 100644 --- a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp @@ -644,7 +644,7 @@ struct AddressSanitizer { bool suppressInstrumentationSiteForDebug(int &Instrumented); bool instrumentFunction(Function &F, const TargetLibraryInfo *TLI); bool maybeInsertAsanInitAtFunctionEntry(Function &F); - void maybeInsertDynamicShadowAtFunctionEntry(Function &F); + bool maybeInsertDynamicShadowAtFunctionEntry(Function &F); void markEscapedLocalAllocas(Function &F); private: @@ -2563,10 +2563,10 @@ bool AddressSanitizer::maybeInsertAsanInitAtFunctionEntry(Function &F) { return false; } -void AddressSanitizer::maybeInsertDynamicShadowAtFunctionEntry(Function &F) { +bool AddressSanitizer::maybeInsertDynamicShadowAtFunctionEntry(Function &F) { // Generate code only when dynamic addressing is needed. if (Mapping.Offset != kDynamicShadowSentinel) - return; + return false; IRBuilder<> IRB(&F.front().front()); if (Mapping.InGlobal) { @@ -2588,6 +2588,7 @@ void AddressSanitizer::maybeInsertDynamicShadowAtFunctionEntry(Function &F) { kAsanShadowMemoryDynamicAddress, IntptrTy); LocalDynamicShadow = IRB.CreateLoad(IntptrTy, GlobalDynamicAddress); } + return true; } void AddressSanitizer::markEscapedLocalAllocas(Function &F) { @@ -2649,7 +2650,7 @@ bool AddressSanitizer::instrumentFunction(Function &F, FunctionStateRAII CleanupObj(this); - maybeInsertDynamicShadowAtFunctionEntry(F); + FunctionModified |= maybeInsertDynamicShadowAtFunctionEntry(F); // We can't instrument allocas used with llvm.localescape. Only static allocas // can be passed to that intrinsic.