[llvm] d9fc3d8 - [NewPM] Replace 'kasan-module' by 'asan-module<kernel>'
Bjorn Pettersson via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 16 05:59:51 PDT 2021
Author: Bjorn Pettersson
Date: 2021-09-16T14:58:42+02:00
New Revision: d9fc3d879e6da153f9b892642e2fe28bed6254a7
URL: https://github.com/llvm/llvm-project/commit/d9fc3d879e6da153f9b892642e2fe28bed6254a7
DIFF: https://github.com/llvm/llvm-project/commit/d9fc3d879e6da153f9b892642e2fe28bed6254a7.diff
LOG: [NewPM] Replace 'kasan-module' by 'asan-module<kernel>'
Change the asan-module pass into a MODULE_PASS_WITH_PARAMS in the
pass registry, and add a single parameter called 'kernel' that
can be set instead of having a special pass name 'kasan-module'
to trigger that special pass config.
Main reason is to make sure that we have a unique mapping from
ClassName to PassName in the new passmanager framework, making it
possible to correctly identify the passes when dealing with options
such as -print-after and -print-pipeline-passes.
This is a follow-up to D105006 and D105007.
Added:
Modified:
llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h
llvm/lib/Passes/PassBuilder.cpp
llvm/lib/Passes/PassRegistry.def
llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h b/llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h
index 52581ffad46b..d4eda186a05b 100644
--- a/llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h
+++ b/llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h
@@ -136,6 +136,8 @@ class ModuleAddressSanitizerPass
bool UseOdrIndicator = false,
AsanDtorKind DestructorKind = AsanDtorKind::Global);
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
+ void printPipeline(raw_ostream &OS,
+ function_ref<StringRef(StringRef)> MapClassName2PassName);
static bool isRequired() { return true; }
private:
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp
index a868f103f932..cda24c8a35ea 100644
--- a/llvm/lib/Passes/PassBuilder.cpp
+++ b/llvm/lib/Passes/PassBuilder.cpp
@@ -574,6 +574,10 @@ Expected<bool> parseLowerMatrixIntrinsicsPassOptions(StringRef Params) {
return parseSinglePassOption(Params, "minimal", "LowerMatrixIntrinsics");
}
+Expected<bool> parseModuleAddressSanitizerPassOptions(StringRef Params) {
+ return parseSinglePassOption(Params, "kernel", "ModuleAddressSanitizer");
+}
+
Expected<AddressSanitizerOptions> parseASanPassOptions(StringRef Params) {
AddressSanitizerOptions Result;
while (!Params.empty()) {
diff --git a/llvm/lib/Passes/PassRegistry.def b/llvm/lib/Passes/PassRegistry.def
index 689ae6263466..bb71ebe4a6bc 100644
--- a/llvm/lib/Passes/PassRegistry.def
+++ b/llvm/lib/Passes/PassRegistry.def
@@ -109,10 +109,8 @@ MODULE_PASS("synthetic-counts-propagation", SyntheticCountsPropagation())
MODULE_PASS("verify", VerifierPass())
MODULE_PASS("wholeprogramdevirt", WholeProgramDevirtPass())
MODULE_PASS("dfsan", DataFlowSanitizerPass())
-MODULE_PASS("asan-module", ModuleAddressSanitizerPass(/*CompileKernel=*/false, false, true, false))
MODULE_PASS("msan-module", ModuleMemorySanitizerPass({}))
MODULE_PASS("tsan-module", ModuleThreadSanitizerPass())
-MODULE_PASS("kasan-module", ModuleAddressSanitizerPass(/*CompileKernel=*/true, false, true, false))
MODULE_PASS("sancov-module", ModuleSanitizerCoveragePass())
MODULE_PASS("memprof-module", ModuleMemProfilerPass())
MODULE_PASS("poison-checking", PoisonCheckingPass())
@@ -138,6 +136,15 @@ MODULE_PASS_WITH_PARAMS("hwasan",
},
parseHWASanPassOptions,
"kernel;recover")
+MODULE_PASS_WITH_PARAMS("asan-module",
+ "ModuleAddressSanitizerPass",
+ [](bool CompileKernel) {
+ return ModuleAddressSanitizerPass(CompileKernel,
+ false, true,
+ false);
+ },
+ parseModuleAddressSanitizerPassOptions,
+ "kernel")
#undef MODULE_PASS_WITH_PARAMS
#ifndef CGSCC_ANALYSIS
diff --git a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
index b2cb6233c851..65c94597c734 100644
--- a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
@@ -1283,6 +1283,16 @@ void AddressSanitizerPass::printPipeline(
OS << ">";
}
+void ModuleAddressSanitizerPass::printPipeline(
+ raw_ostream &OS, function_ref<StringRef(StringRef)> MapClassName2PassName) {
+ static_cast<PassInfoMixin<ModuleAddressSanitizerPass> *>(this)->printPipeline(
+ OS, MapClassName2PassName);
+ OS << "<";
+ if (CompileKernel)
+ OS << "kernel";
+ OS << ">";
+}
+
ModuleAddressSanitizerPass::ModuleAddressSanitizerPass(
bool CompileKernel, bool Recover, bool UseGlobalGC, bool UseOdrIndicator,
AsanDtorKind DestructorKind)
More information about the llvm-commits
mailing list