From c6515b6a41244c5af0f57528a9527e636bacccb1 Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Fri, 28 Dec 2012 09:31:34 +0000 Subject: [PATCH] Add proper support for -fsanitize-blacklist= flag for TSan and MSan. Clang part. llvm-svn: 171184 --- clang/lib/CodeGen/BackendUtil.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index ea5bcb55f8c1..4568a2c1c96b 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/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) {