[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