Skip to content

Commit e5a41f0

Browse files
committed
Revert "[IR] Lazily initialize the class to pass name mapping (NFC) (#96321)"
My attempt to fix the Windows build made things worse, revert entirely for now. This reverts commit e7137f2. This reverts commit 6eaf204. This reverts commit 957dc43.
1 parent 73cf014 commit e5a41f0

19 files changed

+48
-34
lines changed

llvm/include/llvm/IR/PassInstrumentation.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -149,11 +149,6 @@ class PassInstrumentationCallbacks {
149149
AnalysesClearedCallbacks.emplace_back(std::move(C));
150150
}
151151

152-
template <typename CallableT>
153-
void registerClassToPassNameCallback(CallableT C) {
154-
ClassToPassNameCallbacks.emplace_back(std::move(C));
155-
}
156-
157152
/// Add a class name to pass name mapping for use by pass instrumentation.
158153
void addClassToPassName(StringRef ClassName, StringRef PassName);
159154
/// Get the pass name for a given pass class name.
@@ -190,7 +185,6 @@ class PassInstrumentationCallbacks {
190185
SmallVector<llvm::unique_function<AnalysesClearedFunc>, 4>
191186
AnalysesClearedCallbacks;
192187

193-
SmallVector<llvm::unique_function<void ()>, 4> ClassToPassNameCallbacks;
194188
DenseMap<StringRef, std::string> ClassToPassName;
195189
};
196190

llvm/include/llvm/Passes/TargetPassRegistry.inc

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121
#error "must provide <Target>PassRegistry.def"
2222
#endif
2323

24-
auto *PIC = PB.getPassInstrumentationCallbacks();
25-
if (PIC) {
26-
PIC->registerClassToPassNameCallback([&]() {
24+
if (PopulateClassToPassNames) {
25+
auto *PIC = PB.getPassInstrumentationCallbacks();
26+
2727
#define ADD_CLASS_PASS_TO_PASS_NAME(NAME, CREATE_PASS) \
2828
PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME);
2929
#define ADD_CLASS_PASS_TO_PASS_NAME_WITH_PARAMS(NAME, CLASS) \
@@ -69,7 +69,6 @@ if (PIC) {
6969
#undef MACHINE_FUNCTION_PASS_WITH_PARAMS
7070
#undef ADD_CLASS_PASS_TO_PASS_NAME
7171
#undef ADD_CLASS_PASS_TO_PASS_NAME_WITH_PARAMS
72-
});
7372
}
7473

7574
#define ADD_PASS(NAME, CREATE_PASS) \

llvm/include/llvm/Target/TargetMachine.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,8 @@ class TargetMachine {
369369

370370
/// Allow the target to modify the pass pipeline.
371371
// TODO: Populate all pass names by using <Target>PassRegistry.def.
372-
virtual void registerPassBuilderCallbacks(PassBuilder &) {}
372+
virtual void registerPassBuilderCallbacks(PassBuilder &,
373+
bool PopulateClassToPassNames) {}
373374

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

llvm/lib/IR/PassInstrumentation.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,6 @@ void PassInstrumentationCallbacks::addClassToPassName(StringRef ClassName,
2424

2525
StringRef
2626
PassInstrumentationCallbacks::getPassNameForClassName(StringRef ClassName) {
27-
if (!ClassToPassNameCallbacks.empty()) {
28-
for (auto &Fn : ClassToPassNameCallbacks)
29-
Fn();
30-
ClassToPassNameCallbacks.clear();
31-
}
3227
return ClassToPassName[ClassName];
3328
}
3429

llvm/lib/Passes/PassBuilder.cpp

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,18 @@ AnalysisKey NoOpLoopAnalysis::Key;
325325

326326
namespace {
327327

328+
/// Whether or not we should populate a PassInstrumentationCallbacks's class to
329+
/// pass name map.
330+
///
331+
/// This is for optimization purposes so we don't populate it if we never use
332+
/// it. This should be updated if new pass instrumentation wants to use the map.
333+
/// We currently only use this for --print-before/after.
334+
bool shouldPopulateClassToPassNames() {
335+
return PrintPipelinePasses || !printBeforePasses().empty() ||
336+
!printAfterPasses().empty() || !isFilterPassesEmpty() ||
337+
TargetPassConfig::hasLimitedCodeGenPipeline();
338+
}
339+
328340
// A pass for testing -print-on-crash.
329341
// DO NOT USE THIS EXCEPT FOR TESTING!
330342
class TriggerCrashPass : public PassInfoMixin<TriggerCrashPass> {
@@ -404,10 +416,10 @@ PassBuilder::PassBuilder(TargetMachine *TM, PipelineTuningOptions PTO,
404416
std::optional<PGOOptions> PGOOpt,
405417
PassInstrumentationCallbacks *PIC)
406418
: TM(TM), PTO(PTO), PGOOpt(PGOOpt), PIC(PIC) {
419+
bool ShouldPopulateClassToPassNames = PIC && shouldPopulateClassToPassNames();
407420
if (TM)
408-
TM->registerPassBuilderCallbacks(*this);
409-
if (PIC) {
410-
PIC->registerClassToPassNameCallback([PIC]() {
421+
TM->registerPassBuilderCallbacks(*this, ShouldPopulateClassToPassNames);
422+
if (ShouldPopulateClassToPassNames) {
411423
#define MODULE_PASS(NAME, CREATE_PASS) \
412424
PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME);
413425
#define MODULE_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \
@@ -441,7 +453,6 @@ PassBuilder::PassBuilder(TargetMachine *TM, PipelineTuningOptions PTO,
441453
#define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS) \
442454
PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME);
443455
#include "llvm/Passes/MachinePassRegistry.def"
444-
});
445456
}
446457
}
447458

llvm/lib/Target/AArch64/AArch64TargetMachine.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -554,7 +554,8 @@ class AArch64PassConfig : public TargetPassConfig {
554554

555555
} // end anonymous namespace
556556

557-
void AArch64TargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
557+
void AArch64TargetMachine::registerPassBuilderCallbacks(
558+
PassBuilder &PB, bool PopulateClassToPassNames) {
558559

559560
PB.registerLateLoopOptimizationsEPCallback(
560561
[=](LoopPassManager &LPM, OptimizationLevel Level) {

llvm/lib/Target/AArch64/AArch64TargetMachine.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ class AArch64TargetMachine : public LLVMTargetMachine {
4343
// Pass Pipeline Configuration
4444
TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
4545

46-
void registerPassBuilderCallbacks(PassBuilder &PB) override;
46+
void registerPassBuilderCallbacks(PassBuilder &PB,
47+
bool PopulateClassToPassNames) override;
4748

4849
TargetTransformInfo getTargetTransformInfo(const Function &F) const override;
4950

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -658,7 +658,8 @@ Error AMDGPUTargetMachine::buildCodeGenPipeline(
658658
return CGPB.buildPipeline(MPM, Out, DwoOut, FileType);
659659
}
660660

661-
void AMDGPUTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
661+
void AMDGPUTargetMachine::registerPassBuilderCallbacks(
662+
PassBuilder &PB, bool PopulateClassToPassNames) {
662663

663664
#define GET_PASS_REGISTRY "AMDGPUPassRegistry.def"
664665
#include "llvm/Passes/TargetPassRegistry.inc"

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ class AMDGPUTargetMachine : public LLVMTargetMachine {
5858
const CGPassBuilderOption &Opts,
5959
PassInstrumentationCallbacks *PIC) override;
6060

61-
void registerPassBuilderCallbacks(PassBuilder &PB) override;
61+
void registerPassBuilderCallbacks(PassBuilder &PB,
62+
bool PopulateClassToPassNames) override;
6263
void registerDefaultAliasAnalyses(AAManager &) override;
6364

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

llvm/lib/Target/BPF/BPFTargetMachine.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,8 @@ static Expected<bool> parseBPFPreserveStaticOffsetOptions(StringRef Params) {
113113
"BPFPreserveStaticOffsetPass");
114114
}
115115

116-
void BPFTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
116+
void BPFTargetMachine::registerPassBuilderCallbacks(
117+
PassBuilder &PB, bool PopulateClassToPassNames) {
117118
#define GET_PASS_REGISTRY "BPFPassRegistry.def"
118119
#include "llvm/Passes/TargetPassRegistry.inc"
119120

llvm/lib/Target/BPF/BPFTargetMachine.h

Lines changed: 2 additions & 1 deletion
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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,8 @@ DirectXTargetMachine::DirectXTargetMachine(const Target &T, const Triple &TT,
102102

103103
DirectXTargetMachine::~DirectXTargetMachine() {}
104104

105-
void DirectXTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
105+
void DirectXTargetMachine::registerPassBuilderCallbacks(
106+
PassBuilder &PB, bool PopulateClassToPassNames) {
106107
#define GET_PASS_REGISTRY "DirectXPassRegistry.def"
107108
#include "llvm/Passes/TargetPassRegistry.inc"
108109
}

llvm/lib/Target/DirectX/DirectXTargetMachine.h

Lines changed: 2 additions & 1 deletion
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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,8 @@ HexagonTargetMachine::getSubtargetImpl(const Function &F) const {
312312
return I.get();
313313
}
314314

315-
void HexagonTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
315+
void HexagonTargetMachine::registerPassBuilderCallbacks(
316+
PassBuilder &PB, bool PopulateClassToPassNames) {
316317
#define GET_PASS_REGISTRY "HexagonPassRegistry.def"
317318
#include "llvm/Passes/TargetPassRegistry.inc"
318319

llvm/lib/Target/Hexagon/HexagonTargetMachine.h

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

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

llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp

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

227-
void NVPTXTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
227+
void NVPTXTargetMachine::registerPassBuilderCallbacks(
228+
PassBuilder &PB, bool PopulateClassToPassNames) {
228229
#define GET_PASS_REGISTRY "NVPTXPassRegistry.def"
229230
#include "llvm/Passes/TargetPassRegistry.inc"
230231

llvm/lib/Target/NVPTX/NVPTXTargetMachine.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ class NVPTXTargetMachine : public LLVMTargetMachine {
6666

6767
void registerDefaultAliasAnalyses(AAManager &AAM) override;
6868

69-
void registerPassBuilderCallbacks(PassBuilder &PB) override;
69+
void registerPassBuilderCallbacks(PassBuilder &PB,
70+
bool PopulateClassToPassNames) override;
7071

7172
TargetTransformInfo getTargetTransformInfo(const Function &F) const override;
7273

llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ Error X86CodeGenPassBuilder::addInstSelector(AddMachinePass &addPass) const {
5050

5151
} // namespace
5252

53-
void X86TargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
53+
void X86TargetMachine::registerPassBuilderCallbacks(
54+
PassBuilder &PB, bool PopulateClassToPassNames) {
5455
#define GET_PASS_REGISTRY "X86PassRegistry.def"
5556
#include "llvm/Passes/TargetPassRegistry.inc"
5657
}

llvm/lib/Target/X86/X86TargetMachine.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ class X86TargetMachine final : public LLVMTargetMachine {
6666
SMDiagnostic &Error,
6767
SMRange &SourceRange) const override;
6868

69-
void registerPassBuilderCallbacks(PassBuilder &PB) override;
69+
void registerPassBuilderCallbacks(PassBuilder &PB,
70+
bool PopulateClassToPassNames) override;
7071

7172
Error buildCodeGenPipeline(ModulePassManager &, raw_pwrite_stream &,
7273
raw_pwrite_stream *, CodeGenFileType,

0 commit comments

Comments
 (0)