Skip to content

Commit ffb1f20

Browse files
authored
[CodeGen] Add flag to populate target pass names (#76328)
`print-pipeline-passes` can show target pass names.
1 parent d933b88 commit ffb1f20

12 files changed

+26
-13
lines changed

llvm/include/llvm/Target/TargetMachine.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,9 @@ class TargetMachine {
362362
virtual TargetTransformInfo getTargetTransformInfo(const Function &F) const;
363363

364364
/// Allow the target to modify the pass pipeline.
365-
virtual void registerPassBuilderCallbacks(PassBuilder &) {}
365+
// TODO: Populate all pass names by using <Target>PassRegistry.def.
366+
virtual void registerPassBuilderCallbacks(PassBuilder &,
367+
bool PopulateClassToPassNames) {}
366368

367369
/// Allow the target to register alias analyses with the AAManager for use
368370
/// with the new pass manager. Only affects the "default" AAManager.

llvm/lib/Passes/PassBuilder.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -452,9 +452,10 @@ PassBuilder::PassBuilder(TargetMachine *TM, PipelineTuningOptions PTO,
452452
std::optional<PGOOptions> PGOOpt,
453453
PassInstrumentationCallbacks *PIC)
454454
: TM(TM), PTO(PTO), PGOOpt(PGOOpt), PIC(PIC) {
455+
bool ShouldPopulateClassToPassNames = PIC && shouldPopulateClassToPassNames();
455456
if (TM)
456-
TM->registerPassBuilderCallbacks(*this);
457-
if (PIC && shouldPopulateClassToPassNames()) {
457+
TM->registerPassBuilderCallbacks(*this, ShouldPopulateClassToPassNames);
458+
if (ShouldPopulateClassToPassNames) {
458459
#define MODULE_PASS(NAME, CREATE_PASS) \
459460
PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME);
460461
#define MODULE_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -620,7 +620,8 @@ void AMDGPUTargetMachine::registerDefaultAliasAnalyses(AAManager &AAM) {
620620
AAM.registerFunctionAnalysis<AMDGPUAA>();
621621
}
622622

623-
void AMDGPUTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
623+
void AMDGPUTargetMachine::registerPassBuilderCallbacks(
624+
PassBuilder &PB, bool PopulateClassToPassNames) {
624625
PB.registerPipelineParsingCallback(
625626
[this](StringRef PassName, ModulePassManager &PM,
626627
ArrayRef<PassBuilder::PipelineElement>) {

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ class AMDGPUTargetMachine : public LLVMTargetMachine {
5151
return TLOF.get();
5252
}
5353

54-
void registerPassBuilderCallbacks(PassBuilder &PB) override;
54+
void registerPassBuilderCallbacks(PassBuilder &PB,
55+
bool PopulateClassToPassNames) override;
5556
void registerDefaultAliasAnalyses(AAManager &) override;
5657

5758
/// Get the integer value of a null pointer in the given address space.

llvm/lib/Target/BPF/BPFTargetMachine.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,8 @@ TargetPassConfig *BPFTargetMachine::createPassConfig(PassManagerBase &PM) {
108108
return new BPFPassConfig(*this, PM);
109109
}
110110

111-
void BPFTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
111+
void BPFTargetMachine::registerPassBuilderCallbacks(
112+
PassBuilder &PB, bool PopulateClassToPassNames) {
112113
PB.registerPipelineParsingCallback(
113114
[](StringRef PassName, FunctionPassManager &FPM,
114115
ArrayRef<PassBuilder::PipelineElement>) {

llvm/lib/Target/BPF/BPFTargetMachine.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ class BPFTargetMachine : public LLVMTargetMachine {
4242
return TLOF.get();
4343
}
4444

45-
void registerPassBuilderCallbacks(PassBuilder &PB) override;
45+
void registerPassBuilderCallbacks(PassBuilder &PB,
46+
bool PopulateClassToPassNames) override;
4647
};
4748
}
4849

llvm/lib/Target/DirectX/DirectXTargetMachine.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,8 @@ DirectXTargetMachine::DirectXTargetMachine(const Target &T, const Triple &TT,
100100

101101
DirectXTargetMachine::~DirectXTargetMachine() {}
102102

103-
void DirectXTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
103+
void DirectXTargetMachine::registerPassBuilderCallbacks(
104+
PassBuilder &PB, bool PopulateClassToPassNames) {
104105
PB.registerPipelineParsingCallback(
105106
[](StringRef PassName, ModulePassManager &PM,
106107
ArrayRef<PassBuilder::PipelineElement>) {

llvm/lib/Target/DirectX/DirectXTargetMachine.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ class DirectXTargetMachine : public LLVMTargetMachine {
4747
}
4848

4949
TargetTransformInfo getTargetTransformInfo(const Function &F) const override;
50-
void registerPassBuilderCallbacks(PassBuilder &PB) override;
50+
void registerPassBuilderCallbacks(PassBuilder &PB,
51+
bool PopulateClassToPassNames) override;
5152
};
5253
} // namespace llvm
5354

llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,8 @@ HexagonTargetMachine::getSubtargetImpl(const Function &F) const {
274274
return I.get();
275275
}
276276

277-
void HexagonTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
277+
void HexagonTargetMachine::registerPassBuilderCallbacks(
278+
PassBuilder &PB, bool PopulateClassToPassNames) {
278279
PB.registerLateLoopOptimizationsEPCallback(
279280
[=](LoopPassManager &LPM, OptimizationLevel Level) {
280281
LPM.addPass(HexagonLoopIdiomRecognitionPass());

llvm/lib/Target/Hexagon/HexagonTargetMachine.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ class HexagonTargetMachine : public LLVMTargetMachine {
3434
~HexagonTargetMachine() override;
3535
const HexagonSubtarget *getSubtargetImpl(const Function &F) const override;
3636

37-
void registerPassBuilderCallbacks(PassBuilder &PB) override;
37+
void registerPassBuilderCallbacks(PassBuilder &PB,
38+
bool PopulateClassToPassNames) override;
3839
TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
3940
TargetTransformInfo getTargetTransformInfo(const Function &F) const override;
4041

llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,8 @@ void NVPTXTargetMachine::registerDefaultAliasAnalyses(AAManager &AAM) {
225225
AAM.registerFunctionAnalysis<NVPTXAA>();
226226
}
227227

228-
void NVPTXTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
228+
void NVPTXTargetMachine::registerPassBuilderCallbacks(
229+
PassBuilder &PB, bool PopulateClassToPassNames) {
229230
PB.registerPipelineParsingCallback(
230231
[](StringRef PassName, FunctionPassManager &PM,
231232
ArrayRef<PassBuilder::PipelineElement>) {

llvm/lib/Target/NVPTX/NVPTXTargetMachine.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ class NVPTXTargetMachine : public LLVMTargetMachine {
6969

7070
void registerDefaultAliasAnalyses(AAManager &AAM) override;
7171

72-
void registerPassBuilderCallbacks(PassBuilder &PB) override;
72+
void registerPassBuilderCallbacks(PassBuilder &PB,
73+
bool PopulateClassToPassNames) override;
7374

7475
TargetTransformInfo getTargetTransformInfo(const Function &F) const override;
7576

0 commit comments

Comments
 (0)