[llvm] d5ae039 - [SystemZ] Properly register machine passes.
Kai Nacke via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 21 06:11:18 PST 2022
Author: Kai Nacke
Date: 2022-01-21T09:10:37-05:00
New Revision: d5ae039ed7b84bf767d15417a3e9bf61f982257b
URL: https://github.com/llvm/llvm-project/commit/d5ae039ed7b84bf767d15417a3e9bf61f982257b
DIFF: https://github.com/llvm/llvm-project/commit/d5ae039ed7b84bf767d15417a3e9bf61f982257b.diff
LOG: [SystemZ] Properly register machine passes.
Registering the passes enables use of -stop-before=/-stop-after
options.
Reviewed By: uweigand
Differential Revision: https://reviews.llvm.org/D117823
Added:
Modified:
llvm/lib/Target/SystemZ/SystemZ.h
llvm/lib/Target/SystemZ/SystemZCopyPhysRegs.cpp
llvm/lib/Target/SystemZ/SystemZElimCompare.cpp
llvm/lib/Target/SystemZ/SystemZLDCleanup.cpp
llvm/lib/Target/SystemZ/SystemZLongBranch.cpp
llvm/lib/Target/SystemZ/SystemZPostRewrite.cpp
llvm/lib/Target/SystemZ/SystemZShortenInst.cpp
llvm/lib/Target/SystemZ/SystemZTDC.cpp
llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/SystemZ/SystemZ.h b/llvm/lib/Target/SystemZ/SystemZ.h
index bedbd061ea5c1..5be19f0e3b467 100644
--- a/llvm/lib/Target/SystemZ/SystemZ.h
+++ b/llvm/lib/Target/SystemZ/SystemZ.h
@@ -20,6 +20,7 @@
namespace llvm {
class SystemZTargetMachine;
class FunctionPass;
+class PassRegistry;
namespace SystemZ {
// Condition-code mask values.
@@ -196,6 +197,15 @@ FunctionPass *createSystemZLDCleanupPass(SystemZTargetMachine &TM);
FunctionPass *createSystemZCopyPhysRegsPass(SystemZTargetMachine &TM);
FunctionPass *createSystemZPostRewritePass(SystemZTargetMachine &TM);
FunctionPass *createSystemZTDCPass();
+
+void initializeSystemZElimComparePass(PassRegistry &);
+void initializeSystemZShortenInstPass(PassRegistry &);
+void initializeSystemZLongBranchPass(PassRegistry &);
+void initializeSystemZLDCleanupPass(PassRegistry &);
+void initializeSystemZCopyPhysRegsPass(PassRegistry &);
+void initializeSystemZPostRewritePass(PassRegistry &);
+void initializeSystemZTDCPassPass(PassRegistry &);
+
} // end namespace llvm
#endif
diff --git a/llvm/lib/Target/SystemZ/SystemZCopyPhysRegs.cpp b/llvm/lib/Target/SystemZ/SystemZCopyPhysRegs.cpp
index 7d21d29d270e3..763aa8c0e41fd 100644
--- a/llvm/lib/Target/SystemZ/SystemZCopyPhysRegs.cpp
+++ b/llvm/lib/Target/SystemZ/SystemZCopyPhysRegs.cpp
@@ -25,12 +25,6 @@
using namespace llvm;
-#define SYSTEMZ_COPYPHYSREGS_NAME "SystemZ Copy Physregs"
-
-namespace llvm {
- void initializeSystemZCopyPhysRegsPass(PassRegistry&);
-}
-
namespace {
class SystemZCopyPhysRegs : public MachineFunctionPass {
@@ -41,8 +35,6 @@ class SystemZCopyPhysRegs : public MachineFunctionPass {
initializeSystemZCopyPhysRegsPass(*PassRegistry::getPassRegistry());
}
- StringRef getPassName() const override { return SYSTEMZ_COPYPHYSREGS_NAME; }
-
bool runOnMachineFunction(MachineFunction &MF) override;
void getAnalysisUsage(AnalysisUsage &AU) const override;
@@ -59,7 +51,7 @@ char SystemZCopyPhysRegs::ID = 0;
} // end anonymous namespace
INITIALIZE_PASS(SystemZCopyPhysRegs, "systemz-copy-physregs",
- SYSTEMZ_COPYPHYSREGS_NAME, false, false)
+ "SystemZ Copy Physregs", false, false)
FunctionPass *llvm::createSystemZCopyPhysRegsPass(SystemZTargetMachine &TM) {
return new SystemZCopyPhysRegs();
diff --git a/llvm/lib/Target/SystemZ/SystemZElimCompare.cpp b/llvm/lib/Target/SystemZ/SystemZElimCompare.cpp
index 631cbff303e83..4893acc813352 100644
--- a/llvm/lib/Target/SystemZ/SystemZElimCompare.cpp
+++ b/llvm/lib/Target/SystemZ/SystemZElimCompare.cpp
@@ -65,11 +65,8 @@ class SystemZElimCompare : public MachineFunctionPass {
public:
static char ID;
- SystemZElimCompare(const SystemZTargetMachine &tm)
- : MachineFunctionPass(ID) {}
-
- StringRef getPassName() const override {
- return "SystemZ Comparison Elimination";
+ SystemZElimCompare() : MachineFunctionPass(ID) {
+ initializeSystemZElimComparePass(*PassRegistry::getPassRegistry());
}
bool processBlock(MachineBasicBlock &MBB);
@@ -106,6 +103,9 @@ char SystemZElimCompare::ID = 0;
} // end anonymous namespace
+INITIALIZE_PASS(SystemZElimCompare, DEBUG_TYPE,
+ "SystemZ Comparison Elimination", false, false)
+
// Returns true if MI is an instruction whose output equals the value in Reg.
static bool preservesValueOf(MachineInstr &MI, unsigned Reg) {
switch (MI.getOpcode()) {
@@ -746,5 +746,5 @@ bool SystemZElimCompare::runOnMachineFunction(MachineFunction &F) {
}
FunctionPass *llvm::createSystemZElimComparePass(SystemZTargetMachine &TM) {
- return new SystemZElimCompare(TM);
+ return new SystemZElimCompare();
}
diff --git a/llvm/lib/Target/SystemZ/SystemZLDCleanup.cpp b/llvm/lib/Target/SystemZ/SystemZLDCleanup.cpp
index 06d893d043e9d..d6c7959854485 100644
--- a/llvm/lib/Target/SystemZ/SystemZLDCleanup.cpp
+++ b/llvm/lib/Target/SystemZ/SystemZLDCleanup.cpp
@@ -29,11 +29,8 @@ namespace {
class SystemZLDCleanup : public MachineFunctionPass {
public:
static char ID;
- SystemZLDCleanup(const SystemZTargetMachine &tm)
- : MachineFunctionPass(ID), TII(nullptr), MF(nullptr) {}
-
- StringRef getPassName() const override {
- return "SystemZ Local Dynamic TLS Access Clean-up";
+ SystemZLDCleanup() : MachineFunctionPass(ID), TII(nullptr), MF(nullptr) {
+ initializeSystemZLDCleanupPass(*PassRegistry::getPassRegistry());
}
bool runOnMachineFunction(MachineFunction &MF) override;
@@ -52,8 +49,11 @@ char SystemZLDCleanup::ID = 0;
} // end anonymous namespace
+INITIALIZE_PASS(SystemZLDCleanup, "systemz-ld-cleanup",
+ "SystemZ Local Dynamic TLS Access Clean-up", false, false)
+
FunctionPass *llvm::createSystemZLDCleanupPass(SystemZTargetMachine &TM) {
- return new SystemZLDCleanup(TM);
+ return new SystemZLDCleanup();
}
void SystemZLDCleanup::getAnalysisUsage(AnalysisUsage &AU) const {
diff --git a/llvm/lib/Target/SystemZ/SystemZLongBranch.cpp b/llvm/lib/Target/SystemZ/SystemZLongBranch.cpp
index 9c985c16f0829..d53693154d404 100644
--- a/llvm/lib/Target/SystemZ/SystemZLongBranch.cpp
+++ b/llvm/lib/Target/SystemZ/SystemZLongBranch.cpp
@@ -135,10 +135,9 @@ class SystemZLongBranch : public MachineFunctionPass {
public:
static char ID;
- SystemZLongBranch(const SystemZTargetMachine &tm)
- : MachineFunctionPass(ID) {}
-
- StringRef getPassName() const override { return "SystemZ Long Branch"; }
+ SystemZLongBranch() : MachineFunctionPass(ID) {
+ initializeSystemZLongBranchPass(*PassRegistry::getPassRegistry());
+ }
bool runOnMachineFunction(MachineFunction &F) override;
@@ -174,6 +173,9 @@ const uint64_t MaxForwardRange = 0xfffe;
} // end anonymous namespace
+INITIALIZE_PASS(SystemZLongBranch, DEBUG_TYPE, "SystemZ Long Branch", false,
+ false)
+
// Position describes the state immediately before Block. Update Block
// accordingly and move Position to the end of the block's non-terminator
// instructions.
@@ -481,5 +483,5 @@ bool SystemZLongBranch::runOnMachineFunction(MachineFunction &F) {
}
FunctionPass *llvm::createSystemZLongBranchPass(SystemZTargetMachine &TM) {
- return new SystemZLongBranch(TM);
+ return new SystemZLongBranch();
}
diff --git a/llvm/lib/Target/SystemZ/SystemZPostRewrite.cpp b/llvm/lib/Target/SystemZ/SystemZPostRewrite.cpp
index aaa7f8fc88f50..4b95d0d67389d 100644
--- a/llvm/lib/Target/SystemZ/SystemZPostRewrite.cpp
+++ b/llvm/lib/Target/SystemZ/SystemZPostRewrite.cpp
@@ -21,16 +21,10 @@
#include "llvm/CodeGen/MachineInstrBuilder.h"
using namespace llvm;
-#define SYSTEMZ_POSTREWRITE_NAME "SystemZ Post Rewrite pass"
-
#define DEBUG_TYPE "systemz-postrewrite"
STATISTIC(MemFoldCopies, "Number of copies inserted before folded mem ops.");
STATISTIC(LOCRMuxJumps, "Number of LOCRMux jump-sequences (lower is better)");
-namespace llvm {
- void initializeSystemZPostRewritePass(PassRegistry&);
-}
-
namespace {
class SystemZPostRewrite : public MachineFunctionPass {
@@ -44,8 +38,6 @@ class SystemZPostRewrite : public MachineFunctionPass {
bool runOnMachineFunction(MachineFunction &Fn) override;
- StringRef getPassName() const override { return SYSTEMZ_POSTREWRITE_NAME; }
-
private:
void selectLOCRMux(MachineBasicBlock &MBB,
MachineBasicBlock::iterator MBBI,
@@ -70,7 +62,7 @@ char SystemZPostRewrite::ID = 0;
} // end anonymous namespace
INITIALIZE_PASS(SystemZPostRewrite, "systemz-post-rewrite",
- SYSTEMZ_POSTREWRITE_NAME, false, false)
+ "SystemZ Post Rewrite pass", false, false)
/// Returns an instance of the Post Rewrite pass.
FunctionPass *llvm::createSystemZPostRewritePass(SystemZTargetMachine &TM) {
diff --git a/llvm/lib/Target/SystemZ/SystemZShortenInst.cpp b/llvm/lib/Target/SystemZ/SystemZShortenInst.cpp
index 254e5e92449b2..92930dad80ef8 100644
--- a/llvm/lib/Target/SystemZ/SystemZShortenInst.cpp
+++ b/llvm/lib/Target/SystemZ/SystemZShortenInst.cpp
@@ -26,11 +26,7 @@ namespace {
class SystemZShortenInst : public MachineFunctionPass {
public:
static char ID;
- SystemZShortenInst(const SystemZTargetMachine &tm);
-
- StringRef getPassName() const override {
- return "SystemZ Instruction Shortening";
- }
+ SystemZShortenInst();
bool processBlock(MachineBasicBlock &MBB);
bool runOnMachineFunction(MachineFunction &F) override;
@@ -56,12 +52,17 @@ class SystemZShortenInst : public MachineFunctionPass {
char SystemZShortenInst::ID = 0;
} // end anonymous namespace
+INITIALIZE_PASS(SystemZShortenInst, DEBUG_TYPE,
+ "SystemZ Instruction Shortening", false, false)
+
FunctionPass *llvm::createSystemZShortenInstPass(SystemZTargetMachine &TM) {
- return new SystemZShortenInst(TM);
+ return new SystemZShortenInst();
}
-SystemZShortenInst::SystemZShortenInst(const SystemZTargetMachine &tm)
- : MachineFunctionPass(ID), TII(nullptr) {}
+SystemZShortenInst::SystemZShortenInst()
+ : MachineFunctionPass(ID), TII(nullptr) {
+ initializeSystemZShortenInstPass(*PassRegistry::getPassRegistry());
+}
// Tie operands if MI has become a two-address instruction.
static void tieOpsIfNeeded(MachineInstr &MI) {
diff --git a/llvm/lib/Target/SystemZ/SystemZTDC.cpp b/llvm/lib/Target/SystemZ/SystemZTDC.cpp
index 7cb7dca2ea28b..f62afb8ddfcfa 100644
--- a/llvm/lib/Target/SystemZ/SystemZTDC.cpp
+++ b/llvm/lib/Target/SystemZ/SystemZTDC.cpp
@@ -61,10 +61,6 @@
using namespace llvm;
-namespace llvm {
- void initializeSystemZTDCPassPass(PassRegistry&);
-}
-
namespace {
class SystemZTDCPass : public FunctionPass {
diff --git a/llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp b/llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp
index deb3358102ede..f1469fe8f56b7 100644
--- a/llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp
+++ b/llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp
@@ -32,6 +32,14 @@ using namespace llvm;
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeSystemZTarget() {
// Register the target.
RegisterTargetMachine<SystemZTargetMachine> X(getTheSystemZTarget());
+ auto &PR = *PassRegistry::getPassRegistry();
+ initializeSystemZElimComparePass(PR);
+ initializeSystemZShortenInstPass(PR);
+ initializeSystemZLongBranchPass(PR);
+ initializeSystemZLDCleanupPass(PR);
+ initializeSystemZShortenInstPass(PR);
+ initializeSystemZPostRewritePass(PR);
+ initializeSystemZTDCPassPass(PR);
}
// Determine whether we use the vector ABI.
More information about the llvm-commits
mailing list