[llvm] 3204740 - [M68k] Register MIR Passes with the PassRegistry

Min-Yih Hsu via llvm-commits llvm-commits at lists.llvm.org
Tue May 9 11:12:16 PDT 2023


Author: Min-Yih Hsu
Date: 2023-05-09T10:58:11-07:00
New Revision: 3204740bde796fc37251acddb7b3e123c0ec9196

URL: https://github.com/llvm/llvm-project/commit/3204740bde796fc37251acddb7b3e123c0ec9196
DIFF: https://github.com/llvm/llvm-project/commit/3204740bde796fc37251acddb7b3e123c0ec9196.diff

LOG: [M68k] Register MIR Passes with the PassRegistry

In order to use the -stop-before/after infrastructure. Also remove the
creator function for M68kConvertMOVToMOVMPass, which has never been
created.

NFC.

Added: 
    

Modified: 
    llvm/lib/Target/M68k/M68k.h
    llvm/lib/Target/M68k/M68kCollapseMOVEMPass.cpp
    llvm/lib/Target/M68k/M68kExpandPseudo.cpp
    llvm/lib/Target/M68k/M68kInstrInfo.cpp
    llvm/lib/Target/M68k/M68kTargetMachine.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/M68k/M68k.h b/llvm/lib/Target/M68k/M68k.h
index 71c4cf8e36415..1d0f383dc5c94 100644
--- a/llvm/lib/Target/M68k/M68k.h
+++ b/llvm/lib/Target/M68k/M68k.h
@@ -42,18 +42,14 @@ FunctionPass *createM68kGlobalBaseRegPass();
 /// emission so that all possible MOVEM are already in place.
 FunctionPass *createM68kCollapseMOVEMPass();
 
-/// Finds MOVE instructions before any conditioanl branch instruction and
-/// replaces them with MOVEM instruction. Motorola's MOVEs do trash(V,C) flags
-/// register which prevents branch from taking the correct route. This pass
-/// has to be run after all pseudo expansions and prologue/epilogue emission
-/// so that all possible MOVEs are present.
-FunctionPass *createM68kConvertMOVToMOVMPass();
-
 InstructionSelector *
 createM68kInstructionSelector(const M68kTargetMachine &, const M68kSubtarget &,
                               const M68kRegisterBankInfo &);
 
 void initializeM68kDAGToDAGISelPass(PassRegistry &);
+void initializeM68kExpandPseudoPass(PassRegistry &);
+void initializeM68kGlobalBaseRegPass(PassRegistry &);
+void initializeM68kCollapseMOVEMPass(PassRegistry &);
 
 } // namespace llvm
 

diff  --git a/llvm/lib/Target/M68k/M68kCollapseMOVEMPass.cpp b/llvm/lib/Target/M68k/M68kCollapseMOVEMPass.cpp
index 121974b46b334..a40b08ade61d0 100644
--- a/llvm/lib/Target/M68k/M68kCollapseMOVEMPass.cpp
+++ b/llvm/lib/Target/M68k/M68kCollapseMOVEMPass.cpp
@@ -29,7 +29,8 @@
 
 using namespace llvm;
 
-#define DEBUG_TYPE "M68k-collapse-movem"
+#define DEBUG_TYPE "m68k-collapse-movem"
+#define PASS_NAME "M68k MOVEM collapser pass"
 
 namespace {
 
@@ -294,13 +295,13 @@ class M68kCollapseMOVEM : public MachineFunctionPass {
 
     return Modified;
   }
-
-  StringRef getPassName() const override { return "M68k MOVEM collapser pass"; }
 };
 
 char M68kCollapseMOVEM::ID = 0;
 } // anonymous namespace.
 
+INITIALIZE_PASS(M68kCollapseMOVEM, DEBUG_TYPE, PASS_NAME, false, false)
+
 /// Returns an instance of the pseudo instruction expansion pass.
 FunctionPass *llvm::createM68kCollapseMOVEMPass() {
   return new M68kCollapseMOVEM();

diff  --git a/llvm/lib/Target/M68k/M68kExpandPseudo.cpp b/llvm/lib/Target/M68k/M68kExpandPseudo.cpp
index 09e72e20cbe51..2f60fc834a18e 100644
--- a/llvm/lib/Target/M68k/M68kExpandPseudo.cpp
+++ b/llvm/lib/Target/M68k/M68kExpandPseudo.cpp
@@ -28,7 +28,8 @@
 
 using namespace llvm;
 
-#define DEBUG_TYPE "M68k-expand-pseudos"
+#define DEBUG_TYPE "m68k-expand-pseudo"
+#define PASS_NAME "M68k pseudo instruction expansion pass"
 
 namespace {
 class M68kExpandPseudo : public MachineFunctionPass {
@@ -56,10 +57,6 @@ class M68kExpandPseudo : public MachineFunctionPass {
         MachineFunctionProperties::Property::NoVRegs);
   }
 
-  StringRef getPassName() const override {
-    return "M68k pseudo instruction expansion pass";
-  }
-
 private:
   bool ExpandMI(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI);
   bool ExpandMBB(MachineBasicBlock &MBB);
@@ -67,6 +64,8 @@ class M68kExpandPseudo : public MachineFunctionPass {
 char M68kExpandPseudo::ID = 0;
 } // End anonymous namespace.
 
+INITIALIZE_PASS(M68kExpandPseudo, DEBUG_TYPE, PASS_NAME, false, false)
+
 /// If \p MBBI is a pseudo instruction, this method expands
 /// it to the corresponding (sequence of) actual instruction(s).
 /// \returns true if \p MBBI has been expanded.

diff  --git a/llvm/lib/Target/M68k/M68kInstrInfo.cpp b/llvm/lib/Target/M68k/M68kInstrInfo.cpp
index 15b97ba25af43..6dd2766e88c52 100644
--- a/llvm/lib/Target/M68k/M68kInstrInfo.cpp
+++ b/llvm/lib/Target/M68k/M68kInstrInfo.cpp
@@ -781,7 +781,7 @@ unsigned M68kInstrInfo::getGlobalBaseReg(MachineFunction *MF) const {
     return GlobalBaseReg;
 
   // Create the register. The code to initialize it is inserted later,
-  // by the CGBR pass (below).
+  // by the M68kGlobalBaseReg pass (below).
   //
   // NOTE
   // Normally M68k uses A5 register as global base pointer but this will
@@ -813,11 +813,16 @@ M68kInstrInfo::getSerializableDirectMachineOperandTargetFlags() const {
   return ArrayRef(TargetFlags);
 }
 
+#undef DEBUG_TYPE
+#define DEBUG_TYPE "m68k-create-global-base-reg"
+
+#define PASS_NAME "M68k PIC Global Base Reg Initialization"
+
 namespace {
-/// Create Global Base Reg pass. This initializes the PIC global base register
-struct CGBR : public MachineFunctionPass {
+/// This initializes the PIC global base register
+struct M68kGlobalBaseReg : public MachineFunctionPass {
   static char ID;
-  CGBR() : MachineFunctionPass(ID) {}
+  M68kGlobalBaseReg() : MachineFunctionPass(ID) {}
 
   bool runOnMachineFunction(MachineFunction &MF) override {
     const M68kSubtarget &STI = MF.getSubtarget<M68kSubtarget>();
@@ -842,16 +847,16 @@ struct CGBR : public MachineFunctionPass {
     return true;
   }
 
-  StringRef getPassName() const override {
-    return "M68k PIC Global Base Reg Initialization";
-  }
-
   void getAnalysisUsage(AnalysisUsage &AU) const override {
     AU.setPreservesCFG();
     MachineFunctionPass::getAnalysisUsage(AU);
   }
 };
+char M68kGlobalBaseReg::ID = 0;
 } // namespace
 
-char CGBR::ID = 0;
-FunctionPass *llvm::createM68kGlobalBaseRegPass() { return new CGBR(); }
+INITIALIZE_PASS(M68kGlobalBaseReg, DEBUG_TYPE, PASS_NAME, false, false)
+
+FunctionPass *llvm::createM68kGlobalBaseRegPass() {
+  return new M68kGlobalBaseReg();
+}

diff  --git a/llvm/lib/Target/M68k/M68kTargetMachine.cpp b/llvm/lib/Target/M68k/M68kTargetMachine.cpp
index 46a670d6a4e80..4e59e27bef8cf 100644
--- a/llvm/lib/Target/M68k/M68kTargetMachine.cpp
+++ b/llvm/lib/Target/M68k/M68kTargetMachine.cpp
@@ -38,6 +38,9 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeM68kTarget() {
   auto *PR = PassRegistry::getPassRegistry();
   initializeGlobalISel(*PR);
   initializeM68kDAGToDAGISelPass(*PR);
+  initializeM68kExpandPseudoPass(*PR);
+  initializeM68kGlobalBaseRegPass(*PR);
+  initializeM68kCollapseMOVEMPass(*PR);
 }
 
 namespace {


        


More information about the llvm-commits mailing list