Author: Arthur Eubanks Date: 2020-05-07T08:21:35-07:00 New Revision: 48451ee6a7eed95856d6290f14626e871a073601
URL: https://github.com/llvm/llvm-project/commit/48451ee6a7eed95856d6290f14626e871a073601 DIFF: https://github.com/llvm/llvm-project/commit/48451ee6a7eed95856d6290f14626e871a073601.diff LOG: [MSan] Pass MSan command line options under new pass manager Summary: Properly forward TrackOrigins and Recover user options to the MSan pass under the new pass manager. This makes the number of check-msan failures when ENABLE_EXPERIMENTAL_NEW_PASS_MANAGER is TRUE go from 52 to 2. Based on https://reviews.llvm.org/D77249. Reviewers: nemanjai, vitalybuka, leonardchan Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D79445 Added: Modified: clang/lib/CodeGen/BackendUtil.cpp Removed: ################################################################################ diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index 1abd36080910..a125c96fd00e 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -1016,8 +1016,11 @@ static void addSanitizersAtO0(ModulePassManager &MPM, } if (LangOpts.Sanitize.has(SanitizerKind::Memory)) { - MPM.addPass(MemorySanitizerPass({})); - MPM.addPass(createModuleToFunctionPassAdaptor(MemorySanitizerPass({}))); + bool Recover = CodeGenOpts.SanitizeRecover.has(SanitizerKind::Memory); + int TrackOrigins = CodeGenOpts.SanitizeMemoryTrackOrigins; + MPM.addPass(MemorySanitizerPass({TrackOrigins, Recover, false})); + MPM.addPass(createModuleToFunctionPassAdaptor( + MemorySanitizerPass({TrackOrigins, Recover, false}))); } if (LangOpts.Sanitize.has(SanitizerKind::KernelMemory)) { @@ -1236,12 +1239,16 @@ void EmitAssemblyHelper::EmitAssemblyWithNewPassManager( FPM.addPass(BoundsCheckingPass()); }); if (LangOpts.Sanitize.has(SanitizerKind::Memory)) { - PB.registerPipelineStartEPCallback([](ModulePassManager &MPM) { - MPM.addPass(MemorySanitizerPass({})); - }); + int TrackOrigins = CodeGenOpts.SanitizeMemoryTrackOrigins; + bool Recover = CodeGenOpts.SanitizeRecover.has(SanitizerKind::Memory); + PB.registerPipelineStartEPCallback( + [TrackOrigins, Recover](ModulePassManager &MPM) { + MPM.addPass(MemorySanitizerPass({TrackOrigins, Recover, false})); + }); PB.registerOptimizerLastEPCallback( - [](FunctionPassManager &FPM, PassBuilder::OptimizationLevel Level) { - FPM.addPass(MemorySanitizerPass({})); + [TrackOrigins, Recover](FunctionPassManager &FPM, + PassBuilder::OptimizationLevel Level) { + FPM.addPass(MemorySanitizerPass({TrackOrigins, Recover, false})); }); } if (LangOpts.Sanitize.has(SanitizerKind::Thread)) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits