[llvm] [NewPM] Register AsmPrinter passes like normal (PR #215965)

Aiden Grossman via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 12 23:30:15 PDT 2026


https://github.com/boomanaiden154 created https://github.com/llvm/llvm-project/pull/215965

This avoids needing to do anything custom in
registerPassBuilderCallbacks. Also does some cleanup around inconsistent naming.

I'm not really sure why I didn't do this before. Eventually I think we want to delete AsmPrinterBegin and AsmPrinterEnd, but that requires a lot of work that we probably can't do until we delete the LegacyPM version of AsmPrinter.

>From 62f9716096a83514c95d524fd5b7623b4b37813f Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 13 Aug 2026 06:28:44 +0000
Subject: [PATCH] [NewPM] Register AsmPrinter passes like normal

This avoids needing to do anything custom in
registerPassBuilderCallbacks. Also does some cleanup around inconsistent
naming.

I'm not really sure why I didn't do this before. Eventually I think we
want to delete AsmPrinterBegin and AsmPrinterEnd, but that requires a
lot of work that we probably can't do until we delete the LegacyPM
version of AsmPrinter.
---
 llvm/lib/Target/AMDGPU/AMDGPUPassRegistry.def        |  3 +++
 llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp       | 10 ----------
 llvm/lib/Target/BPF/BPFCodeGenPassBuilder.cpp        |  9 ---------
 llvm/lib/Target/BPF/BPFPassRegistry.def              |  3 +++
 llvm/lib/Target/Lanai/LanaiCodeGenPassBuilder.cpp    | 11 +----------
 llvm/lib/Target/Lanai/LanaiPassRegistry.def          |  8 ++++++++
 llvm/lib/Target/MSP430/MSP430CodeGenPassBuilder.cpp  | 11 +----------
 llvm/lib/Target/MSP430/MSP430PassRegistry.def        |  8 ++++++++
 llvm/lib/Target/NVPTX/NVPTXPassRegistry.def          |  3 +++
 llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp         | 10 ----------
 llvm/lib/Target/RISCV/RISCVCodeGenPassBuilder.cpp    | 10 ----------
 llvm/lib/Target/RISCV/RISCVPassRegistry.def          |  8 ++++++++
 .../WebAssembly/WebAssemblyCodeGenPassBuilder.cpp    | 12 +-----------
 .../Target/WebAssembly/WebAssemblyPassRegistry.def   |  3 +++
 llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp        | 11 +----------
 llvm/lib/Target/X86/X86PassRegistry.def              |  3 +++
 llvm/test/CodeGen/Lanai/llc-pipeline-npm.ll          |  2 +-
 17 files changed, 44 insertions(+), 81 deletions(-)

diff --git a/llvm/lib/Target/AMDGPU/AMDGPUPassRegistry.def b/llvm/lib/Target/AMDGPU/AMDGPUPassRegistry.def
index d052f3c73920c..0ab0371705b74 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUPassRegistry.def
+++ b/llvm/lib/Target/AMDGPU/AMDGPUPassRegistry.def
@@ -17,6 +17,8 @@
 #define MODULE_PASS(NAME, CREATE_PASS)
 #endif
 MODULE_PASS("amdgpu-always-inline", AMDGPUAlwaysInlinePass())
+MODULE_PASS("amdgpu-asm-printer-begin", AMDGPUAsmPrinterBeginPass())
+MODULE_PASS("amdgpu-asm-printer-end", AMDGPUAsmPrinterEndPass())
 MODULE_PASS("amdgpu-export-kernel-runtime-handles", AMDGPUExportKernelRuntimeHandlesPass())
 MODULE_PASS("amdgpu-lower-buffer-fat-pointers",
             AMDGPULowerBufferFatPointersPass(*this))
@@ -113,6 +115,7 @@ MACHINE_FUNCTION_ANALYSIS("amdgpu-next-use-analysis", AMDGPUNextUseAnalysisPass(
 #ifndef MACHINE_FUNCTION_PASS
 #define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS)
 #endif
+MACHINE_FUNCTION_PASS("amdgpu-asm-printer", AMDGPUAsmPrinterPass())
 MACHINE_FUNCTION_PASS("amdgpu-insert-delay-alu", AMDGPUInsertDelayAluPass())
 MACHINE_FUNCTION_PASS("amdgpu-isel", AMDGPUISelDAGToDAGPass(*this))
 MACHINE_FUNCTION_PASS("amdgpu-lower-vgpr-encoding", AMDGPULowerVGPREncodingPass())
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
index 30ea659cbf322..6b70838579c62 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
@@ -998,16 +998,6 @@ void AMDGPUTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
 #define GET_PASS_REGISTRY "AMDGPUPassRegistry.def"
 #include "llvm/Passes/TargetPassRegistry.inc"
 
-  // TODO: Move this into the base CodeGenPassBuilder once all
-  // targets that currently implement it have a ported asm-printer pass.
-  if (PIC) {
-    PIC->addClassToPassName(AMDGPUAsmPrinterBeginPass::name(),
-                            "amdgpu-asm-printer-begin");
-    PIC->addClassToPassName(AMDGPUAsmPrinterPass::name(), "amdgpu-asm-printer");
-    PIC->addClassToPassName(AMDGPUAsmPrinterEndPass::name(),
-                            "amdgpu-asm-printer-end");
-  }
-
   PB.registerPipelineParsingCallback(
       [this](StringRef Name, CGSCCPassManager &PM,
              ArrayRef<PassBuilder::PipelineElement> Pipeline) {
diff --git a/llvm/lib/Target/BPF/BPFCodeGenPassBuilder.cpp b/llvm/lib/Target/BPF/BPFCodeGenPassBuilder.cpp
index 089c926189c83..e9d8f2abc06f9 100644
--- a/llvm/lib/Target/BPF/BPFCodeGenPassBuilder.cpp
+++ b/llvm/lib/Target/BPF/BPFCodeGenPassBuilder.cpp
@@ -101,15 +101,6 @@ static Expected<bool> parseBPFPreserveStaticOffsetOptions(StringRef Params) {
 void BPFTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
 #define GET_PASS_REGISTRY "BPFPassRegistry.def"
 #include "llvm/Passes/TargetPassRegistry.inc"
-  // TODO(boomanaiden154): Move this into the base CodeGenPassBuilder once all
-  // targets that currently implement it have a ported asm-printer pass.
-  if (PIC) {
-    PIC->addClassToPassName(BPFAsmPrinterBeginPass::name(),
-                            "bpf-asm-printer-begin");
-    PIC->addClassToPassName(BPFAsmPrinterPass::name(), "bpf-asmprinter");
-    PIC->addClassToPassName(BPFAsmPrinterEndPass::name(),
-                            "bpf-asm-printer-end");
-  }
 
   PB.registerPipelineStartEPCallback(
       [=](ModulePassManager &MPM, OptimizationLevel) {
diff --git a/llvm/lib/Target/BPF/BPFPassRegistry.def b/llvm/lib/Target/BPF/BPFPassRegistry.def
index 3cceb85e2a325..fdfcfc2e8a984 100644
--- a/llvm/lib/Target/BPF/BPFPassRegistry.def
+++ b/llvm/lib/Target/BPF/BPFPassRegistry.def
@@ -16,6 +16,8 @@
 #ifndef MODULE_PASS
 #define MODULE_PASS(NAME, CREATE_PASS)
 #endif
+MODULE_PASS("bpf-asm-printer-begin", BPFAsmPrinterBeginPass())
+MODULE_PASS("bpf-asm-printer-end", BPFAsmPrinterEndPass())
 MODULE_PASS("bpf-check-and-opt-ir", BPFCheckAndAdjustIRPass())
 #undef MODULE_PASS
 
@@ -40,6 +42,7 @@ FUNCTION_PASS_WITH_PARAMS(
 #ifndef MACHINE_FUNCTION_PASS
 #define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS)
 #endif
+MACHINE_FUNCTION_PASS("bpf-asm-printer", BPFAsmPrinterPass())
 MACHINE_FUNCTION_PASS("bpf-mi-expand-stack-arg-pseudos", BPFMIExpandStackArgPseudosPass())
 MACHINE_FUNCTION_PASS("bpf-isel", BPFISelDAGToDAGPass(*this))
 MACHINE_FUNCTION_PASS("bpf-mi-checking", BPFMIPreEmitCheckingPass())
diff --git a/llvm/lib/Target/Lanai/LanaiCodeGenPassBuilder.cpp b/llvm/lib/Target/Lanai/LanaiCodeGenPassBuilder.cpp
index 735a5f0386056..a082e9a807f76 100644
--- a/llvm/lib/Target/Lanai/LanaiCodeGenPassBuilder.cpp
+++ b/llvm/lib/Target/Lanai/LanaiCodeGenPassBuilder.cpp
@@ -73,18 +73,9 @@ void LanaiCodeGenPassBuilder::addAsmPrinterEnd(PassManagerWrapper &PMW) const {
 
 } // namespace
 
-void LanaiTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
+void LanaiTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB){
 #define GET_PASS_REGISTRY "LanaiPassRegistry.def"
 #include "llvm/Passes/TargetPassRegistry.inc"
-  // TODO(boomanaiden154): Move this into the base CodeGenPassBuilder once all
-  // targets that currently implement it have a ported asm-printer pass.
-  if (PIC) {
-    PIC->addClassToPassName(LanaiAsmPrinterBeginPass::name(),
-                            "lanai-asm-printer-begin");
-    PIC->addClassToPassName(LanaiAsmPrinterPass::name(), "lanai-asmprinter");
-    PIC->addClassToPassName(LanaiAsmPrinterEndPass::name(),
-                            "lanai-asm-printer-end");
-  }
 }
 
 Error LanaiTargetMachine::buildCodeGenPipeline(
diff --git a/llvm/lib/Target/Lanai/LanaiPassRegistry.def b/llvm/lib/Target/Lanai/LanaiPassRegistry.def
index ed3c7662bacf3..b5775805e39b8 100644
--- a/llvm/lib/Target/Lanai/LanaiPassRegistry.def
+++ b/llvm/lib/Target/Lanai/LanaiPassRegistry.def
@@ -13,9 +13,17 @@
 
 // NOTE: NO INCLUDE GUARD DESIRED!
 
+#ifndef MODULE_PASS
+#define MODULE_PASS(NAME, CREATE_PASS)
+#endif
+MODULE_PASS("lanai-asm-printer-begin", LanaiAsmPrinterBeginPass())
+MODULE_PASS("lanai-asm-printer-end", LanaiAsmPrinterEndPass())
+#undef MODULE_PASS
+
 #ifndef MACHINE_FUNCTION_PASS
 #define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS)
 #endif
+MACHINE_FUNCTION_PASS("lanai-asm-printer", LanaiAsmPrinterPass())
 MACHINE_FUNCTION_PASS("lanai-delay-slot-fillter", LanaiDelaySlotFillerPass())
 MACHINE_FUNCTION_PASS("lanai-isel", LanaiISelDAGToDAGPass(*this))
 MACHINE_FUNCTION_PASS("lanai-mem-alu-combiner", LanaiMemAluCombinerPass())
diff --git a/llvm/lib/Target/MSP430/MSP430CodeGenPassBuilder.cpp b/llvm/lib/Target/MSP430/MSP430CodeGenPassBuilder.cpp
index 64cfd0d385946..a15ae42891268 100644
--- a/llvm/lib/Target/MSP430/MSP430CodeGenPassBuilder.cpp
+++ b/llvm/lib/Target/MSP430/MSP430CodeGenPassBuilder.cpp
@@ -70,18 +70,9 @@ void MSP430CodeGenPassBuilder::addAsmPrinterEnd(PassManagerWrapper &PMW) const {
 
 } // namespace
 
-void MSP430TargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
+void MSP430TargetMachine::registerPassBuilderCallbacks(PassBuilder &PB){
 #define GET_PASS_REGISTRY "MSP430PassRegistry.def"
 #include "llvm/Passes/TargetPassRegistry.inc"
-  // TODO(boomanaiden154): Move this into the base CodeGenPassBuilder once all
-  // targets that currently implement it have a ported asm-printer pass.
-  if (PIC) {
-    PIC->addClassToPassName(MSP430AsmPrinterBeginPass::name(),
-                            "msp430-asm-printer-begin");
-    PIC->addClassToPassName(MSP430AsmPrinterPass::name(), "msp430-asm-printer");
-    PIC->addClassToPassName(MSP430AsmPrinterEndPass::name(),
-                            "msp430-asm-printer-end");
-  }
 }
 
 Error MSP430TargetMachine::buildCodeGenPipeline(
diff --git a/llvm/lib/Target/MSP430/MSP430PassRegistry.def b/llvm/lib/Target/MSP430/MSP430PassRegistry.def
index 43241e7d85f7b..d4caa8b2c44c6 100644
--- a/llvm/lib/Target/MSP430/MSP430PassRegistry.def
+++ b/llvm/lib/Target/MSP430/MSP430PassRegistry.def
@@ -13,9 +13,17 @@
 
 // NOTE: NO INCLUDE GUARD DESIRED!
 
+#ifndef MODULE_PASS
+#define MODULE_PASS(NAME, CREATE_PASS)
+#endif
+MODULE_PASS("msp430-asm-printer-begin", MSP430AsmPrinterBeginPass())
+MODULE_PASS("msp430-asm-printer-end", MSP430AsmPrinterEndPass())
+#undef MODULE_PASS
+
 #ifndef MACHINE_FUNCTION_PASS
 #define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS)
 #endif
+MACHINE_FUNCTION_PASS("msp430-asm-printer", MSP430AsmPrinterPass())
 MACHINE_FUNCTION_PASS("msp430-isel", MSP430ISelDAGToDAGPass(*this, getOptLevel()))
 MACHINE_FUNCTION_PASS("msp430-branch-select", MSP430BranchSelectPass())
 #undef MACHINE_FUNCTION_PASS
diff --git a/llvm/lib/Target/NVPTX/NVPTXPassRegistry.def b/llvm/lib/Target/NVPTX/NVPTXPassRegistry.def
index 6d30b20631b1c..73778c0fcd344 100644
--- a/llvm/lib/Target/NVPTX/NVPTXPassRegistry.def
+++ b/llvm/lib/Target/NVPTX/NVPTXPassRegistry.def
@@ -17,6 +17,8 @@
 #define MODULE_PASS(NAME, CREATE_PASS)
 #endif
 MODULE_PASS("generic-to-nvvm", GenericToNVVMPass())
+MODULE_PASS("nvptx-asm-printer-begin", NVPTXAsmPrinterBeginPass())
+MODULE_PASS("nvptx-asm-printer-end", NVPTXAsmPrinterEndPass())
 MODULE_PASS("nvptx-lower-args", NVPTXLowerArgsPass(*this))
 MODULE_PASS("nvptx-lower-ctor-dtor", NVPTXCtorDtorLoweringPass())
 MODULE_PASS("nvptx-promote-param-align", NVPTXPromoteParamAlignPass())
@@ -57,6 +59,7 @@ FUNCTION_PASS("nvptx-lower-alloca", NVPTXLowerAllocaPass())
 #ifndef MACHINE_FUNCTION_PASS
 #define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS)
 #endif
+MACHINE_FUNCTION_PASS("nvptx-asm-printer", NVPTXAsmPrinterPass())
 MACHINE_FUNCTION_PASS("nvptx-replace-image-handles",
                       NVPTXReplaceImageHandlesPass())
 MACHINE_FUNCTION_PASS("nvptx-isel", NVPTXISelDAGToDAGPass(*this, getOptLevel()))
diff --git a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
index 2769a50a15359..bedeb9646424c 100644
--- a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
@@ -203,16 +203,6 @@ void NVPTXTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
 #define GET_PASS_REGISTRY "NVPTXPassRegistry.def"
 #include "llvm/Passes/TargetPassRegistry.inc"
 
-  // TODO: Move this into the base CodeGenPassBuilder once all targets that
-  // currently implement it have a ported asm-printer pass.
-  if (PIC) {
-    PIC->addClassToPassName(NVPTXAsmPrinterBeginPass::name(),
-                            "nvptx-asm-printer-begin");
-    PIC->addClassToPassName(NVPTXAsmPrinterPass::name(), "nvptx-asm-printer");
-    PIC->addClassToPassName(NVPTXAsmPrinterEndPass::name(),
-                            "nvptx-asm-printer-end");
-  }
-
   PB.registerPipelineStartEPCallback(
       [this](ModulePassManager &PM, OptimizationLevel Level) {
         // We do not want to fold out calls to nvvm.reflect early if the user
diff --git a/llvm/lib/Target/RISCV/RISCVCodeGenPassBuilder.cpp b/llvm/lib/Target/RISCV/RISCVCodeGenPassBuilder.cpp
index 652d545bfee60..c614b5a7ff6e6 100644
--- a/llvm/lib/Target/RISCV/RISCVCodeGenPassBuilder.cpp
+++ b/llvm/lib/Target/RISCV/RISCVCodeGenPassBuilder.cpp
@@ -218,16 +218,6 @@ void RISCVTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
     if (Level != OptimizationLevel::O0)
       LPM.addPass(LoopIdiomVectorizePass(LoopIdiomVectorizeStyle::Predicated));
   });
-
-  // TODO: Move this into the base CodeGenPassBuilder once all targets that
-  // currently implement it have a ported asm-printer pass.
-  if (PIC) {
-    PIC->addClassToPassName(RISCVAsmPrinterBeginPass::name(),
-                            "riscv-asm-printer-begin");
-    PIC->addClassToPassName(RISCVAsmPrinterPass::name(), "riscv-asm-printer");
-    PIC->addClassToPassName(RISCVAsmPrinterEndPass::name(),
-                            "riscv-asm-printer-end");
-  }
 }
 
 Error RISCVTargetMachine::buildCodeGenPipeline(
diff --git a/llvm/lib/Target/RISCV/RISCVPassRegistry.def b/llvm/lib/Target/RISCV/RISCVPassRegistry.def
index cb8e31724f82b..1b6c007cea8c7 100644
--- a/llvm/lib/Target/RISCV/RISCVPassRegistry.def
+++ b/llvm/lib/Target/RISCV/RISCVPassRegistry.def
@@ -13,6 +13,13 @@
 
 // NOTE: NO INCLUDE GUARD DESIRED!
 
+#ifndef MODULE_PASS
+#define MODULE_PASS(NAME, CREATE_PASS)
+#endif
+MODULE_PASS("riscv-asm-printer-begin", RISCVAsmPrinterBeginPass())
+MODULE_PASS("riscv-asm-printer-end", RISCVAsmPrinterEndPass())
+#undef MODULE_PASS
+
 #ifndef FUNCTION_PASS
 #define FUNCTION_PASS(NAME, CREATE_PASS)
 #endif
@@ -25,5 +32,6 @@ FUNCTION_PASS("riscv-zacas-abi-fix", RISCVZacasABIFixPass(this))
 #ifndef MACHINE_FUNCTION_PASS
 #define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS)
 #endif
+MACHINE_FUNCTION_PASS("riscv-asm-printer", RISCVAsmPrinterPass())
 MACHINE_FUNCTION_PASS("riscv-isel", RISCVISelDAGToDAGPass(*this, getOptLevel()))
 #undef MACHINE_FUNCTION_PASS
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp
index 29cd4d6c20ef1..140d0405e4239 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyCodeGenPassBuilder.cpp
@@ -279,19 +279,9 @@ void WebAssemblyCodeGenPassBuilder::addAsmPrinterEnd(
 
 } // namespace
 
-void WebAssemblyTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
+void WebAssemblyTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB){
 #define GET_PASS_REGISTRY "WebAssemblyPassRegistry.def"
 #include "llvm/Passes/TargetPassRegistry.inc"
-  // TODO(boomanaiden154): Move this into the base CodeGenPassBuilder once all
-  // targets that currently implement it have a ported asm-printer pass.
-  if (PIC) {
-    PIC->addClassToPassName(WebAssemblyAsmPrinterBeginPass::name(),
-                            "wasm-asm-printer-begin");
-    PIC->addClassToPassName(WebAssemblyAsmPrinterPass::name(),
-                            "wasm-asm-printer");
-    PIC->addClassToPassName(WebAssemblyAsmPrinterEndPass::name(),
-                            "wasm-asm-printer-end");
-  }
 }
 
 Error WebAssemblyTargetMachine::buildCodeGenPipeline(
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def b/llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def
index 6b47e292219f5..01915b35a41fc 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyPassRegistry.def
@@ -21,6 +21,8 @@ MACHINE_MODULE_PASS("wasm-mclower-prepass", WebAssemblyMCLowerPrePass())
 #define MODULE_PASS(NAME, CREATE_PASS)
 #endif
 MODULE_PASS("wasm-add-missing-prototypes", WebAssemblyAddMissingPrototypesPass())
+MODULE_PASS("wasm-asm-printer-begin", WebAssemblyAsmPrinterBeginPass())
+MODULE_PASS("wasm-asm-printer-end", WebAssemblyAsmPrinterEndPass())
 MODULE_PASS("wasm-coalesce-features-and-strip-atomics",
             WebAssemblyCoalesceFeaturesAndStripAtomicsPass(*this))
 MODULE_PASS("wasm-fix-function-bitcasts", WebAssemblyFixFunctionBitcastsPass())
@@ -45,6 +47,7 @@ MACHINE_FUNCTION_ANALYSIS("wasm-exception-info", WebAssemblyExceptionAnalysis())
 #define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS)
 #endif
 MACHINE_FUNCTION_PASS("wasm-argument-move", WebAssemblyArgumentMovePass())
+MACHINE_FUNCTION_PASS("wasm-asm-printer", WebAssemblyAsmPrinterPass())
 MACHINE_FUNCTION_PASS("wasm-cfg-sort", WebAssemblyCFGSortPass())
 MACHINE_FUNCTION_PASS("wasm-cfg-stackify", WebAssemblyCFGStackifyPass())
 MACHINE_FUNCTION_PASS("wasm-clean-code-after-trap",
diff --git a/llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp b/llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp
index e1762de764671..fc2eb6134d1fd 100644
--- a/llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp
+++ b/llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp
@@ -275,18 +275,9 @@ void X86CodeGenPassBuilder::addAsmPrinterEnd(PassManagerWrapper &PMW) const {
 
 } // namespace
 
-void X86TargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
+void X86TargetMachine::registerPassBuilderCallbacks(PassBuilder &PB){
 #define GET_PASS_REGISTRY "X86PassRegistry.def"
 #include "llvm/Passes/TargetPassRegistry.inc"
-  // TODO(boomanaiden154): Move this into the base CodeGenPassBuilder once all
-  // targets that currently implement it have a ported asm-printer pass.
-  if (PIC) {
-    PIC->addClassToPassName(X86AsmPrinterBeginPass::name(),
-                            "x86-asm-printer-begin");
-    PIC->addClassToPassName(X86AsmPrinterPass::name(), "x86-asm-printer");
-    PIC->addClassToPassName(X86AsmPrinterEndPass::name(),
-                            "x86-asm-printer-end");
-  }
 }
 
 Error X86TargetMachine::buildCodeGenPipeline(
diff --git a/llvm/lib/Target/X86/X86PassRegistry.def b/llvm/lib/Target/X86/X86PassRegistry.def
index 45e7d0ebdbf7b..8744dbfaed33a 100644
--- a/llvm/lib/Target/X86/X86PassRegistry.def
+++ b/llvm/lib/Target/X86/X86PassRegistry.def
@@ -15,6 +15,8 @@
 #ifndef MODULE_PASS
 #define MODULE_PASS(NAME, CREATE_PASS)
 #endif
+MODULE_PASS("x86-asm-printer-begin", X86AsmPrinterBeginPass())
+MODULE_PASS("x86-asm-printer-end", X86AsmPrinterEndPass())
 MODULE_PASS("x86-winehstate", X86WinEHStatePass())
 #undef MODULE_PASS
 
@@ -30,6 +32,7 @@ FUNCTION_PASS("x86-partial-reduction", X86PartialReductionPass(this))
 #define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS)
 #endif
 MACHINE_FUNCTION_PASS("x86-argument-stack-slot", X86ArgumentStackSlotPass())
+MACHINE_FUNCTION_PASS("x86-asm-printer", X86AsmPrinterPass())
 MACHINE_FUNCTION_PASS("x86-avoid-sfb", X86AvoidStoreForwardingBlocksPass())
 MACHINE_FUNCTION_PASS("x86-avoid-trailing-call", X86AvoidTrailingCallPass())
 MACHINE_FUNCTION_PASS("x86-cf-opt", X86CallFrameOptimizationPass())
diff --git a/llvm/test/CodeGen/Lanai/llc-pipeline-npm.ll b/llvm/test/CodeGen/Lanai/llc-pipeline-npm.ll
index bbc4aa7cd5e8f..965f23399114c 100644
--- a/llvm/test/CodeGen/Lanai/llc-pipeline-npm.ll
+++ b/llvm/test/CodeGen/Lanai/llc-pipeline-npm.ll
@@ -87,6 +87,6 @@
 ; CHECK:     machine-sanmd
 ; CHECK:     stack-frame-layout
 ; CHECK:     verify
-; CHECK:     lanai-asmprinter
+; CHECK:     lanai-asm-printer
 ; CHECK:   free-machine-function
 ; CHECK: lanai-asm-printer-end



More information about the llvm-commits mailing list