diff options
author | Nikita Popov <npopov@redhat.com> | 2024-06-24 10:31:32 +0200 |
---|---|---|
committer | Nikita Popov <npopov@redhat.com> | 2024-06-24 10:32:03 +0200 |
commit | e5a41f0afc152cc24b8fef3aa177ef53b2e77c43 (patch) | |
tree | 730a372a1912ff6099a841dc86d37f8415c81ec6 /llvm/lib/Passes/PassBuilder.cpp | |
parent | 73cf014223fed1947f725f7debcf19b8f54448b5 (diff) | |
download | llvm-e5a41f0afc152cc24b8fef3aa177ef53b2e77c43.zip llvm-e5a41f0afc152cc24b8fef3aa177ef53b2e77c43.tar.gz llvm-e5a41f0afc152cc24b8fef3aa177ef53b2e77c43.tar.bz2 |
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 e7137f2fed5cfee822ae3c4c6d39188adb59a16c.
This reverts commit 6eaf204dbb0a6a81cddfd02f625c130f7bb1aae5.
This reverts commit 957dc4366dd2ce9d5d2991c3ad76bbf438e9954e.
Diffstat (limited to 'llvm/lib/Passes/PassBuilder.cpp')
-rw-r--r-- | llvm/lib/Passes/PassBuilder.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp index 12ef995..f819345 100644 --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -325,6 +325,18 @@ AnalysisKey NoOpLoopAnalysis::Key; namespace { +/// Whether or not we should populate a PassInstrumentationCallbacks's class to +/// pass name map. +/// +/// This is for optimization purposes so we don't populate it if we never use +/// it. This should be updated if new pass instrumentation wants to use the map. +/// We currently only use this for --print-before/after. +bool shouldPopulateClassToPassNames() { + return PrintPipelinePasses || !printBeforePasses().empty() || + !printAfterPasses().empty() || !isFilterPassesEmpty() || + TargetPassConfig::hasLimitedCodeGenPipeline(); +} + // A pass for testing -print-on-crash. // DO NOT USE THIS EXCEPT FOR TESTING! class TriggerCrashPass : public PassInfoMixin<TriggerCrashPass> { @@ -404,10 +416,10 @@ PassBuilder::PassBuilder(TargetMachine *TM, PipelineTuningOptions PTO, std::optional<PGOOptions> PGOOpt, PassInstrumentationCallbacks *PIC) : TM(TM), PTO(PTO), PGOOpt(PGOOpt), PIC(PIC) { + bool ShouldPopulateClassToPassNames = PIC && shouldPopulateClassToPassNames(); if (TM) - TM->registerPassBuilderCallbacks(*this); - if (PIC) { - PIC->registerClassToPassNameCallback([PIC]() { + TM->registerPassBuilderCallbacks(*this, ShouldPopulateClassToPassNames); + if (ShouldPopulateClassToPassNames) { #define MODULE_PASS(NAME, CREATE_PASS) \ PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); #define MODULE_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) \ @@ -441,7 +453,6 @@ PassBuilder::PassBuilder(TargetMachine *TM, PipelineTuningOptions PTO, #define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS) \ PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); #include "llvm/Passes/MachinePassRegistry.def" - }); } } |