From: Alexey Samsonov Date: Fri, 28 Dec 2012 09:31:34 +0000 (+0000) Subject: Add proper support for -fsanitize-blacklist= flag for TSan and MSan. Clang part. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e8c0322701ce6ece0c24ab1391915676dd2eba1c;p=clang Add proper support for -fsanitize-blacklist= flag for TSan and MSan. Clang part. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171184 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/BackendUtil.cpp b/lib/CodeGen/BackendUtil.cpp index ea5bcb55f8..4568a2c1c9 100644 --- a/lib/CodeGen/BackendUtil.cpp +++ b/lib/CodeGen/BackendUtil.cpp @@ -136,8 +136,8 @@ public: void EmitAssembly(BackendAction Action, raw_ostream *OS); }; -// We need this wrapper to access LangOpts from extension functions that -// we add to the PassManagerBuilder. +// We need this wrapper to access LangOpts and CGOpts from extension functions +// that we add to the PassManagerBuilder. class PassManagerBuilderWrapper : public PassManagerBuilder { public: PassManagerBuilderWrapper(const CodeGenOptions &CGOpts, @@ -191,12 +191,16 @@ static void addMemorySanitizerPass(const PassManagerBuilder &Builder, const PassManagerBuilderWrapper &BuilderWrapper = static_cast(Builder); const CodeGenOptions &CGOpts = BuilderWrapper.getCGOpts(); - PM.add(createMemorySanitizerPass(CGOpts.MemorySanitizerTrackOrigins)); + PM.add(createMemorySanitizerPass(CGOpts.MemorySanitizerTrackOrigins, + CGOpts.SanitizerBlacklistFile)); } static void addThreadSanitizerPass(const PassManagerBuilder &Builder, PassManagerBase &PM) { - PM.add(createThreadSanitizerPass()); + const PassManagerBuilderWrapper &BuilderWrapper = + static_cast(Builder); + const CodeGenOptions &CGOpts = BuilderWrapper.getCGOpts(); + PM.add(createThreadSanitizerPass(CGOpts.SanitizerBlacklistFile)); } void EmitAssemblyHelper::CreatePasses(TargetMachine *TM) {