Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions llvm/include/llvm/Passes/TargetPassRegistry.inc
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,42 @@ PB.registerPipelineParsingCallback([=](StringRef Name, LoopPassManager &PM,
return false;
});

PB.registerPipelineParsingCallback([=](StringRef Name, ModulePassManager &PM,
ArrayRef<PassBuilder::PipelineElement>) {
#define MODULE_CALLBACK(NAME, INVOKE) if (Name == NAME) { PB.INVOKE(PM, OptimizationLevel::O2); return true; }
#include GET_PASS_REGISTRY
#undef MODULE_CALLBACK
#define MODULE_LTO_CALLBACK(NAME, INVOKE) if (Name == NAME) { PB.INVOKE(PM, OptimizationLevel::O2, ThinOrFullLTOPhase::None); return true; }
#include GET_PASS_REGISTRY
#undef MODULE_LTO_CALLBACK
return false;
});

PB.registerPipelineParsingCallback([=](StringRef Name, FunctionPassManager &PM,
ArrayRef<PassBuilder::PipelineElement>) {
#define FUNCTION_CALLBACK(NAME, INVOKE) if (Name == NAME) { PB.INVOKE(PM, OptimizationLevel::O2); return true; }
#include GET_PASS_REGISTRY
#undef FUNCTION_CALLBACK
return false;
});


PB.registerPipelineParsingCallback([=](StringRef Name, CGSCCPassManager &CGPM,
ArrayRef<PassBuilder::PipelineElement>) {
#define CGSCC_CALLBACK(NAME, INVOKE) if (Name == NAME) { PB.INVOKE(CGPM, OptimizationLevel::O2); return true; }
#include GET_PASS_REGISTRY
#undef CGSCC_CALLBACK
return false;
});
PB.registerPipelineParsingCallback([=](StringRef Name, LoopPassManager &PM,
ArrayRef<PassBuilder::PipelineElement>) {
#define LOOP_CALLBACK(NAME, INVOKE) if (Name == NAME) { PB.INVOKE(PM, OptimizationLevel::O2); return true; }
#include GET_PASS_REGISTRY
#undef LOOP_CALLBACK
return false;
});


PB.registerPipelineParsingCallback([=](StringRef Name,
MachineFunctionPassManager &PM,
ArrayRef<PassBuilder::PipelineElement>) {
Expand Down
28 changes: 27 additions & 1 deletion llvm/lib/Passes/PassRegistry.def
Original file line number Diff line number Diff line change
Expand Up @@ -725,7 +725,6 @@ FUNCTION_PASS_WITH_PARAMS(
return ExpandFpPass(TM, OL);
},
parseExpandFpOptions, "opt-level=N")

#undef FUNCTION_PASS_WITH_PARAMS

#ifndef LOOPNEST_PASS
Expand Down Expand Up @@ -804,3 +803,30 @@ LOOP_PASS_WITH_PARAMS(
},
parseLoopUnswitchOptions, "nontrivial;no-nontrivial;trivial;no-trivial")
#undef LOOP_PASS_WITH_PARAMS

#ifdef MODULE_CALLBACK
MODULE_CALLBACK("PipelineStartCallbacks", invokePipelineStartEPCallbacks)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: this doesn't follow naming conventions in this file for passes, this should probably be something like callbacks-pipeline-start

#endif

// There are some full lto specific ones that are ignored here for now
#ifdef MODULE_LTO_CALLBACK
MODULE_LTO_CALLBACK("PipelineEarlySimplificationCallbacks", invokePipelineEarlySimplificationEPCallbacks)
MODULE_LTO_CALLBACK("OptimizerEarlyCallbacks", invokeOptimizerEarlyEPCallbacks)
MODULE_LTO_CALLBACK("OptimizerLastCallbacks", invokeOptimizerLastEPCallbacks)
#endif

#ifdef FUNCTION_CALLBACK
FUNCTION_CALLBACK("PeepholeCallbacks", invokePeepholeEPCallbacks)
FUNCTION_CALLBACK("ScalarOptimizerLateCallbacks", invokeScalarOptimizerLateEPCallbacks)
FUNCTION_CALLBACK("VectorizerStartCallbacks", invokeVectorizerStartEPCallbacks)
#endif

#ifdef LOOP_CALLBACK
LOOP_CALLBACK("LateLoopOptimizationsCallbacks", invokeLateLoopOptimizationsEPCallbacks)
LOOP_CALLBACK("LoopOptimizerEndCallbacks", invokeLoopOptimizerEndEPCallbacks)
#endif

#ifdef CGSCC_CALLBACK
CGSCC_CALLBACK("CGSCCOptimizerLateCallbacks", invokeCGSCCOptimizerLateEPCallbacks)
#endif

Loading