[llvm] c5794f7 - [Attributor][PM] Introduce `-attributor-enable={none,cgscc,module,all}`
Johannes Doerfert via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 21 13:24:09 PDT 2020
Author: Johannes Doerfert
Date: 2020-04-21T15:22:10-05:00
New Revision: c5794f77eb4a863f1b540222a82e6476f8892767
URL: https://github.com/llvm/llvm-project/commit/c5794f77eb4a863f1b540222a82e6476f8892767
DIFF: https://github.com/llvm/llvm-project/commit/c5794f77eb4a863f1b540222a82e6476f8892767.diff
LOG: [Attributor][PM] Introduce `-attributor-enable={none,cgscc,module,all}`
The old command line option `-attributor-disable` was too coarse grained
as we want to measure the effects of the module or cgscc pass without
the other as well.
Since `none` is the default there is no real functional change.
Reviewed By: lebedev.ri
Differential Revision: https://reviews.llvm.org/D78571
Added:
Modified:
llvm/include/llvm/Transforms/IPO/Attributor.h
llvm/lib/Passes/PassBuilder.cpp
llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/Transforms/IPO/Attributor.h b/llvm/include/llvm/Transforms/IPO/Attributor.h
index be90b8d1b7fa..d934c4473ca8 100644
--- a/llvm/include/llvm/Transforms/IPO/Attributor.h
+++ b/llvm/include/llvm/Transforms/IPO/Attributor.h
@@ -2862,6 +2862,14 @@ struct AAValueConstantRange : public IntegerRangeState,
static const char ID;
};
+/// Run options, used by the pass manager.
+enum AttributorRunOption {
+ NONE = 0,
+ MODULE = 1 << 0,
+ CGSCC = 1 << 1,
+ ALL = MODULE | CGSCC
+};
+
} // end namespace llvm
#endif // LLVM_TRANSFORMS_IPO_FUNCTIONATTRS_H
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp
index 0620c9553836..5647d9dddca4 100644
--- a/llvm/lib/Passes/PassBuilder.cpp
+++ b/llvm/lib/Passes/PassBuilder.cpp
@@ -258,7 +258,7 @@ extern cl::opt<bool> EnableOrderFileInstrumentation;
extern cl::opt<bool> FlattenedProfileUsed;
-extern cl::opt<bool> DisableAttributor;
+extern cl::opt<AttributorRunOption> AttributorRun;
const PassBuilder::OptimizationLevel PassBuilder::OptimizationLevel::O0 = {
/*SpeedLevel*/ 0,
@@ -768,7 +768,7 @@ PassBuilder::buildModuleSimplificationPipeline(OptimizationLevel Level,
true /* SamplePGO */));
}
- if (!DisableAttributor)
+ if (AttributorRun & AttributorRunOption::MODULE)
MPM.addPass(AttributorPass());
// Interprocedural constant propagation now that basic cleanup has occurred
@@ -852,7 +852,7 @@ PassBuilder::buildModuleSimplificationPipeline(OptimizationLevel Level,
IP.HotCallSiteThreshold = 0;
MainCGPipeline.addPass(InlinerPass(IP));
- if (!DisableAttributor)
+ if (AttributorRun & AttributorRunOption::CGSCC)
MainCGPipeline.addPass(AttributorCGSCCPass());
if (PTO.Coroutines)
diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
index b32f80ce393b..50ec49b9f4a7 100644
--- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
+++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
@@ -153,10 +153,17 @@ static cl::opt<bool>
EnableMatrix("enable-matrix", cl::init(false), cl::Hidden,
cl::desc("Enable lowering of the matrix intrinsics"));
-cl::opt<bool> DisableAttributor(
- "attributor-disable", cl::Hidden,
- cl::desc("Disable the attributor inter-procedural deduction pass."),
- cl::init(true));
+cl::opt<AttributorRunOption> AttributorRun(
+ "attributor-enable", cl::Hidden, cl::init(AttributorRunOption::NONE),
+ cl::desc("Enable the attributor inter-procedural deduction pass."),
+ cl::values(clEnumValN(AttributorRunOption::ALL, "all",
+ "enable all attributor runs"),
+ clEnumValN(AttributorRunOption::MODULE, "module",
+ "enable module-wide attributor runs"),
+ clEnumValN(AttributorRunOption::CGSCC, "cgscc",
+ "enable call graph SCC attributor runs"),
+ clEnumValN(AttributorRunOption::NONE, "none",
+ "disable attributor runs")));
PassManagerBuilder::PassManagerBuilder() {
OptLevel = 2;
@@ -552,7 +559,7 @@ void PassManagerBuilder::populateModulePassManager(
MPM.add(createInferFunctionAttrsLegacyPass());
// Infer attributes on declarations, call sites, arguments, etc.
- if (!DisableAttributor)
+ if (AttributorRun & AttributorRunOption::MODULE)
MPM.add(createAttributorLegacyPass());
addExtensionsToPM(EP_ModuleOptimizerEarly, MPM);
@@ -601,7 +608,7 @@ void PassManagerBuilder::populateModulePassManager(
}
// Infer attributes on declarations, call sites, arguments, etc. for an SCC.
- if (!DisableAttributor)
+ if (AttributorRun & AttributorRunOption::CGSCC)
MPM.add(createAttributorCGSCCLegacyPass());
// Try to perform OpenMP specific optimizations. This is a (quick!) no-op if
@@ -888,7 +895,7 @@ void PassManagerBuilder::addLTOOptimizationPasses(legacy::PassManagerBase &PM) {
PM.add(createCalledValuePropagationPass());
// Infer attributes on declarations, call sites, arguments, etc.
- if (!DisableAttributor)
+ if (AttributorRun & AttributorRunOption::MODULE)
PM.add(createAttributorLegacyPass());
}
@@ -943,7 +950,7 @@ void PassManagerBuilder::addLTOOptimizationPasses(legacy::PassManagerBase &PM) {
addPGOInstrPasses(PM, /* IsCS */ true);
// Infer attributes on declarations, call sites, arguments, etc. for an SCC.
- if (!DisableAttributor)
+ if (AttributorRun & AttributorRunOption::CGSCC)
PM.add(createAttributorCGSCCLegacyPass());
// Try to perform OpenMP specific optimizations. This is a (quick!) no-op if
More information about the llvm-commits
mailing list