diff --git a/llvm/include/llvm/CodeGen/AsmPrinter.h b/llvm/include/llvm/CodeGen/AsmPrinter.h index 79d23986f3b43..9132a0a6ea5a3 100644 --- a/llvm/include/llvm/CodeGen/AsmPrinter.h +++ b/llvm/include/llvm/CodeGen/AsmPrinter.h @@ -240,7 +240,8 @@ class AsmPrinter : public MachineFunctionPass { bool DbgInfoAvailable = false; protected: - explicit AsmPrinter(TargetMachine &TM, std::unique_ptr Streamer); + AsmPrinter(TargetMachine &TM, std::unique_ptr Streamer, + char &ID = AsmPrinter::ID); public: ~AsmPrinter() override; diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index bdcd54a135da9..d7710212e8cc3 100644 --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -382,7 +382,8 @@ Align AsmPrinter::getGVAlignment(const GlobalObject *GV, const DataLayout &DL, return Alignment; } -AsmPrinter::AsmPrinter(TargetMachine &tm, std::unique_ptr Streamer) +AsmPrinter::AsmPrinter(TargetMachine &tm, std::unique_ptr Streamer, + char &ID) : MachineFunctionPass(ID), TM(tm), MAI(tm.getMCAsmInfo()), OutContext(Streamer->getContext()), OutStreamer(std::move(Streamer)), SM(*this) { diff --git a/llvm/lib/Target/AArch64/AArch64.h b/llvm/lib/Target/AArch64/AArch64.h index ffa578d412b3c..5496ebd495a55 100644 --- a/llvm/lib/Target/AArch64/AArch64.h +++ b/llvm/lib/Target/AArch64/AArch64.h @@ -77,6 +77,7 @@ ModulePass *createAArch64Arm64ECCallLoweringPass(); void initializeAArch64A53Fix835769Pass(PassRegistry&); void initializeAArch64A57FPLoadBalancingPass(PassRegistry&); void initializeAArch64AdvSIMDScalarPass(PassRegistry&); +void initializeAArch64AsmPrinterPass(PassRegistry &); void initializeAArch64PointerAuthPass(PassRegistry&); void initializeAArch64BranchTargetsPass(PassRegistry&); void initializeAArch64CFIFixupPass(PassRegistry&); diff --git a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp index 870df4c387ca4..38be677ec805b 100644 --- a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp +++ b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp @@ -96,9 +96,11 @@ class AArch64AsmPrinter : public AsmPrinter { SectionToImportedFunctionCalls; public: + static char ID; + AArch64AsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)), MCInstLowering(OutContext, *this), - FM(*this) {} + : AsmPrinter(TM, std::move(Streamer), ID), + MCInstLowering(OutContext, *this), FM(*this) {} StringRef getPassName() const override { return "AArch64 Assembly Printer"; } @@ -3523,6 +3525,11 @@ const MCExpr *AArch64AsmPrinter::lowerConstant(const Constant *CV, return AsmPrinter::lowerConstant(CV, BaseCV, Offset); } +char AArch64AsmPrinter::ID = 0; + +INITIALIZE_PASS(AArch64AsmPrinter, "aarch64-asm-printer", + "AArch64 Assmebly Printer", false, false) + // Force static initialization. extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAArch64AsmPrinter() { RegisterAsmPrinter X(getTheAArch64leTarget()); diff --git a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp index 431076f188d98..5693a551e679f 100644 --- a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp +++ b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp @@ -235,6 +235,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAArch64Target() { initializeAArch64A53Fix835769Pass(PR); initializeAArch64A57FPLoadBalancingPass(PR); initializeAArch64AdvSIMDScalarPass(PR); + initializeAArch64AsmPrinterPass(PR); initializeAArch64BranchTargetsPass(PR); initializeAArch64CollectLOHPass(PR); initializeAArch64CompressJumpTablesPass(PR); diff --git a/llvm/lib/Target/AMDGPU/AMDGPU.h b/llvm/lib/Target/AMDGPU/AMDGPU.h index bbdc8c684e619..b572f81defe2d 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPU.h +++ b/llvm/lib/Target/AMDGPU/AMDGPU.h @@ -95,6 +95,8 @@ void initializeAMDGPUDAGToDAGISelLegacyPass(PassRegistry &); void initializeAMDGPUAlwaysInlinePass(PassRegistry&); +void initializeAMDGPUAsmPrinterPass(PassRegistry &); + Pass *createAMDGPUAttributorLegacyPass(); void initializeAMDGPUAttributorLegacyPass(PassRegistry &); diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp index 5e684a7c46568..491314daf2d81 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp @@ -1742,3 +1742,8 @@ void AMDGPUAsmPrinter::emitResourceUsageRemarks( EmitResourceUsageRemark("BytesLDS", "LDS Size [bytes/block]", CurrentProgramInfo.LDSSize); } + +char AMDGPUAsmPrinter::ID = 0; + +INITIALIZE_PASS(AMDGPUAsmPrinter, "amdgpu-asm-printer", + "AMDGPU Assembly Printer", false, false) diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.h b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.h index 4183bb6a76b6e..23779047efa40 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.h +++ b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.h @@ -36,6 +36,9 @@ class MetadataStreamer; } // namespace AMDGPU class AMDGPUAsmPrinter final : public AsmPrinter { +public: + static char ID; + private: unsigned CodeObjectVersion; void initializeTargetID(const Module &M); diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp index 43e837d9ab7e6..c22b27abdbf6c 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp @@ -495,6 +495,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAMDGPUTarget() { initializeR600EmitClauseMarkersPass(*PR); initializeR600MachineCFGStructurizerPass(*PR); initializeGlobalISel(*PR); + initializeAMDGPUAsmPrinterPass(*PR); initializeAMDGPUDAGToDAGISelLegacyPass(*PR); initializeGCNDPPCombineLegacyPass(*PR); initializeSILowerI1CopiesLegacyPass(*PR); diff --git a/llvm/lib/Target/ARC/ARC.h b/llvm/lib/Target/ARC/ARC.h index 459f79c6eaccd..dfab6924fc0ae 100644 --- a/llvm/lib/Target/ARC/ARC.h +++ b/llvm/lib/Target/ARC/ARC.h @@ -27,6 +27,7 @@ FunctionPass *createARCISelDag(ARCTargetMachine &TM, CodeGenOptLevel OptLevel); FunctionPass *createARCExpandPseudosPass(); FunctionPass *createARCOptAddrMode(); FunctionPass *createARCBranchFinalizePass(); +void initializeARCAsmPrinterPass(PassRegistry &); void initializeARCDAGToDAGISelLegacyPass(PassRegistry &); } // end namespace llvm diff --git a/llvm/lib/Target/ARC/ARCAsmPrinter.cpp b/llvm/lib/Target/ARC/ARCAsmPrinter.cpp index cee2fc7d2bf0b..55de4015b585b 100644 --- a/llvm/lib/Target/ARC/ARCAsmPrinter.cpp +++ b/llvm/lib/Target/ARC/ARCAsmPrinter.cpp @@ -35,9 +35,11 @@ class ARCAsmPrinter : public AsmPrinter { ARCMCInstLower MCInstLowering; public: + static char ID; + explicit ARCAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)), + : AsmPrinter(TM, std::move(Streamer), ID), MCInstLowering(&OutContext, *this) {} StringRef getPassName() const override { return "ARC Assembly Printer"; } @@ -72,6 +74,11 @@ bool ARCAsmPrinter::runOnMachineFunction(MachineFunction &MF) { return AsmPrinter::runOnMachineFunction(MF); } +char ARCAsmPrinter::ID = 0; + +INITIALIZE_PASS(ARCAsmPrinter, "arc-asm-printer", "ARC Assmebly Printer", false, + false) + // Force static initialization. extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeARCAsmPrinter() { RegisterAsmPrinter X(getTheARCTarget()); diff --git a/llvm/lib/Target/ARC/ARCTargetMachine.cpp b/llvm/lib/Target/ARC/ARCTargetMachine.cpp index f781fa9d7b57e..370336394ba7f 100644 --- a/llvm/lib/Target/ARC/ARCTargetMachine.cpp +++ b/llvm/lib/Target/ARC/ARCTargetMachine.cpp @@ -98,6 +98,7 @@ MachineFunctionInfo *ARCTargetMachine::createMachineFunctionInfo( extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeARCTarget() { RegisterTargetMachine X(getTheARCTarget()); PassRegistry &PR = *PassRegistry::getPassRegistry(); + initializeARCAsmPrinterPass(PR); initializeARCDAGToDAGISelLegacyPass(PR); } diff --git a/llvm/lib/Target/ARM/ARM.h b/llvm/lib/Target/ARM/ARM.h index 0b7045eadde7f..3847f4e966afe 100644 --- a/llvm/lib/Target/ARM/ARM.h +++ b/llvm/lib/Target/ARM/ARM.h @@ -61,6 +61,7 @@ FunctionPass *createARMFixCortexA57AES1742098Pass(); void LowerARMMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI, ARMAsmPrinter &AP); +void initializeARMAsmPrinterPass(PassRegistry &); void initializeARMBlockPlacementPass(PassRegistry &); void initializeARMBranchTargetsPass(PassRegistry &); void initializeARMConstantIslandsPass(PassRegistry &); diff --git a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp index a3bb3780b9b2b..b71a1faa0d520 100644 --- a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp @@ -50,7 +50,7 @@ using namespace llvm; ARMAsmPrinter::ARMAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)), Subtarget(nullptr), AFI(nullptr), + : AsmPrinter(TM, std::move(Streamer), ID), Subtarget(nullptr), AFI(nullptr), MCP(nullptr), InConstantPool(false), OptimizationGoals(-1) {} void ARMAsmPrinter::emitFunctionBodyEnd() { @@ -2434,6 +2434,11 @@ void ARMAsmPrinter::emitInstruction(const MachineInstr *MI) { EmitToStreamer(*OutStreamer, TmpInst); } +char ARMAsmPrinter::ID = 0; + +INITIALIZE_PASS(ARMAsmPrinter, "arm-asm-printer", "ARM Assembly Printer", false, + false) + //===----------------------------------------------------------------------===// // Target Registry Stuff //===----------------------------------------------------------------------===// diff --git a/llvm/lib/Target/ARM/ARMAsmPrinter.h b/llvm/lib/Target/ARM/ARMAsmPrinter.h index c4503d952105e..8a7ec4e2bcf22 100644 --- a/llvm/lib/Target/ARM/ARMAsmPrinter.h +++ b/llvm/lib/Target/ARM/ARMAsmPrinter.h @@ -29,7 +29,10 @@ namespace ARM { } class LLVM_LIBRARY_VISIBILITY ARMAsmPrinter : public AsmPrinter { +public: + static char ID; +private: /// Subtarget - Keep a pointer to the ARMSubtarget around so that we can /// make the right decision when printing asm code for different targets. const ARMSubtarget *Subtarget; @@ -152,6 +155,7 @@ class LLVM_LIBRARY_VISIBILITY ARMAsmPrinter : public AsmPrinter { /// the .s file. void emitMachineConstantPoolValue(MachineConstantPoolValue *MCPV) override; }; + } // end namespace llvm #endif diff --git a/llvm/lib/Target/ARM/ARMTargetMachine.cpp b/llvm/lib/Target/ARM/ARMTargetMachine.cpp index 2f9720ee23568..80a1e77a305c7 100644 --- a/llvm/lib/Target/ARM/ARMTargetMachine.cpp +++ b/llvm/lib/Target/ARM/ARMTargetMachine.cpp @@ -91,6 +91,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeARMTarget() { PassRegistry &Registry = *PassRegistry::getPassRegistry(); initializeGlobalISel(Registry); + initializeARMAsmPrinterPass(Registry); initializeARMLoadStoreOptPass(Registry); initializeARMPreAllocLoadStoreOptPass(Registry); initializeARMParallelDSPPass(Registry); diff --git a/llvm/lib/Target/AVR/AVR.h b/llvm/lib/Target/AVR/AVR.h index 0e67bb4eb50c2..68ec9271f75ea 100644 --- a/llvm/lib/Target/AVR/AVR.h +++ b/llvm/lib/Target/AVR/AVR.h @@ -31,6 +31,7 @@ FunctionPass *createAVRExpandPseudoPass(); FunctionPass *createAVRFrameAnalyzerPass(); FunctionPass *createAVRBranchSelectionPass(); +void initializeAVRAsmPrinterPass(PassRegistry &); void initializeAVRDAGToDAGISelLegacyPass(PassRegistry &); void initializeAVRExpandPseudoPass(PassRegistry &); void initializeAVRShiftExpandPass(PassRegistry &); diff --git a/llvm/lib/Target/AVR/AVRAsmPrinter.cpp b/llvm/lib/Target/AVR/AVRAsmPrinter.cpp index a8621abdb5ffb..ed537f8cc7178 100644 --- a/llvm/lib/Target/AVR/AVRAsmPrinter.cpp +++ b/llvm/lib/Target/AVR/AVRAsmPrinter.cpp @@ -39,13 +39,15 @@ #define DEBUG_TYPE "avr-asm-printer" -namespace llvm { +using namespace llvm; + +namespace { /// An AVR assembly code printer. class AVRAsmPrinter : public AsmPrinter { public: AVRAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)), MRI(*TM.getMCRegisterInfo()) {} + : AsmPrinter(TM, std::move(Streamer), ID), MRI(*TM.getMCRegisterInfo()) {} StringRef getPassName() const override { return "AVR Assembly Printer"; } @@ -68,11 +70,15 @@ class AVRAsmPrinter : public AsmPrinter { void emitStartOfAsmFile(Module &M) override; + static char ID; + private: const MCRegisterInfo &MRI; bool EmittedStructorSymbolAttrs = false; }; +} // namespace + void AVRAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo, raw_ostream &O) { const MachineOperand &MO = MI->getOperand(OpNo); @@ -324,8 +330,11 @@ void AVRAsmPrinter::emitStartOfAsmFile(Module &M) { MCConstantExpr::create(SubTM->getIORegRAMPZ(), MMI->getContext())); } -} // end of namespace llvm +char AVRAsmPrinter::ID = 0; + +INITIALIZE_PASS(AVRAsmPrinter, "avr-asm-printer", "AVR Assembly Printer", false, + false) extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAVRAsmPrinter() { - llvm::RegisterAsmPrinter X(llvm::getTheAVRTarget()); + llvm::RegisterAsmPrinter X(getTheAVRTarget()); } diff --git a/llvm/lib/Target/AVR/AVRTargetMachine.cpp b/llvm/lib/Target/AVR/AVRTargetMachine.cpp index 579f7ac712313..5eaa642d19903 100644 --- a/llvm/lib/Target/AVR/AVRTargetMachine.cpp +++ b/llvm/lib/Target/AVR/AVRTargetMachine.cpp @@ -92,6 +92,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAVRTarget() { RegisterTargetMachine X(getTheAVRTarget()); auto &PR = *PassRegistry::getPassRegistry(); + initializeAVRAsmPrinterPass(PR); initializeAVRExpandPseudoPass(PR); initializeAVRShiftExpandPass(PR); initializeAVRDAGToDAGISelLegacyPass(PR); diff --git a/llvm/lib/Target/BPF/BPF.h b/llvm/lib/Target/BPF/BPF.h index f07ae4c9baf1c..68166e574f35e 100644 --- a/llvm/lib/Target/BPF/BPF.h +++ b/llvm/lib/Target/BPF/BPF.h @@ -34,6 +34,7 @@ InstructionSelector *createBPFInstructionSelector(const BPFTargetMachine &, const BPFSubtarget &, const BPFRegisterBankInfo &); +void initializeBPFAsmPrinterPass(PassRegistry &); void initializeBPFCheckAndAdjustIRPass(PassRegistry&); void initializeBPFDAGToDAGISelLegacyPass(PassRegistry &); void initializeBPFMIPeepholePass(PassRegistry &); diff --git a/llvm/lib/Target/BPF/BPFAsmPrinter.cpp b/llvm/lib/Target/BPF/BPFAsmPrinter.cpp index b3c27a3d1d6fa..5dd71cc91427a 100644 --- a/llvm/lib/Target/BPF/BPFAsmPrinter.cpp +++ b/llvm/lib/Target/BPF/BPFAsmPrinter.cpp @@ -37,7 +37,7 @@ class BPFAsmPrinter : public AsmPrinter { public: explicit BPFAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)), BTF(nullptr) {} + : AsmPrinter(TM, std::move(Streamer), ID), BTF(nullptr) {} StringRef getPassName() const override { return "BPF Assembly Printer"; } bool doInitialization(Module &M) override; @@ -49,6 +49,8 @@ class BPFAsmPrinter : public AsmPrinter { void emitInstruction(const MachineInstr *MI) override; + static char ID; + private: BTFDebug *BTF; }; @@ -147,6 +149,11 @@ void BPFAsmPrinter::emitInstruction(const MachineInstr *MI) { EmitToStreamer(*OutStreamer, TmpInst); } +char BPFAsmPrinter::ID = 0; + +INITIALIZE_PASS(BPFAsmPrinter, "bpf-asm-printer", "BPF Assembly Printer", false, + false) + // Force static initialization. extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeBPFAsmPrinter() { RegisterAsmPrinter X(getTheBPFleTarget()); diff --git a/llvm/lib/Target/BPF/BPFTargetMachine.cpp b/llvm/lib/Target/BPF/BPFTargetMachine.cpp index 873719e6983ae..46ba758b55223 100644 --- a/llvm/lib/Target/BPF/BPFTargetMachine.cpp +++ b/llvm/lib/Target/BPF/BPFTargetMachine.cpp @@ -45,6 +45,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeBPFTarget() { PassRegistry &PR = *PassRegistry::getPassRegistry(); initializeGlobalISel(PR); + initializeBPFAsmPrinterPass(PR); initializeBPFCheckAndAdjustIRPass(PR); initializeBPFMIPeepholePass(PR); initializeBPFMIPreEmitPeepholePass(PR); diff --git a/llvm/lib/Target/Hexagon/Hexagon.h b/llvm/lib/Target/Hexagon/Hexagon.h index 11b6f0d0d92ca..109aba53b6e3e 100644 --- a/llvm/lib/Target/Hexagon/Hexagon.h +++ b/llvm/lib/Target/Hexagon/Hexagon.h @@ -26,6 +26,7 @@ class Pass; extern char &HexagonCopyHoistingID; extern char &HexagonExpandCondsetsID; extern char &HexagonTfrCleanupID; +void initializeHexagonAsmPrinterPass(PassRegistry &); void initializeHexagonBitSimplifyPass(PassRegistry &); void initializeHexagonBranchRelaxationPass(PassRegistry &); void initializeHexagonCFGOptimizerPass(PassRegistry &); diff --git a/llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp b/llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp index c6f250353f736..c7580d28618ab 100644 --- a/llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp +++ b/llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp @@ -853,6 +853,11 @@ void HexagonAsmPrinter::LowerPATCHABLE_TAIL_CALL(const MachineInstr &MI) { EmitSled(MI, SledKind::TAIL_CALL); } +char HexagonAsmPrinter::ID = 0; + +INITIALIZE_PASS(HexagonAsmPrinter, "hexagon-asm-printer", + "Hexagon Assembly Printer", false, false) + extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeHexagonAsmPrinter() { RegisterAsmPrinter X(getTheHexagonTarget()); } diff --git a/llvm/lib/Target/Hexagon/HexagonAsmPrinter.h b/llvm/lib/Target/Hexagon/HexagonAsmPrinter.h index b555c88596503..8e34d2bf9209b 100644 --- a/llvm/lib/Target/Hexagon/HexagonAsmPrinter.h +++ b/llvm/lib/Target/Hexagon/HexagonAsmPrinter.h @@ -27,6 +27,10 @@ class raw_ostream; class TargetMachine; class HexagonAsmPrinter : public AsmPrinter { + public: + static char ID; + + private: const HexagonSubtarget *Subtarget = nullptr; void emitAttributes(); @@ -34,7 +38,7 @@ class TargetMachine; public: explicit HexagonAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)) {} + : AsmPrinter(TM, std::move(Streamer), ID) {} bool runOnMachineFunction(MachineFunction &Fn) override { Subtarget = &Fn.getSubtarget(); diff --git a/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp b/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp index aa3491b1138f0..19b7c6a315f56 100644 --- a/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp +++ b/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp @@ -179,6 +179,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeHexagonTarget() { RegisterTargetMachine X(getTheHexagonTarget()); PassRegistry &PR = *PassRegistry::getPassRegistry(); + initializeHexagonAsmPrinterPass(PR); initializeHexagonBitSimplifyPass(PR); initializeHexagonConstExtendersPass(PR); initializeHexagonConstPropagationPass(PR); diff --git a/llvm/lib/Target/Lanai/Lanai.h b/llvm/lib/Target/Lanai/Lanai.h index 1ef4462fed648..032e5fe186f3a 100644 --- a/llvm/lib/Target/Lanai/Lanai.h +++ b/llvm/lib/Target/Lanai/Lanai.h @@ -37,6 +37,7 @@ FunctionPass *createLanaiMemAluCombinerPass(); // operations. FunctionPass *createLanaiSetflagAluCombinerPass(); +void initializeLanaiAsmPrinterPass(PassRegistry &); void initializeLanaiDAGToDAGISelLegacyPass(PassRegistry &); void initializeLanaiMemAluCombinerPass(PassRegistry &); diff --git a/llvm/lib/Target/Lanai/LanaiAsmPrinter.cpp b/llvm/lib/Target/Lanai/LanaiAsmPrinter.cpp index c87ad63cdebf8..1c4fc572243c5 100644 --- a/llvm/lib/Target/Lanai/LanaiAsmPrinter.cpp +++ b/llvm/lib/Target/Lanai/LanaiAsmPrinter.cpp @@ -38,7 +38,7 @@ class LanaiAsmPrinter : public AsmPrinter { public: explicit LanaiAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)) {} + : AsmPrinter(TM, std::move(Streamer), ID) {} StringRef getPassName() const override { return "Lanai Assembly Printer"; } @@ -52,6 +52,9 @@ class LanaiAsmPrinter : public AsmPrinter { private: void customEmitInstruction(const MachineInstr *MI); void emitCallInstruction(const MachineInstr *MI); + +public: + static char ID; }; } // end of anonymous namespace @@ -233,6 +236,11 @@ bool LanaiAsmPrinter::isBlockOnlyReachableByFallthrough( return !I->isBarrier(); } +char LanaiAsmPrinter::ID = 0; + +INITIALIZE_PASS(LanaiAsmPrinter, "lanai-asm-printer", "Lanai Assembly Printer", + false, false) + // Force static initialization. extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeLanaiAsmPrinter() { RegisterAsmPrinter X(getTheLanaiTarget()); diff --git a/llvm/lib/Target/Lanai/LanaiTargetMachine.cpp b/llvm/lib/Target/Lanai/LanaiTargetMachine.cpp index e7286527a1c35..7f94e778e7545 100644 --- a/llvm/lib/Target/Lanai/LanaiTargetMachine.cpp +++ b/llvm/lib/Target/Lanai/LanaiTargetMachine.cpp @@ -31,6 +31,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeLanaiTarget() { RegisterTargetMachine registered_target( getTheLanaiTarget()); PassRegistry &PR = *PassRegistry::getPassRegistry(); + initializeLanaiAsmPrinterPass(PR); initializeLanaiDAGToDAGISelLegacyPass(PR); initializeLanaiMemAluCombinerPass(PR); } diff --git a/llvm/lib/Target/LoongArch/LoongArch.h b/llvm/lib/Target/LoongArch/LoongArch.h index db60523738880..b9dc7822893ee 100644 --- a/llvm/lib/Target/LoongArch/LoongArch.h +++ b/llvm/lib/Target/LoongArch/LoongArch.h @@ -40,6 +40,7 @@ FunctionPass *createLoongArchMergeBaseOffsetOptPass(); FunctionPass *createLoongArchOptWInstrsPass(); FunctionPass *createLoongArchPreRAExpandPseudoPass(); FunctionPass *createLoongArchExpandPseudoPass(); +void initializeLoongArchAsmPrinterPass(PassRegistry &); void initializeLoongArchDAGToDAGISelLegacyPass(PassRegistry &); void initializeLoongArchDeadRegisterDefinitionsPass(PassRegistry &); void initializeLoongArchExpandAtomicPseudoPass(PassRegistry &); diff --git a/llvm/lib/Target/LoongArch/LoongArchAsmPrinter.cpp b/llvm/lib/Target/LoongArch/LoongArchAsmPrinter.cpp index 895a8e2646692..0672570c4dcd0 100644 --- a/llvm/lib/Target/LoongArch/LoongArchAsmPrinter.cpp +++ b/llvm/lib/Target/LoongArch/LoongArchAsmPrinter.cpp @@ -297,6 +297,11 @@ bool LoongArchAsmPrinter::runOnMachineFunction(MachineFunction &MF) { return true; } +char LoongArchAsmPrinter::ID = 0; + +INITIALIZE_PASS(LoongArchAsmPrinter, "loongarch-asm-printer", + "LoongArch Assembly Printer", false, false) + // Force static initialization. extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeLoongArchAsmPrinter() { RegisterAsmPrinter X(getTheLoongArch32Target()); diff --git a/llvm/lib/Target/LoongArch/LoongArchAsmPrinter.h b/llvm/lib/Target/LoongArch/LoongArchAsmPrinter.h index 312631e4f0dc5..b2373a9a1670b 100644 --- a/llvm/lib/Target/LoongArch/LoongArchAsmPrinter.h +++ b/llvm/lib/Target/LoongArch/LoongArchAsmPrinter.h @@ -22,12 +22,16 @@ namespace llvm { class LLVM_LIBRARY_VISIBILITY LoongArchAsmPrinter : public AsmPrinter { +public: + static char ID; + +private: const MCSubtargetInfo *STI; public: explicit LoongArchAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)), STI(TM.getMCSubtargetInfo()) {} + : AsmPrinter(TM, std::move(Streamer), ID), STI(TM.getMCSubtargetInfo()) {} StringRef getPassName() const override { return "LoongArch Assembly Printer"; diff --git a/llvm/lib/Target/M68k/M68k.h b/llvm/lib/Target/M68k/M68k.h index 5db9d796d1d3c..0dbca6fd62529 100644 --- a/llvm/lib/Target/M68k/M68k.h +++ b/llvm/lib/Target/M68k/M68k.h @@ -46,6 +46,7 @@ InstructionSelector * createM68kInstructionSelector(const M68kTargetMachine &, const M68kSubtarget &, const M68kRegisterBankInfo &); +void initializeM68kAsmPrinterPass(PassRegistry &); void initializeM68kDAGToDAGISelLegacyPass(PassRegistry &); void initializeM68kExpandPseudoPass(PassRegistry &); void initializeM68kGlobalBaseRegPass(PassRegistry &); diff --git a/llvm/lib/Target/M68k/M68kAsmPrinter.cpp b/llvm/lib/Target/M68k/M68kAsmPrinter.cpp index f748450c170aa..0437400b81d84 100644 --- a/llvm/lib/Target/M68k/M68kAsmPrinter.cpp +++ b/llvm/lib/Target/M68k/M68kAsmPrinter.cpp @@ -195,6 +195,11 @@ void M68kAsmPrinter::emitStartOfAsmFile(Module &M) { void M68kAsmPrinter::emitEndOfAsmFile(Module &M) {} +char M68kAsmPrinter::ID = 0; + +INITIALIZE_PASS(M68kAsmPrinter, "m68k-asm-printer", "M68k Assembly Printer", + false, false) + extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeM68kAsmPrinter() { RegisterAsmPrinter X(getTheM68kTarget()); } diff --git a/llvm/lib/Target/M68k/M68kAsmPrinter.h b/llvm/lib/Target/M68k/M68kAsmPrinter.h index 7b4dbfef58c57..bd1598705f29c 100644 --- a/llvm/lib/Target/M68k/M68kAsmPrinter.h +++ b/llvm/lib/Target/M68k/M68kAsmPrinter.h @@ -49,13 +49,15 @@ class LLVM_LIBRARY_VISIBILITY M68kAsmPrinter void printAbsMem(const MachineInstr *MI, unsigned OpNum, raw_ostream &OS); public: + static char ID; + const M68kSubtarget *Subtarget; const M68kMachineFunctionInfo *MMFI; std::unique_ptr MCInstLowering; explicit M68kAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)) { + : AsmPrinter(TM, std::move(Streamer), ID) { Subtarget = static_cast(TM).getSubtargetImpl(); } diff --git a/llvm/lib/Target/M68k/M68kTargetMachine.cpp b/llvm/lib/Target/M68k/M68kTargetMachine.cpp index 2f5a2e8288a26..ce15ee635e21b 100644 --- a/llvm/lib/Target/M68k/M68kTargetMachine.cpp +++ b/llvm/lib/Target/M68k/M68kTargetMachine.cpp @@ -37,6 +37,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeM68kTarget() { RegisterTargetMachine X(getTheM68kTarget()); auto *PR = PassRegistry::getPassRegistry(); initializeGlobalISel(*PR); + initializeM68kAsmPrinterPass(*PR); initializeM68kDAGToDAGISelLegacyPass(*PR); initializeM68kExpandPseudoPass(*PR); initializeM68kGlobalBaseRegPass(*PR); diff --git a/llvm/lib/Target/MSP430/MSP430.h b/llvm/lib/Target/MSP430/MSP430.h index 019835908db81..3680d187f0d33 100644 --- a/llvm/lib/Target/MSP430/MSP430.h +++ b/llvm/lib/Target/MSP430/MSP430.h @@ -43,6 +43,7 @@ FunctionPass *createMSP430ISelDag(MSP430TargetMachine &TM, FunctionPass *createMSP430BranchSelectionPass(); +void initializeMSP430AsmPrinterPass(PassRegistry &); void initializeMSP430DAGToDAGISelLegacyPass(PassRegistry &); } // namespace llvm diff --git a/llvm/lib/Target/MSP430/MSP430AsmPrinter.cpp b/llvm/lib/Target/MSP430/MSP430AsmPrinter.cpp index 27319877f5eb1..44e55b6a3c9b7 100644 --- a/llvm/lib/Target/MSP430/MSP430AsmPrinter.cpp +++ b/llvm/lib/Target/MSP430/MSP430AsmPrinter.cpp @@ -36,7 +36,7 @@ namespace { class MSP430AsmPrinter : public AsmPrinter { public: MSP430AsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)) {} + : AsmPrinter(TM, std::move(Streamer), ID) {} StringRef getPassName() const override { return "MSP430 Assembly Printer"; } @@ -54,6 +54,8 @@ namespace { void emitInstruction(const MachineInstr *MI) override; void EmitInterruptVectorSection(MachineFunction &ISR); + + static char ID; }; } // end of anonymous namespace @@ -181,6 +183,11 @@ bool MSP430AsmPrinter::runOnMachineFunction(MachineFunction &MF) { return false; } +char MSP430AsmPrinter::ID = 0; + +INITIALIZE_PASS(MSP430AsmPrinter, "msp430-asm-printer", + "MSP430 Assembly Printer", false, false) + // Force static initialization. extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeMSP430AsmPrinter() { RegisterAsmPrinter X(getTheMSP430Target()); diff --git a/llvm/lib/Target/MSP430/MSP430TargetMachine.cpp b/llvm/lib/Target/MSP430/MSP430TargetMachine.cpp index 6b69f2c4a6025..763a2db2baca7 100644 --- a/llvm/lib/Target/MSP430/MSP430TargetMachine.cpp +++ b/llvm/lib/Target/MSP430/MSP430TargetMachine.cpp @@ -25,6 +25,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeMSP430Target() { // Register the target. RegisterTargetMachine X(getTheMSP430Target()); PassRegistry &PR = *PassRegistry::getPassRegistry(); + initializeMSP430AsmPrinterPass(PR); initializeMSP430DAGToDAGISelLegacyPass(PR); } diff --git a/llvm/lib/Target/Mips/Mips.h b/llvm/lib/Target/Mips/Mips.h index f99dadd25e34d..60d5114f2f55a 100644 --- a/llvm/lib/Target/Mips/Mips.h +++ b/llvm/lib/Target/Mips/Mips.h @@ -57,6 +57,7 @@ createMipsInstructionSelector(const MipsTargetMachine &, const MipsSubtarget &, const MipsRegisterBankInfo &); void initializeMicroMipsSizeReducePass(PassRegistry &); +void initializeMipsAsmPrinterPass(PassRegistry &); void initializeMipsBranchExpansionPass(PassRegistry &); void initializeMipsDAGToDAGISelLegacyPass(PassRegistry &); void initializeMipsDelaySlotFillerPass(PassRegistry &); diff --git a/llvm/lib/Target/Mips/MipsAsmPrinter.cpp b/llvm/lib/Target/Mips/MipsAsmPrinter.cpp index 8233fdfe81254..1a3e99ec7f68f 100644 --- a/llvm/lib/Target/Mips/MipsAsmPrinter.cpp +++ b/llvm/lib/Target/Mips/MipsAsmPrinter.cpp @@ -1292,6 +1292,11 @@ bool MipsAsmPrinter::isLongBranchPseudo(int Opcode) const { || Opcode == Mips::LONG_BRANCH_DADDiu2Op); } +char MipsAsmPrinter::ID = 0; + +INITIALIZE_PASS(MipsAsmPrinter, "mips-asm-printer", "Mips Assembly Printer", + false, false) + // Force static initialization. extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeMipsAsmPrinter() { RegisterAsmPrinter X(getTheMipsTarget()); diff --git a/llvm/lib/Target/Mips/MipsAsmPrinter.h b/llvm/lib/Target/Mips/MipsAsmPrinter.h index 5a878e4b90fd9..bbaa3b3cef9de 100644 --- a/llvm/lib/Target/Mips/MipsAsmPrinter.h +++ b/llvm/lib/Target/Mips/MipsAsmPrinter.h @@ -117,13 +117,15 @@ class LLVM_LIBRARY_VISIBILITY MipsAsmPrinter : public AsmPrinter { bool isLongBranchPseudo(int Opcode) const; public: + static char ID; + const MipsSubtarget *Subtarget; const MipsFunctionInfo *MipsFI; MipsMCInstLower MCInstLowering; explicit MipsAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)), MCInstLowering(*this) {} + : AsmPrinter(TM, std::move(Streamer), ID), MCInstLowering(*this) {} StringRef getPassName() const override { return "Mips Assembly Printer"; } diff --git a/llvm/lib/Target/Mips/MipsTargetMachine.cpp b/llvm/lib/Target/Mips/MipsTargetMachine.cpp index 9c6cccb987230..30b4d506c5caa 100644 --- a/llvm/lib/Target/Mips/MipsTargetMachine.cpp +++ b/llvm/lib/Target/Mips/MipsTargetMachine.cpp @@ -60,6 +60,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeMipsTarget() { PassRegistry *PR = PassRegistry::getPassRegistry(); initializeGlobalISel(*PR); + initializeMipsAsmPrinterPass(*PR); initializeMipsDelaySlotFillerPass(*PR); initializeMipsBranchExpansionPass(*PR); initializeMicroMipsSizeReducePass(*PR); diff --git a/llvm/lib/Target/NVPTX/NVPTX.h b/llvm/lib/Target/NVPTX/NVPTX.h index 1da979d023b42..83090ab720c73 100644 --- a/llvm/lib/Target/NVPTX/NVPTX.h +++ b/llvm/lib/Target/NVPTX/NVPTX.h @@ -59,6 +59,7 @@ MachineFunctionPass *createNVPTXForwardParamsPass(); void initializeNVVMReflectLegacyPassPass(PassRegistry &); void initializeGenericToNVVMLegacyPassPass(PassRegistry &); void initializeNVPTXAllocaHoistingPass(PassRegistry &); +void initializeNVPTXAsmPrinterPass(PassRegistry &); void initializeNVPTXAssignValidGlobalNamesPass(PassRegistry &); void initializeNVPTXAtomicLowerPass(PassRegistry &); void initializeNVPTXCtorDtorLoweringLegacyPass(PassRegistry &); diff --git a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp index 2f4b109e8e9e9..0e5207cf9b04c 100644 --- a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp +++ b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp @@ -2013,6 +2013,11 @@ void NVPTXAsmPrinter::printMemOperand(const MachineInstr *MI, unsigned OpNum, } } +char NVPTXAsmPrinter::ID = 0; + +INITIALIZE_PASS(NVPTXAsmPrinter, "nvptx-asm-printer", "NVPTX Assembly Printer", + false, false) + // Force static initialization. extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeNVPTXAsmPrinter() { RegisterAsmPrinter X(getTheNVPTXTarget32()); diff --git a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.h b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.h index 65938a9f60cd7..f35931868d99f 100644 --- a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.h +++ b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.h @@ -145,9 +145,12 @@ class LLVM_LIBRARY_VISIBILITY NVPTXAsmPrinter : public AsmPrinter { friend class AggBuffer; -private: +public: + static char ID; + StringRef getPassName() const override { return "NVPTX Assembly Printer"; } +private: const Function *F; void emitStartOfAsmFile(Module &M) override; @@ -239,7 +242,7 @@ class LLVM_LIBRARY_VISIBILITY NVPTXAsmPrinter : public AsmPrinter { public: NVPTXAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)), + : AsmPrinter(TM, std::move(Streamer), ID), EmitGeneric(static_cast(TM).getDrvInterface() == NVPTX::CUDA) {} diff --git a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp index dc3afc1f4a17d..f2e149063764d 100644 --- a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp +++ b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp @@ -99,6 +99,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeNVPTXTarget() { initializeNVVMIntrRangePass(PR); initializeGenericToNVVMLegacyPassPass(PR); initializeNVPTXAllocaHoistingPass(PR); + initializeNVPTXAsmPrinterPass(PR); initializeNVPTXAssignValidGlobalNamesPass(PR); initializeNVPTXAtomicLowerPass(PR); initializeNVPTXLowerArgsLegacyPassPass(PR); diff --git a/llvm/lib/Target/PowerPC/PPC.h b/llvm/lib/Target/PowerPC/PPC.h index d95ee56d608ff..124dac4584312 100644 --- a/llvm/lib/Target/PowerPC/PPC.h +++ b/llvm/lib/Target/PowerPC/PPC.h @@ -78,6 +78,8 @@ class ModulePass; void initializePPCExpandAtomicPseudoPass(PassRegistry &); void initializePPCCTRLoopsPass(PassRegistry &); void initializePPCDAGToDAGISelLegacyPass(PassRegistry &); + void initializePPCLinuxAsmPrinterPass(PassRegistry &); + void initializePPCAIXAsmPrinterPass(PassRegistry &); extern char &PPCVSXFMAMutateID; diff --git a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp index 85155c900e23a..0fe615a95894f 100644 --- a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp @@ -159,8 +159,8 @@ class PPCAsmPrinter : public AsmPrinter { public: explicit PPCAsmPrinter(TargetMachine &TM, - std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)) {} + std::unique_ptr Streamer, char &ID) + : AsmPrinter(TM, std::move(Streamer), ID) {} StringRef getPassName() const override { return "PowerPC Assembly Printer"; } @@ -216,9 +216,11 @@ class PPCAsmPrinter : public AsmPrinter { /// PPCLinuxAsmPrinter - PowerPC assembly printer, customized for Linux class PPCLinuxAsmPrinter : public PPCAsmPrinter { public: + static char ID; + explicit PPCLinuxAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : PPCAsmPrinter(TM, std::move(Streamer)) {} + : PPCAsmPrinter(TM, std::move(Streamer), ID) {} StringRef getPassName() const override { return "Linux PPC Assembly Printer"; @@ -262,8 +264,10 @@ class PPCAIXAsmPrinter : public PPCAsmPrinter { uint64_t getAliasOffset(const Constant *C); public: + static char ID; + PPCAIXAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : PPCAsmPrinter(TM, std::move(Streamer)) { + : PPCAsmPrinter(TM, std::move(Streamer), ID) { if (MAI->isLittleEndian()) report_fatal_error( "cannot create AIX PPC Assembly Printer for a little-endian target"); @@ -2219,6 +2223,11 @@ void PPCLinuxAsmPrinter::emitFunctionBodyEnd() { } } +char PPCLinuxAsmPrinter::ID = 0; + +INITIALIZE_PASS(PPCLinuxAsmPrinter, "ppc-linux-asm-printer", + "Linux PPC Assembly Printer", false, false) + void PPCAIXAsmPrinter::emitLinkage(const GlobalValue *GV, MCSymbol *GVSym) const { MCSymbolAttr LinkageAttr = MCSA_Invalid; @@ -3369,6 +3378,11 @@ void PPCAIXAsmPrinter::emitModuleCommandLines(Module &M) { OutStreamer->emitXCOFFCInfoSym(".GCC.command.line", RSOS.str()); } +char PPCAIXAsmPrinter::ID = 0; + +INITIALIZE_PASS(PPCAIXAsmPrinter, "ppc-aix-asm-printer", + "AIX PPC Assembly Printer", false, false) + // Force static initialization. extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializePowerPCAsmPrinter() { TargetRegistry::RegisterAsmPrinter(getThePPC32Target(), diff --git a/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp b/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp index 71b874ac81527..04cb8eafb11a6 100644 --- a/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp +++ b/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp @@ -144,6 +144,8 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializePowerPCTarget() { initializeGlobalISel(PR); initializePPCCTRLoopsPass(PR); initializePPCDAGToDAGISelLegacyPass(PR); + initializePPCLinuxAsmPrinterPass(PR); + initializePPCAIXAsmPrinterPass(PR); } static bool isLittleEndianTriple(const Triple &T) { diff --git a/llvm/lib/Target/RISCV/RISCV.h b/llvm/lib/Target/RISCV/RISCV.h index 06de86269c8a9..ae9410193efe1 100644 --- a/llvm/lib/Target/RISCV/RISCV.h +++ b/llvm/lib/Target/RISCV/RISCV.h @@ -116,6 +116,8 @@ void initializeRISCVVLOptimizerPass(PassRegistry &); FunctionPass *createRISCVVMV0EliminationPass(); void initializeRISCVVMV0EliminationPass(PassRegistry &); + +void initializeRISCVAsmPrinterPass(PassRegistry &); } // namespace llvm #endif diff --git a/llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp b/llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp index 7249eca22671a..e40bd184ddc38 100644 --- a/llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp +++ b/llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp @@ -55,12 +55,16 @@ extern const SubtargetFeatureKV RISCVFeatureKV[RISCV::NumSubtargetFeatures]; namespace { class RISCVAsmPrinter : public AsmPrinter { +public: + static char ID; + +private: const RISCVSubtarget *STI; public: explicit RISCVAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)) {} + : AsmPrinter(TM, std::move(Streamer), ID) {} StringRef getPassName() const override { return "RISC-V Assembly Printer"; } @@ -1210,3 +1214,8 @@ void RISCVAsmPrinter::emitMachineConstantPoolValue( uint64_t Size = getDataLayout().getTypeAllocSize(RCPV->getType()); OutStreamer->emitValue(Expr, Size); } + +char RISCVAsmPrinter::ID = 0; + +INITIALIZE_PASS(RISCVAsmPrinter, "riscv-asm-printer", "RISC-V Assembly Printer", + false, false) diff --git a/llvm/lib/Target/RISCV/RISCVTargetMachine.cpp b/llvm/lib/Target/RISCV/RISCVTargetMachine.cpp index 315b504399a45..d11ce46bf78b5 100644 --- a/llvm/lib/Target/RISCV/RISCVTargetMachine.cpp +++ b/llvm/lib/Target/RISCV/RISCVTargetMachine.cpp @@ -149,6 +149,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeRISCVTarget() { initializeRISCVLoadStoreOptPass(*PR); initializeRISCVExpandAtomicPseudoPass(*PR); initializeRISCVRedundantCopyEliminationPass(*PR); + initializeRISCVAsmPrinterPass(*PR); } static StringRef computeDataLayout(const Triple &TT, diff --git a/llvm/lib/Target/SPIRV/SPIRV.h b/llvm/lib/Target/SPIRV/SPIRV.h index 51728d1aa678d..1688fa32ce436 100644 --- a/llvm/lib/Target/SPIRV/SPIRV.h +++ b/llvm/lib/Target/SPIRV/SPIRV.h @@ -36,6 +36,7 @@ createSPIRVInstructionSelector(const SPIRVTargetMachine &TM, const RegisterBankInfo &RBI); void initializeSPIRVModuleAnalysisPass(PassRegistry &); +void initializeSPIRVAsmPrinterPass(PassRegistry &); void initializeSPIRVConvergenceRegionAnalysisWrapperPassPass(PassRegistry &); void initializeSPIRVPreLegalizerPass(PassRegistry &); void initializeSPIRVPreLegalizerCombinerPass(PassRegistry &); diff --git a/llvm/lib/Target/SPIRV/SPIRVAsmPrinter.cpp b/llvm/lib/Target/SPIRV/SPIRVAsmPrinter.cpp index f17c8a8fac14b..6a75e73e31718 100644 --- a/llvm/lib/Target/SPIRV/SPIRVAsmPrinter.cpp +++ b/llvm/lib/Target/SPIRV/SPIRVAsmPrinter.cpp @@ -50,7 +50,8 @@ class SPIRVAsmPrinter : public AsmPrinter { public: explicit SPIRVAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)), ST(nullptr), TII(nullptr) {} + : AsmPrinter(TM, std::move(Streamer), ID), ST(nullptr), TII(nullptr) {} + static char ID; bool ModuleSectionsEmitted; const SPIRVSubtarget *ST; const SPIRVInstrInfo *TII; @@ -635,6 +636,11 @@ bool SPIRVAsmPrinter::doInitialization(Module &M) { return AsmPrinter::doInitialization(M); } +char SPIRVAsmPrinter::ID = 0; + +INITIALIZE_PASS(SPIRVAsmPrinter, "spirv-asm-printer", "SPIRV Assembly Printer", + false, false) + // Force static initialization. extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeSPIRVAsmPrinter() { RegisterAsmPrinter X(getTheSPIRV32Target()); diff --git a/llvm/lib/Target/SPIRV/SPIRVTargetMachine.cpp b/llvm/lib/Target/SPIRV/SPIRVTargetMachine.cpp index 2127148a0ef18..c7ac76b8e8ace 100644 --- a/llvm/lib/Target/SPIRV/SPIRVTargetMachine.cpp +++ b/llvm/lib/Target/SPIRV/SPIRVTargetMachine.cpp @@ -46,6 +46,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeSPIRVTarget() { PassRegistry &PR = *PassRegistry::getPassRegistry(); initializeGlobalISel(PR); initializeSPIRVModuleAnalysisPass(PR); + initializeSPIRVAsmPrinterPass(PR); initializeSPIRVConvergenceRegionAnalysisWrapperPassPass(PR); initializeSPIRVStructurizerPass(PR); initializeSPIRVPreLegalizerCombinerPass(PR); diff --git a/llvm/lib/Target/Sparc/Sparc.h b/llvm/lib/Target/Sparc/Sparc.h index 60f20e6ab232f..492889e43b8de 100644 --- a/llvm/lib/Target/Sparc/Sparc.h +++ b/llvm/lib/Target/Sparc/Sparc.h @@ -29,6 +29,7 @@ class SparcTargetMachine; FunctionPass *createSparcISelDag(SparcTargetMachine &TM); FunctionPass *createSparcDelaySlotFillerPass(); +void initializeSparcAsmPrinterPass(PassRegistry &); void initializeSparcDAGToDAGISelLegacyPass(PassRegistry &); void initializeErrataWorkaroundPass(PassRegistry &); } // namespace llvm diff --git a/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp b/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp index 3cf26ce209ac9..a30cf5a661bb3 100644 --- a/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp +++ b/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp @@ -47,7 +47,7 @@ class SparcAsmPrinter : public AsmPrinter { public: explicit SparcAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)) {} + : AsmPrinter(TM, std::move(Streamer), ID) {} StringRef getPassName() const override { return "Sparc Assembly Printer"; } @@ -73,6 +73,9 @@ class SparcAsmPrinter : public AsmPrinter { private: void lowerToMCInst(const MachineInstr *MI, MCInst &OutMI); + +public: + static char ID; }; } // end of anonymous namespace @@ -503,6 +506,11 @@ bool SparcAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI, return false; } +char SparcAsmPrinter::ID = 0; + +INITIALIZE_PASS(SparcAsmPrinter, "sparc-asm-printer", "Sparc Assembly Printer", + false, false) + // Force static initialization. extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeSparcAsmPrinter() { RegisterAsmPrinter X(getTheSparcTarget()); diff --git a/llvm/lib/Target/Sparc/SparcTargetMachine.cpp b/llvm/lib/Target/Sparc/SparcTargetMachine.cpp index abbd56a41d9ca..d4d8cbb044dec 100644 --- a/llvm/lib/Target/Sparc/SparcTargetMachine.cpp +++ b/llvm/lib/Target/Sparc/SparcTargetMachine.cpp @@ -28,6 +28,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeSparcTarget() { RegisterTargetMachine Z(getTheSparcelTarget()); PassRegistry &PR = *PassRegistry::getPassRegistry(); + initializeSparcAsmPrinterPass(PR); initializeSparcDAGToDAGISelLegacyPass(PR); initializeErrataWorkaroundPass(PR); } diff --git a/llvm/lib/Target/SystemZ/SystemZ.h b/llvm/lib/Target/SystemZ/SystemZ.h index 4d6ec7664de19..a0cf881f365d5 100644 --- a/llvm/lib/Target/SystemZ/SystemZ.h +++ b/llvm/lib/Target/SystemZ/SystemZ.h @@ -198,6 +198,7 @@ FunctionPass *createSystemZCopyPhysRegsPass(SystemZTargetMachine &TM); FunctionPass *createSystemZPostRewritePass(SystemZTargetMachine &TM); FunctionPass *createSystemZTDCPass(); +void initializeSystemZAsmPrinterPass(PassRegistry &); void initializeSystemZCopyPhysRegsPass(PassRegistry &); void initializeSystemZDAGToDAGISelLegacyPass(PassRegistry &); void initializeSystemZElimComparePass(PassRegistry &); diff --git a/llvm/lib/Target/SystemZ/SystemZAsmPrinter.cpp b/llvm/lib/Target/SystemZ/SystemZAsmPrinter.cpp index c1ffc287235e5..57911ac1ec2f4 100644 --- a/llvm/lib/Target/SystemZ/SystemZAsmPrinter.cpp +++ b/llvm/lib/Target/SystemZ/SystemZAsmPrinter.cpp @@ -1742,6 +1742,11 @@ void SystemZAsmPrinter::emitFunctionEntryLabel() { AsmPrinter::emitFunctionEntryLabel(); } +char SystemZAsmPrinter::ID = 0; + +INITIALIZE_PASS(SystemZAsmPrinter, "systemz-asm-printer", + "SystemZ Assembly Printer", false, false) + // Force static initialization. extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeSystemZAsmPrinter() { RegisterAsmPrinter X(getTheSystemZTarget()); diff --git a/llvm/lib/Target/SystemZ/SystemZAsmPrinter.h b/llvm/lib/Target/SystemZ/SystemZAsmPrinter.h index 47e7f67e2cdc7..cb101e472824f 100644 --- a/llvm/lib/Target/SystemZ/SystemZAsmPrinter.h +++ b/llvm/lib/Target/SystemZ/SystemZAsmPrinter.h @@ -24,6 +24,9 @@ class Module; class raw_ostream; class LLVM_LIBRARY_VISIBILITY SystemZAsmPrinter : public AsmPrinter { +public: + static char ID; + private: MCSymbol *CurrentFnPPA1Sym; // PPA1 Symbol. MCSymbol *CurrentFnEPMarkerSym; // Entry Point Marker. @@ -97,7 +100,7 @@ class LLVM_LIBRARY_VISIBILITY SystemZAsmPrinter : public AsmPrinter { public: SystemZAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)), CurrentFnPPA1Sym(nullptr), + : AsmPrinter(TM, std::move(Streamer), ID), CurrentFnPPA1Sym(nullptr), CurrentFnEPMarkerSym(nullptr), PPA2Sym(nullptr), ADATable(TM.getPointerSize(0)) {} diff --git a/llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp b/llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp index f8b0fdcf8fd18..0f790ca3a64bb 100644 --- a/llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp +++ b/llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp @@ -40,6 +40,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeSystemZTarget() { // Register the target. RegisterTargetMachine X(getTheSystemZTarget()); auto &PR = *PassRegistry::getPassRegistry(); + initializeSystemZAsmPrinterPass(PR); initializeSystemZElimComparePass(PR); initializeSystemZShortenInstPass(PR); initializeSystemZLongBranchPass(PR); diff --git a/llvm/lib/Target/VE/VE.h b/llvm/lib/Target/VE/VE.h index ee76c5121d362..ef0484e3981e0 100644 --- a/llvm/lib/Target/VE/VE.h +++ b/llvm/lib/Target/VE/VE.h @@ -29,6 +29,7 @@ class VETargetMachine; FunctionPass *createVEISelDag(VETargetMachine &TM); FunctionPass *createLVLGenPass(); +void initializeVEAsmPrinterPass(PassRegistry &); void initializeVEDAGToDAGISelLegacyPass(PassRegistry &); void LowerVEMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI, diff --git a/llvm/lib/Target/VE/VEAsmPrinter.cpp b/llvm/lib/Target/VE/VEAsmPrinter.cpp index 79d5840d11363..ee347cda05217 100644 --- a/llvm/lib/Target/VE/VEAsmPrinter.cpp +++ b/llvm/lib/Target/VE/VEAsmPrinter.cpp @@ -41,7 +41,7 @@ class VEAsmPrinter : public AsmPrinter { public: explicit VEAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)) {} + : AsmPrinter(TM, std::move(Streamer), ID) {} StringRef getPassName() const override { return "VE Assembly Printer"; } @@ -62,6 +62,8 @@ class VEAsmPrinter : public AsmPrinter { const char *ExtraCode, raw_ostream &O) override; bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo, const char *ExtraCode, raw_ostream &O) override; + + static char ID; }; } // end of anonymous namespace @@ -419,6 +421,11 @@ bool VEAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo, return false; } +char VEAsmPrinter::ID = 0; + +INITIALIZE_PASS(VEAsmPrinter, "ve-asm-printer", "VE Assembly Printer", false, + false) + // Force static initialization. extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeVEAsmPrinter() { RegisterAsmPrinter X(getTheVETarget()); diff --git a/llvm/lib/Target/VE/VETargetMachine.cpp b/llvm/lib/Target/VE/VETargetMachine.cpp index a7ee4ffe0d5c3..664a54cea7c52 100644 --- a/llvm/lib/Target/VE/VETargetMachine.cpp +++ b/llvm/lib/Target/VE/VETargetMachine.cpp @@ -30,6 +30,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeVETarget() { RegisterTargetMachine X(getTheVETarget()); PassRegistry &PR = *PassRegistry::getPassRegistry(); + initializeVEAsmPrinterPass(PR); initializeVEDAGToDAGISelLegacyPass(PR); } diff --git a/llvm/lib/Target/WebAssembly/WebAssembly.h b/llvm/lib/Target/WebAssembly/WebAssembly.h index 8f142fa0928ca..17481d77c120a 100644 --- a/llvm/lib/Target/WebAssembly/WebAssembly.h +++ b/llvm/lib/Target/WebAssembly/WebAssembly.h @@ -64,6 +64,7 @@ void initializeOptimizeReturnedPass(PassRegistry &); void initializeWebAssemblyRefTypeMem2LocalPass(PassRegistry &); void initializeWebAssemblyAddMissingPrototypesPass(PassRegistry &); void initializeWebAssemblyArgumentMovePass(PassRegistry &); +void initializeWebAssemblyAsmPrinterPass(PassRegistry &); void initializeWebAssemblyCleanCodeAfterTrapPass(PassRegistry &); void initializeWebAssemblyCFGSortPass(PassRegistry &); void initializeWebAssemblyCFGStackifyPass(PassRegistry &); diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp index 22803ff89d060..c61ed3c7d5d81 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp @@ -19,6 +19,7 @@ #include "MCTargetDesc/WebAssemblyTargetStreamer.h" #include "TargetInfo/WebAssemblyTargetInfo.h" #include "Utils/WebAssemblyTypeUtilities.h" +#include "WebAssembly.h" #include "WebAssemblyMCInstLower.h" #include "WebAssemblyMachineFunctionInfo.h" #include "WebAssemblyRegisterInfo.h" @@ -752,6 +753,11 @@ bool WebAssemblyAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI, return AsmPrinter::PrintAsmMemoryOperand(MI, OpNo, ExtraCode, OS); } +char WebAssemblyAsmPrinter::ID = 0; + +INITIALIZE_PASS(WebAssemblyAsmPrinter, "webassembly-asm-printer", + "WebAssembly Assmebly Printer", false, false) + // Force static initialization. extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeWebAssemblyAsmPrinter() { RegisterAsmPrinter X(getTheWebAssemblyTarget32()); diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.h b/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.h index 6a544abe6ce83..46063bbe0fba1 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.h +++ b/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.h @@ -19,6 +19,10 @@ namespace llvm { class WebAssemblyTargetStreamer; class LLVM_LIBRARY_VISIBILITY WebAssemblyAsmPrinter final : public AsmPrinter { +public: + static char ID; + +private: const WebAssemblySubtarget *Subtarget; const MachineRegisterInfo *MRI; WebAssemblyFunctionInfo *MFI; @@ -27,8 +31,8 @@ class LLVM_LIBRARY_VISIBILITY WebAssemblyAsmPrinter final : public AsmPrinter { public: explicit WebAssemblyAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)), Subtarget(nullptr), MRI(nullptr), - MFI(nullptr) {} + : AsmPrinter(TM, std::move(Streamer), ID), Subtarget(nullptr), + MRI(nullptr), MFI(nullptr) {} StringRef getPassName() const override { return "WebAssembly Assembly Printer"; diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp index cc96d7b2293f4..adb446b20ebf5 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp @@ -69,6 +69,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeWebAssemblyTarget() { initializeOptimizeReturnedPass(PR); initializeWebAssemblyRefTypeMem2LocalPass(PR); initializeWebAssemblyArgumentMovePass(PR); + initializeWebAssemblyAsmPrinterPass(PR); initializeWebAssemblySetP2AlignOperandsPass(PR); initializeWebAssemblyReplacePhysRegsPass(PR); initializeWebAssemblyOptimizeLiveIntervalsPass(PR); diff --git a/llvm/lib/Target/X86/X86.h b/llvm/lib/Target/X86/X86.h index e6c0612101bc7..ba53ffd857fb3 100644 --- a/llvm/lib/Target/X86/X86.h +++ b/llvm/lib/Target/X86/X86.h @@ -176,6 +176,7 @@ void initializeFPSPass(PassRegistry &); void initializeFixupBWInstPassPass(PassRegistry &); void initializeFixupLEAPassPass(PassRegistry &); void initializeX86ArgumentStackSlotPassPass(PassRegistry &); +void initializeX86AsmPrinterPass(PassRegistry &); void initializeX86FixupInstTuningPassPass(PassRegistry &); void initializeX86FixupVectorConstantsPassPass(PassRegistry &); void initializeWinEHStatePassPass(PassRegistry &); diff --git a/llvm/lib/Target/X86/X86AsmPrinter.cpp b/llvm/lib/Target/X86/X86AsmPrinter.cpp index 29ec14e8cf46d..5f5bfc70e8a1a 100644 --- a/llvm/lib/Target/X86/X86AsmPrinter.cpp +++ b/llvm/lib/Target/X86/X86AsmPrinter.cpp @@ -17,6 +17,7 @@ #include "MCTargetDesc/X86MCTargetDesc.h" #include "MCTargetDesc/X86TargetStreamer.h" #include "TargetInfo/X86TargetInfo.h" +#include "X86.h" #include "X86InstrInfo.h" #include "X86MachineFunctionInfo.h" #include "X86Subtarget.h" @@ -53,7 +54,7 @@ using namespace llvm; X86AsmPrinter::X86AsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)), FM(*this) {} + : AsmPrinter(TM, std::move(Streamer), ID), FM(*this) {} //===----------------------------------------------------------------------===// // Primitive Helper Functions. @@ -1086,6 +1087,11 @@ void X86AsmPrinter::emitEndOfAsmFile(Module &M) { } } +char X86AsmPrinter::ID = 0; + +INITIALIZE_PASS(X86AsmPrinter, "x86-asm-printer", "X86 Assembly Printer", false, + false) + //===----------------------------------------------------------------------===// // Target Registry Stuff //===----------------------------------------------------------------------===// diff --git a/llvm/lib/Target/X86/X86AsmPrinter.h b/llvm/lib/Target/X86/X86AsmPrinter.h index 8dd7fa4431680..61d8f45501ab1 100644 --- a/llvm/lib/Target/X86/X86AsmPrinter.h +++ b/llvm/lib/Target/X86/X86AsmPrinter.h @@ -25,6 +25,10 @@ class X86Subtarget; class TargetMachine; class LLVM_LIBRARY_VISIBILITY X86AsmPrinter : public AsmPrinter { +public: + static char ID; + +private: const X86Subtarget *Subtarget = nullptr; FaultMaps FM; std::unique_ptr CodeEmitter; diff --git a/llvm/lib/Target/X86/X86TargetMachine.cpp b/llvm/lib/Target/X86/X86TargetMachine.cpp index 975b94c18fb7f..5fff9c30205dd 100644 --- a/llvm/lib/Target/X86/X86TargetMachine.cpp +++ b/llvm/lib/Target/X86/X86TargetMachine.cpp @@ -102,6 +102,7 @@ extern "C" LLVM_C_ABI void LLVMInitializeX86Target() { initializeX86ReturnThunksPass(PR); initializeX86DAGToDAGISelLegacyPass(PR); initializeX86ArgumentStackSlotPassPass(PR); + initializeX86AsmPrinterPass(PR); initializeX86FixupInstTuningPassPass(PR); initializeX86FixupVectorConstantsPassPass(PR); initializeX86DynAllocaExpanderPass(PR); diff --git a/llvm/lib/Target/XCore/XCore.h b/llvm/lib/Target/XCore/XCore.h index ad50f05a89d86..213bdbf7bec67 100644 --- a/llvm/lib/Target/XCore/XCore.h +++ b/llvm/lib/Target/XCore/XCore.h @@ -31,6 +31,7 @@ namespace llvm { FunctionPass *createXCoreISelDag(XCoreTargetMachine &TM, CodeGenOptLevel OptLevel); ModulePass *createXCoreLowerThreadLocalPass(); + void initializeXCoreAsmPrinterPass(PassRegistry &); void initializeXCoreDAGToDAGISelLegacyPass(PassRegistry &); } // end namespace llvm; diff --git a/llvm/lib/Target/XCore/XCoreAsmPrinter.cpp b/llvm/lib/Target/XCore/XCoreAsmPrinter.cpp index a1f7608224b90..2aaeecfc1e494 100644 --- a/llvm/lib/Target/XCore/XCoreAsmPrinter.cpp +++ b/llvm/lib/Target/XCore/XCoreAsmPrinter.cpp @@ -49,9 +49,11 @@ namespace { XCoreTargetStreamer &getTargetStreamer(); public: + static char ID; + explicit XCoreAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)), MCInstLowering(*this) {} + : AsmPrinter(TM, std::move(Streamer), ID), MCInstLowering(*this) {} StringRef getPassName() const override { return "XCore Assembly Printer"; } @@ -288,6 +290,11 @@ void XCoreAsmPrinter::emitInstruction(const MachineInstr *MI) { EmitToStreamer(*OutStreamer, TmpInst); } +char XCoreAsmPrinter::ID = 0; + +INITIALIZE_PASS(XCoreAsmPrinter, "xcore-asm-printer", "XCore Assembly Printer", + false, false) + // Force static initialization. extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeXCoreAsmPrinter() { RegisterAsmPrinter X(getTheXCoreTarget()); diff --git a/llvm/lib/Target/XCore/XCoreTargetMachine.cpp b/llvm/lib/Target/XCore/XCoreTargetMachine.cpp index 4672174f5aa95..3627b81a48055 100644 --- a/llvm/lib/Target/XCore/XCoreTargetMachine.cpp +++ b/llvm/lib/Target/XCore/XCoreTargetMachine.cpp @@ -105,6 +105,7 @@ void XCorePassConfig::addPreEmitPass() { extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeXCoreTarget() { RegisterTargetMachine X(getTheXCoreTarget()); PassRegistry &PR = *PassRegistry::getPassRegistry(); + initializeXCoreAsmPrinterPass(PR); initializeXCoreDAGToDAGISelLegacyPass(PR); initializeXCoreLowerThreadLocalPass(PR); } diff --git a/llvm/lib/Target/Xtensa/Xtensa.h b/llvm/lib/Target/Xtensa/Xtensa.h index da44e30f367fa..4d57bfdc1196b 100644 --- a/llvm/lib/Target/Xtensa/Xtensa.h +++ b/llvm/lib/Target/Xtensa/Xtensa.h @@ -19,10 +19,12 @@ #include "llvm/Support/CodeGen.h" namespace llvm { -class XtensaTargetMachine; class FunctionPass; +class PassRegistry; +class XtensaTargetMachine; FunctionPass *createXtensaISelDag(XtensaTargetMachine &TM, CodeGenOptLevel OptLevel); +void initializeXtensaAsmPrinterPass(PassRegistry &); } // namespace llvm #endif // LLVM_LIB_TARGET_XTENSA_XTENSA_H diff --git a/llvm/lib/Target/Xtensa/XtensaAsmPrinter.cpp b/llvm/lib/Target/Xtensa/XtensaAsmPrinter.cpp index a622ea2611cdb..9182ea272befe 100644 --- a/llvm/lib/Target/Xtensa/XtensaAsmPrinter.cpp +++ b/llvm/lib/Target/Xtensa/XtensaAsmPrinter.cpp @@ -312,6 +312,11 @@ void XtensaAsmPrinter::lowerToMCInst(const MachineInstr *MI, } } +char XtensaAsmPrinter::ID = 0; + +INITIALIZE_PASS(XtensaAsmPrinter, "xtensa-asm-printer", + "Xtensa Assembly Printer", false, false) + extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeXtensaAsmPrinter() { RegisterAsmPrinter A(getTheXtensaTarget()); } diff --git a/llvm/lib/Target/Xtensa/XtensaAsmPrinter.h b/llvm/lib/Target/Xtensa/XtensaAsmPrinter.h index 1137309cd9a45..5ab2f79925113 100644 --- a/llvm/lib/Target/Xtensa/XtensaAsmPrinter.h +++ b/llvm/lib/Target/Xtensa/XtensaAsmPrinter.h @@ -29,9 +29,11 @@ class LLVM_LIBRARY_VISIBILITY XtensaAsmPrinter : public AsmPrinter { const MCSubtargetInfo *STI; public: + static char ID; + explicit XtensaAsmPrinter(TargetMachine &TM, std::unique_ptr Streamer) - : AsmPrinter(TM, std::move(Streamer)), STI(TM.getMCSubtargetInfo()) {} + : AsmPrinter(TM, std::move(Streamer), ID), STI(TM.getMCSubtargetInfo()) {} StringRef getPassName() const override { return "Xtensa Assembly Printer"; } void emitInstruction(const MachineInstr *MI) override; diff --git a/llvm/lib/Target/Xtensa/XtensaTargetMachine.cpp b/llvm/lib/Target/Xtensa/XtensaTargetMachine.cpp index 634ada375a3dc..8d2dca6c23721 100644 --- a/llvm/lib/Target/Xtensa/XtensaTargetMachine.cpp +++ b/llvm/lib/Target/Xtensa/XtensaTargetMachine.cpp @@ -19,6 +19,7 @@ #include "llvm/CodeGen/TargetLoweringObjectFileImpl.h" #include "llvm/CodeGen/TargetPassConfig.h" #include "llvm/MC/TargetRegistry.h" +#include "llvm/PassRegistry.h" #include "llvm/Transforms/Scalar.h" #include @@ -27,6 +28,8 @@ using namespace llvm; extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeXtensaTarget() { // Register the target. RegisterTargetMachine A(getTheXtensaTarget()); + PassRegistry &PR = *PassRegistry::getPassRegistry(); + initializeXtensaAsmPrinterPass(PR); } static std::string computeDataLayout(const Triple &TT, StringRef CPU, diff --git a/llvm/test/CodeGen/AMDGPU/asm-printer-check-vcc.mir b/llvm/test/CodeGen/AMDGPU/asm-printer-check-vcc.mir index c589c10c1da1d..813b2238e5446 100644 --- a/llvm/test/CodeGen/AMDGPU/asm-printer-check-vcc.mir +++ b/llvm/test/CodeGen/AMDGPU/asm-printer-check-vcc.mir @@ -1,4 +1,4 @@ -# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -start-after=livedebugvalues -verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s +# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -start-before=amdgpu-asm-printer -verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s # GCN-LABEL: foo: # GCN: s_getpc_b64 vcc diff --git a/llvm/test/CodeGen/RISCV/instruction-count-remark.mir b/llvm/test/CodeGen/RISCV/instruction-count-remark.mir index 4f429ab5274e8..f39a6ea6424f3 100644 --- a/llvm/test/CodeGen/RISCV/instruction-count-remark.mir +++ b/llvm/test/CodeGen/RISCV/instruction-count-remark.mir @@ -1,4 +1,4 @@ -# RUN: llc -mtriple=riscv32 -verify-machineinstrs -start-before=riscv-expand-pseudo -simplify-mir -o /dev/null -pass-remarks-analysis=asm-printer %s 2>&1 | FileCheck %s +# RUN: llc -mtriple=riscv32 -verify-machineinstrs -start-before=riscv-asm-printer -simplify-mir -o /dev/null -pass-remarks-analysis=asm-printer %s 2>&1 | FileCheck %s --- name: instrs tracksRegLiveness: true diff --git a/llvm/test/CodeGen/X86/align-basic-block-sections.mir b/llvm/test/CodeGen/X86/align-basic-block-sections.mir index 17a675f5c5b72..02ccbcf0c0897 100644 --- a/llvm/test/CodeGen/X86/align-basic-block-sections.mir +++ b/llvm/test/CodeGen/X86/align-basic-block-sections.mir @@ -1,5 +1,5 @@ # Check if the alignment directive is put on the correct place when the basic block section option is used. -# RUN: llc -mtriple x86_64-unknown-linux-gnu -start-after=bbsections-prepare %s -o - | FileCheck %s -check-prefix=CHECK +# RUN: llc -mtriple x86_64-unknown-linux-gnu -start-before=x86-asm-printer %s -o - | FileCheck %s -check-prefix=CHECK # How to generate the input: # foo.c diff --git a/llvm/test/CodeGen/X86/basic-block-address-map-mir-parse.mir b/llvm/test/CodeGen/X86/basic-block-address-map-mir-parse.mir index 8ac93c79fa5a2..a49a4e2726021 100644 --- a/llvm/test/CodeGen/X86/basic-block-address-map-mir-parse.mir +++ b/llvm/test/CodeGen/X86/basic-block-address-map-mir-parse.mir @@ -1,5 +1,5 @@ # Start after bbsections0-prepare and check that the BB address map is generated. -# RUN: llc -mtriple x86_64-unknown-linux-gnu -start-after=bbsections-prepare -basic-block-address-map %s -o - | FileCheck %s -check-prefix=CHECK +# RUN: llc -mtriple x86_64-unknown-linux-gnu -start-before=x86-asm-printer -basic-block-address-map %s -o - | FileCheck %s -check-prefix=CHECK # How to generate the input: # foo.cc diff --git a/llvm/test/CodeGen/X86/basic-block-sections-mir-parse.mir b/llvm/test/CodeGen/X86/basic-block-sections-mir-parse.mir index 967622a11cd2b..e49ff140935a3 100644 --- a/llvm/test/CodeGen/X86/basic-block-sections-mir-parse.mir +++ b/llvm/test/CodeGen/X86/basic-block-sections-mir-parse.mir @@ -1,5 +1,5 @@ # Start after bbsections0-prepare and check if the right code is generated. -# RUN: llc -mtriple x86_64-unknown-linux-gnu -start-after=bbsections-prepare %s -o - | FileCheck %s -check-prefix=CHECK +# RUN: llc -mtriple x86_64-unknown-linux-gnu -start-before=x86-asm-printer %s -o - | FileCheck %s -check-prefix=CHECK # How to generate the input: diff --git a/llvm/test/DebugInfo/MIR/AArch64/clobber-sp.mir b/llvm/test/DebugInfo/MIR/AArch64/clobber-sp.mir index c245684f1fca8..b248ee76a4141 100644 --- a/llvm/test/DebugInfo/MIR/AArch64/clobber-sp.mir +++ b/llvm/test/DebugInfo/MIR/AArch64/clobber-sp.mir @@ -1,4 +1,4 @@ -# RUN: llc -start-after=livedebugvalues -filetype=obj -o - %s \ +# RUN: llc -start-before=aarch64-asm-printer -filetype=obj -o - %s \ # RUN: | llvm-dwarfdump - | FileCheck %s # CHECK: .debug_info contents: # CHECK: DW_TAG_formal_parameter diff --git a/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-expr-chain.mir b/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-expr-chain.mir index 02f4ce1200ca1..0f949f4d7eea8 100644 --- a/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-expr-chain.mir +++ b/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-expr-chain.mir @@ -1,4 +1,4 @@ -# RUN: llc -mtriple aarch64-linux-gnu -emit-call-site-info -debug-entry-values -start-after=livedebugvalues -filetype=obj -o - %s \ +# RUN: llc -mtriple aarch64-linux-gnu -emit-call-site-info -debug-entry-values -start-before=aarch64-asm-printer -filetype=obj -o - %s \ # RUN: | llvm-dwarfdump - | FileCheck %s --implicit-check-not=DW_TAG_GNU_call_site_parameter # # Based on the following C reproducer: diff --git a/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-expr-entry-value.mir b/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-expr-entry-value.mir index 6c8912302c4cd..d7740e0e59db1 100644 --- a/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-expr-entry-value.mir +++ b/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-expr-entry-value.mir @@ -1,4 +1,4 @@ -# RUN: llc -mtriple aarch64-linux-gnu -emit-call-site-info -debug-entry-values -start-after=livedebugvalues -filetype=obj -o - %s \ +# RUN: llc -mtriple aarch64-linux-gnu -emit-call-site-info -debug-entry-values -start-before=aarch64-asm-printer -filetype=obj -o - %s \ # RUN: | llvm-dwarfdump - | FileCheck %s --implicit-check-not=DW_TAG_GNU_call_site_parameter # # Based on the following C reproducer: diff --git a/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-orr-moves.mir b/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-orr-moves.mir index 389121914ba8b..bf04b20171415 100644 --- a/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-orr-moves.mir +++ b/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-orr-moves.mir @@ -1,4 +1,4 @@ -# RUN: llc -emit-call-site-info -start-after=livedebugvalues -filetype=obj -o - %s | llvm-dwarfdump - | FileCheck %s +# RUN: llc -emit-call-site-info -start-before=aarch64-asm-printer -filetype=obj -o - %s | llvm-dwarfdump - | FileCheck %s # Based on the following C reproducer: # diff --git a/llvm/test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mir b/llvm/test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mir index 1479b3728ad0e..113a0035fe7f6 100644 --- a/llvm/test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mir +++ b/llvm/test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mir @@ -1,4 +1,4 @@ -# RUN: llc -emit-call-site-info -start-after=livedebugvalues -filetype=obj -o - %s \ +# RUN: llc -emit-call-site-info -start-before=aarch64-asm-printer -filetype=obj -o - %s \ # RUN: | llvm-dwarfdump -v - | FileCheck %s # This tests for a crash in DwarfDebug's singular DBG_VALUE range promotion when diff --git a/llvm/test/DebugInfo/MIR/AArch64/no-dbg-value-after-terminator.mir b/llvm/test/DebugInfo/MIR/AArch64/no-dbg-value-after-terminator.mir index 22e96681f23d9..34c099f27becb 100644 --- a/llvm/test/DebugInfo/MIR/AArch64/no-dbg-value-after-terminator.mir +++ b/llvm/test/DebugInfo/MIR/AArch64/no-dbg-value-after-terminator.mir @@ -1,4 +1,4 @@ -# RUN: not --crash llc -mtriple aarch64-linux-gnu -verify-machineinstrs -start-after=livedebugvalues \ +# RUN: not --crash llc -mtriple aarch64-linux-gnu -verify-machineinstrs -start-before=aarch64-asm-printer \ # RUN: -filetype=obj -o /dev/null %s 2>&1 | FileCheck %s # CHECK: *** Bad machine code: Non-terminator instruction after the first terminator *** diff --git a/llvm/test/DebugInfo/MIR/AArch64/subreg-fragment-overflow.mir b/llvm/test/DebugInfo/MIR/AArch64/subreg-fragment-overflow.mir index d0b138429d964..19a90b654abd2 100644 --- a/llvm/test/DebugInfo/MIR/AArch64/subreg-fragment-overflow.mir +++ b/llvm/test/DebugInfo/MIR/AArch64/subreg-fragment-overflow.mir @@ -1,4 +1,4 @@ -# RUN: llc -mtriple aarch64-linux-gnu -start-after=livedebugvalues -filetype=obj -o - %s \ +# RUN: llc -mtriple aarch64-linux-gnu -start-before=aarch64-asm-printer -filetype=obj -o - %s \ # RUN: | llvm-dwarfdump - | FileCheck %s # The value needs to be composed of sub-registers, but the # sub-registers cross the fragment boundary. diff --git a/llvm/test/DebugInfo/X86/single-location.mir b/llvm/test/DebugInfo/X86/single-location.mir index 79049e31f3710..a1a167eda628b 100644 --- a/llvm/test/DebugInfo/X86/single-location.mir +++ b/llvm/test/DebugInfo/X86/single-location.mir @@ -1,4 +1,4 @@ -# RUN: llc -start-after=livedebugvalues --filetype=obj %s -o - \ +# RUN: llc -start-before=x86-asm-printer --filetype=obj %s -o - \ # RUN: | llvm-dwarfdump -v - | FileCheck %s # # Generated at -O2, stopped after livedebugvalues, with some metadata removed