Skip to content

Commit 3525248

Browse files
committed
[CodeGen][NPM] Port ProcessImplicitDefs to NPM
1 parent c32c7e2 commit 3525248

File tree

8 files changed

+47
-24
lines changed

8 files changed

+47
-24
lines changed

llvm/include/llvm/InitializePasses.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ LLVM_ABI void initializePostRASchedulerLegacyPass(PassRegistry &);
257257
LLVM_ABI void initializePreISelIntrinsicLoweringLegacyPassPass(PassRegistry &);
258258
LLVM_ABI void initializePrintFunctionPassWrapperPass(PassRegistry &);
259259
LLVM_ABI void initializePrintModulePassWrapperPass(PassRegistry &);
260-
LLVM_ABI void initializeProcessImplicitDefsPass(PassRegistry &);
260+
LLVM_ABI void initializeProcessImplicitDefsLegacyPass(PassRegistry &);
261261
LLVM_ABI void initializeProfileSummaryInfoWrapperPassPass(PassRegistry &);
262262
LLVM_ABI void initializePromoteLegacyPassPass(PassRegistry &);
263263
LLVM_ABI void initializeRABasicPass(PassRegistry &);

llvm/include/llvm/Passes/CodeGenPassBuilder.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
#include "llvm/CodeGen/PeepholeOptimizer.h"
7272
#include "llvm/CodeGen/PostRASchedulerList.h"
7373
#include "llvm/CodeGen/PreISelIntrinsicLowering.h"
74+
#include "llvm/CodeGen/ProcessImplicitDefs.h"
7475
#include "llvm/CodeGen/RegAllocEvictionAdvisor.h"
7576
#include "llvm/CodeGen/RegAllocFast.h"
7677
#include "llvm/CodeGen/RegAllocGreedyPass.h"

llvm/include/llvm/Passes/MachinePassRegistry.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ MACHINE_FUNCTION_PASS("print<machine-uniformity>",
152152
MachineUniformityPrinterPass(errs()))
153153
MACHINE_FUNCTION_PASS("print<slot-indexes>", SlotIndexesPrinterPass(errs()))
154154
MACHINE_FUNCTION_PASS("print<virtregmap>", VirtRegMapPrinterPass(errs()))
155+
MACHINE_FUNCTION_PASS("process-imp-defs", ProcessImplicitDefsPass())
155156
MACHINE_FUNCTION_PASS("prolog-epilog", PrologEpilogInserterPass())
156157
MACHINE_FUNCTION_PASS("reg-usage-collector", RegUsageInfoCollectorPass())
157158
MACHINE_FUNCTION_PASS("reg-usage-propagation", RegUsageInfoPropagationPass())
@@ -283,7 +284,6 @@ DUMMY_MACHINE_FUNCTION_PASS("static-data-splitter", StaticDataSplitter)
283284
DUMMY_MACHINE_FUNCTION_PASS("machine-function-splitter", MachineFunctionSplitterPass)
284285
DUMMY_MACHINE_FUNCTION_PASS("machineinstr-printer", MachineFunctionPrinterPass)
285286
DUMMY_MACHINE_FUNCTION_PASS("mirfs-discriminators", MIRAddFSDiscriminatorsPass)
286-
DUMMY_MACHINE_FUNCTION_PASS("processimpdefs", ProcessImplicitDefsPass)
287287
DUMMY_MACHINE_FUNCTION_PASS("prologepilog-code", PrologEpilogCodeInserterPass)
288288
DUMMY_MACHINE_FUNCTION_PASS("ra-basic", RABasicPass)
289289
DUMMY_MACHINE_FUNCTION_PASS("ra-pbqp", RAPBQPPass)

llvm/lib/CodeGen/CodeGen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) {
110110
initializePostRAMachineSinkingLegacyPass(Registry);
111111
initializePostRASchedulerLegacyPass(Registry);
112112
initializePreISelIntrinsicLoweringLegacyPassPass(Registry);
113-
initializeProcessImplicitDefsPass(Registry);
113+
initializeProcessImplicitDefsLegacyPass(Registry);
114114
initializeRABasicPass(Registry);
115115
initializeRAGreedyLegacyPass(Registry);
116116
initializeRegAllocFastPass(Registry);

llvm/lib/CodeGen/ProcessImplicitDefs.cpp

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
#include "llvm/CodeGen/ProcessImplicitDefs.h"
910
#include "llvm/ADT/SetVector.h"
1011
#include "llvm/Analysis/AliasAnalysis.h"
1112
#include "llvm/CodeGen/MachineFunctionPass.h"
@@ -26,40 +27,45 @@ using namespace llvm;
2627
namespace {
2728
/// Process IMPLICIT_DEF instructions and make sure there is one implicit_def
2829
/// for each use. Add isUndef marker to implicit_def defs and their uses.
29-
class ProcessImplicitDefs : public MachineFunctionPass {
30-
const TargetInstrInfo *TII = nullptr;
31-
const TargetRegisterInfo *TRI = nullptr;
32-
MachineRegisterInfo *MRI = nullptr;
33-
34-
SmallSetVector<MachineInstr*, 16> WorkList;
35-
36-
void processImplicitDef(MachineInstr *MI);
37-
bool canTurnIntoImplicitDef(MachineInstr *MI);
38-
30+
class ProcessImplicitDefsLegacy : public MachineFunctionPass {
3931
public:
4032
static char ID;
4133

42-
ProcessImplicitDefs() : MachineFunctionPass(ID) {
43-
initializeProcessImplicitDefsPass(*PassRegistry::getPassRegistry());
34+
ProcessImplicitDefsLegacy() : MachineFunctionPass(ID) {
35+
initializeProcessImplicitDefsLegacyPass(*PassRegistry::getPassRegistry());
4436
}
4537

46-
void getAnalysisUsage(AnalysisUsage &au) const override;
38+
void getAnalysisUsage(AnalysisUsage &AU) const override;
4739

4840
bool runOnMachineFunction(MachineFunction &MF) override;
4941

5042
MachineFunctionProperties getRequiredProperties() const override {
5143
return MachineFunctionProperties().setIsSSA();
5244
}
5345
};
46+
47+
class ProcessImplicitDefs {
48+
const TargetInstrInfo *TII = nullptr;
49+
const TargetRegisterInfo *TRI = nullptr;
50+
MachineRegisterInfo *MRI = nullptr;
51+
52+
SmallSetVector<MachineInstr *, 16> WorkList;
53+
54+
void processImplicitDef(MachineInstr *MI);
55+
bool canTurnIntoImplicitDef(MachineInstr *MI);
56+
57+
public:
58+
bool run(MachineFunction &MF);
59+
};
5460
} // end anonymous namespace
5561

56-
char ProcessImplicitDefs::ID = 0;
57-
char &llvm::ProcessImplicitDefsID = ProcessImplicitDefs::ID;
62+
char ProcessImplicitDefsLegacy::ID = 0;
63+
char &llvm::ProcessImplicitDefsID = ProcessImplicitDefsLegacy::ID;
5864

59-
INITIALIZE_PASS(ProcessImplicitDefs, DEBUG_TYPE,
65+
INITIALIZE_PASS(ProcessImplicitDefsLegacy, DEBUG_TYPE,
6066
"Process Implicit Definitions", false, false)
6167

62-
void ProcessImplicitDefs::getAnalysisUsage(AnalysisUsage &AU) const {
68+
void ProcessImplicitDefsLegacy::getAnalysisUsage(AnalysisUsage &AU) const {
6369
AU.setPreservesCFG();
6470
AU.addPreserved<AAResultsWrapperPass>();
6571
MachineFunctionPass::getAnalysisUsage(AU);
@@ -132,9 +138,24 @@ void ProcessImplicitDefs::processImplicitDef(MachineInstr *MI) {
132138
LLVM_DEBUG(dbgs() << "Keeping physreg: " << *MI);
133139
}
134140

141+
bool ProcessImplicitDefsLegacy::runOnMachineFunction(MachineFunction &MF) {
142+
return ProcessImplicitDefs().run(MF);
143+
}
144+
145+
PreservedAnalyses
146+
ProcessImplicitDefsPass::run(MachineFunction &MF,
147+
MachineFunctionAnalysisManager &MFAM) {
148+
if (!ProcessImplicitDefs().run(MF))
149+
return PreservedAnalyses::all();
150+
151+
return getMachineFunctionPassPreservedAnalyses()
152+
.preserveSet<CFGAnalyses>()
153+
.preserve<AAManager>();
154+
}
155+
135156
/// processImplicitDefs - Process IMPLICIT_DEF instructions and turn them into
136157
/// <undef> operands.
137-
bool ProcessImplicitDefs::runOnMachineFunction(MachineFunction &MF) {
158+
bool ProcessImplicitDefs::run(MachineFunction &MF) {
138159

139160
LLVM_DEBUG(dbgs() << "********** PROCESS IMPLICIT DEFS **********\n"
140161
<< "********** Function: " << MF.getName() << '\n');

llvm/lib/Passes/PassBuilder.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@
142142
#include "llvm/CodeGen/PostRAHazardRecognizer.h"
143143
#include "llvm/CodeGen/PostRASchedulerList.h"
144144
#include "llvm/CodeGen/PreISelIntrinsicLowering.h"
145+
#include "llvm/CodeGen/ProcessImplicitDefs.h"
145146
#include "llvm/CodeGen/RegAllocEvictionAdvisor.h"
146147
#include "llvm/CodeGen/RegAllocFast.h"
147148
#include "llvm/CodeGen/RegAllocGreedyPass.h"

0 commit comments

Comments
 (0)