This revision was automatically updated to reflect the committed changes. Closed by commit rG3131714f8dac: [NFC][asan] Use AddressSanitizerOptions in ModuleAddressSanitizerPass (authored by vitalybuka).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D113072/new/ https://reviews.llvm.org/D113072 Files: clang/lib/CodeGen/BackendUtil.cpp llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h llvm/lib/Passes/PassRegistry.def llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp llvm/tools/opt/NewPMDriver.cpp
Index: llvm/tools/opt/NewPMDriver.cpp =================================================================== --- llvm/tools/opt/NewPMDriver.cpp +++ llvm/tools/opt/NewPMDriver.cpp @@ -346,7 +346,7 @@ RequireAnalysisPass<ASanGlobalsMetadataAnalysis, Module>()); MPM.addPass( createModuleToFunctionPassAdaptor(AddressSanitizerPass(Opts))); - MPM.addPass(ModuleAddressSanitizerPass()); + MPM.addPass(ModuleAddressSanitizerPass(Opts)); return true; } else if (Name == "asan-function-pipeline") { MPM.addPass( Index: llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp =================================================================== --- llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp +++ llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp @@ -1288,23 +1288,23 @@ static_cast<PassInfoMixin<ModuleAddressSanitizerPass> *>(this)->printPipeline( OS, MapClassName2PassName); OS << "<"; - if (CompileKernel) + if (Options.CompileKernel) OS << "kernel"; OS << ">"; } ModuleAddressSanitizerPass::ModuleAddressSanitizerPass( - bool CompileKernel, bool Recover, bool UseGlobalGC, bool UseOdrIndicator, - AsanDtorKind DestructorKind) - : CompileKernel(CompileKernel), Recover(Recover), UseGlobalGC(UseGlobalGC), + const AddressSanitizerOptions &Options, bool UseGlobalGC, + bool UseOdrIndicator, AsanDtorKind DestructorKind) + : Options(Options), UseGlobalGC(UseGlobalGC), UseOdrIndicator(UseOdrIndicator), DestructorKind(DestructorKind) {} PreservedAnalyses ModuleAddressSanitizerPass::run(Module &M, AnalysisManager<Module> &AM) { GlobalsMetadata &GlobalsMD = AM.getResult<ASanGlobalsMetadataAnalysis>(M); - ModuleAddressSanitizer Sanitizer(M, &GlobalsMD, CompileKernel, Recover, - UseGlobalGC, UseOdrIndicator, - DestructorKind); + ModuleAddressSanitizer Sanitizer(M, &GlobalsMD, Options.CompileKernel, + Options.Recover, UseGlobalGC, + UseOdrIndicator, DestructorKind); if (Sanitizer.instrumentModule(M)) return PreservedAnalyses::none(); return PreservedAnalyses::all(); Index: llvm/lib/Passes/PassRegistry.def =================================================================== --- llvm/lib/Passes/PassRegistry.def +++ llvm/lib/Passes/PassRegistry.def @@ -138,12 +138,10 @@ "kernel;recover") MODULE_PASS_WITH_PARAMS("asan-module", "ModuleAddressSanitizerPass", - [](bool CompileKernel) { - return ModuleAddressSanitizerPass(CompileKernel, - false, true, - false); + [](AddressSanitizerOptions Opts) { + return ModuleAddressSanitizerPass(Opts); }, - parseModuleAddressSanitizerPassOptions, + parseASanPassOptions, "kernel") #undef MODULE_PASS_WITH_PARAMS Index: llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h =================================================================== --- llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h +++ llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h @@ -106,7 +106,7 @@ /// surrounding requested memory to be checked for invalid accesses. class AddressSanitizerPass : public PassInfoMixin<AddressSanitizerPass> { public: - explicit AddressSanitizerPass(AddressSanitizerOptions Options) + AddressSanitizerPass(const AddressSanitizerOptions &Options) : Options(Options){}; PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); void printPipeline(raw_ostream &OS, @@ -125,8 +125,8 @@ class ModuleAddressSanitizerPass : public PassInfoMixin<ModuleAddressSanitizerPass> { public: - explicit ModuleAddressSanitizerPass( - bool CompileKernel = false, bool Recover = false, bool UseGlobalGC = true, + ModuleAddressSanitizerPass( + const AddressSanitizerOptions &Options, bool UseGlobalGC = true, bool UseOdrIndicator = false, AsanDtorKind DestructorKind = AsanDtorKind::Global); PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM); @@ -135,8 +135,7 @@ static bool isRequired() { return true; } private: - bool CompileKernel; - bool Recover; + AddressSanitizerOptions Options; bool UseGlobalGC; bool UseOdrIndicator; AsanDtorKind DestructorKind; Index: clang/lib/CodeGen/BackendUtil.cpp =================================================================== --- clang/lib/CodeGen/BackendUtil.cpp +++ clang/lib/CodeGen/BackendUtil.cpp @@ -1176,20 +1176,20 @@ auto ASanPass = [&](SanitizerMask Mask, bool CompileKernel) { if (LangOpts.Sanitize.has(Mask)) { - bool Recover = CodeGenOpts.SanitizeRecover.has(Mask); - bool UseAfterScope = CodeGenOpts.SanitizeAddressUseAfterScope; bool UseGlobalGC = asanUseGlobalsGC(TargetTriple, CodeGenOpts); bool UseOdrIndicator = CodeGenOpts.SanitizeAddressUseOdrIndicator; llvm::AsanDtorKind DestructorKind = CodeGenOpts.getSanitizeAddressDtor(); - llvm::AsanDetectStackUseAfterReturnMode UseAfterReturn = - CodeGenOpts.getSanitizeAddressUseAfterReturn(); + AddressSanitizerOptions Opts; + Opts.CompileKernel = CompileKernel; + Opts.Recover = CodeGenOpts.SanitizeRecover.has(Mask); + Opts.UseAfterScope = CodeGenOpts.SanitizeAddressUseAfterScope; + Opts.UseAfterReturn = CodeGenOpts.getSanitizeAddressUseAfterReturn(); MPM.addPass(RequireAnalysisPass<ASanGlobalsMetadataAnalysis, Module>()); - MPM.addPass(ModuleAddressSanitizerPass(CompileKernel, Recover, - UseGlobalGC, UseOdrIndicator, - DestructorKind)); - MPM.addPass(createModuleToFunctionPassAdaptor(AddressSanitizerPass( - {CompileKernel, Recover, UseAfterScope, UseAfterReturn}))); + MPM.addPass(ModuleAddressSanitizerPass( + Opts, UseGlobalGC, UseOdrIndicator, DestructorKind)); + MPM.addPass( + createModuleToFunctionPassAdaptor(AddressSanitizerPass(Opts))); } }; ASanPass(SanitizerKind::Address, false);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits