diff options
Diffstat (limited to 'lib/CodeGen/BackendUtil.cpp')
-rw-r--r-- | lib/CodeGen/BackendUtil.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/CodeGen/BackendUtil.cpp b/lib/CodeGen/BackendUtil.cpp index 4fe1c80e48..414f65ecf3 100644 --- a/lib/CodeGen/BackendUtil.cpp +++ b/lib/CodeGen/BackendUtil.cpp @@ -139,10 +139,13 @@ public: // we add to the PassManagerBuilder. class PassManagerBuilderWrapper : public PassManagerBuilder { public: - PassManagerBuilderWrapper(const LangOptions &LangOpts) - : PassManagerBuilder(), LangOpts(LangOpts) {} + PassManagerBuilderWrapper(const CodeGenOptions &CGOpts, + const LangOptions &LangOpts) + : PassManagerBuilder(), CGOpts(CGOpts), LangOpts(LangOpts) {} + const CodeGenOptions &getCGOpts() const { return CGOpts; } const LangOptions &getLangOpts() const { return LangOpts; } private: + const CodeGenOptions &CGOpts; const LangOptions &LangOpts; }; @@ -172,11 +175,14 @@ static void addAddressSanitizerPasses(const PassManagerBuilder &Builder, PassManagerBase &PM) { const PassManagerBuilderWrapper &BuilderWrapper = static_cast<const PassManagerBuilderWrapper&>(Builder); + const CodeGenOptions &CGOpts = BuilderWrapper.getCGOpts(); const LangOptions &LangOpts = BuilderWrapper.getLangOpts(); PM.add(createAddressSanitizerFunctionPass(LangOpts.SanitizeInitOrder, LangOpts.SanitizeUseAfterReturn, - LangOpts.SanitizeUseAfterScope)); - PM.add(createAddressSanitizerModulePass(LangOpts.SanitizeInitOrder)); + LangOpts.SanitizeUseAfterScope, + CGOpts.SanitizerBlacklistFile)); + PM.add(createAddressSanitizerModulePass(LangOpts.SanitizeInitOrder, + CGOpts.SanitizerBlacklistFile)); } static void addMemorySanitizerPass(const PassManagerBuilder &Builder, @@ -200,7 +206,7 @@ void EmitAssemblyHelper::CreatePasses(TargetMachine *TM) { Inlining = CodeGenOpts.NoInlining; } - PassManagerBuilderWrapper PMBuilder(LangOpts); + PassManagerBuilderWrapper PMBuilder(CodeGenOpts, LangOpts); PMBuilder.OptLevel = OptLevel; PMBuilder.SizeLevel = CodeGenOpts.OptimizeSize; |