Skip to content

Commit 4c6166a

Browse files
committed
[CodeGen][NPM] Port ProcessImplicitDefs to NPM
1 parent 9b03fcd commit 4c6166a

File tree

8 files changed

+47
-23
lines changed

8 files changed

+47
-23
lines changed

llvm/include/llvm/InitializePasses.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ void initializePostRASchedulerLegacyPass(PassRegistry &);
246246
void initializePreISelIntrinsicLoweringLegacyPassPass(PassRegistry &);
247247
void initializePrintFunctionPassWrapperPass(PassRegistry &);
248248
void initializePrintModulePassWrapperPass(PassRegistry &);
249-
void initializeProcessImplicitDefsPass(PassRegistry &);
249+
void initializeProcessImplicitDefsLegacyPass(PassRegistry &);
250250
void initializeProfileSummaryInfoWrapperPassPass(PassRegistry &);
251251
void initializePromoteLegacyPassPass(PassRegistry &);
252252
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
@@ -184,6 +184,7 @@ MACHINE_FUNCTION_PASS("print<machine-uniformity>",
184184
MachineUniformityPrinterPass(errs()))
185185
MACHINE_FUNCTION_PASS("print<slot-indexes>", SlotIndexesPrinterPass(errs()))
186186
MACHINE_FUNCTION_PASS("print<virtregmap>", VirtRegMapPrinterPass(errs()))
187+
MACHINE_FUNCTION_PASS("process-imp-defs", ProcessImplicitDefsPass())
187188
MACHINE_FUNCTION_PASS("prolog-epilog", PrologEpilogInserterPass())
188189
MACHINE_FUNCTION_PASS("reg-usage-collector", RegUsageInfoCollectorPass())
189190
MACHINE_FUNCTION_PASS("reg-usage-propagation", RegUsageInfoPropagationPass())
@@ -316,7 +317,6 @@ DUMMY_MACHINE_FUNCTION_PASS("static-data-splitter", StaticDataSplitter)
316317
DUMMY_MACHINE_FUNCTION_PASS("machine-function-splitter", MachineFunctionSplitterPass)
317318
DUMMY_MACHINE_FUNCTION_PASS("machineinstr-printer", MachineFunctionPrinterPass)
318319
DUMMY_MACHINE_FUNCTION_PASS("mirfs-discriminators", MIRAddFSDiscriminatorsPass)
319-
DUMMY_MACHINE_FUNCTION_PASS("processimpdefs", ProcessImplicitDefsPass)
320320
DUMMY_MACHINE_FUNCTION_PASS("prologepilog-code", PrologEpilogCodeInserterPass)
321321
DUMMY_MACHINE_FUNCTION_PASS("ra-basic", RABasicPass)
322322
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,24 +27,15 @@ 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

@@ -52,15 +44,29 @@ class ProcessImplicitDefs : public MachineFunctionPass {
5244
MachineFunctionProperties::Property::IsSSA);
5345
}
5446
};
47+
48+
class ProcessImplicitDefs {
49+
const TargetInstrInfo *TII = nullptr;
50+
const TargetRegisterInfo *TRI = nullptr;
51+
MachineRegisterInfo *MRI = nullptr;
52+
53+
SmallSetVector<MachineInstr *, 16> WorkList;
54+
55+
void processImplicitDef(MachineInstr *MI);
56+
bool canTurnIntoImplicitDef(MachineInstr *MI);
57+
58+
public:
59+
bool run(MachineFunction &MF);
60+
};
5561
} // end anonymous namespace
5662

57-
char ProcessImplicitDefs::ID = 0;
58-
char &llvm::ProcessImplicitDefsID = ProcessImplicitDefs::ID;
63+
char ProcessImplicitDefsLegacy::ID = 0;
64+
char &llvm::ProcessImplicitDefsID = ProcessImplicitDefsLegacy::ID;
5965

60-
INITIALIZE_PASS(ProcessImplicitDefs, DEBUG_TYPE,
66+
INITIALIZE_PASS(ProcessImplicitDefsLegacy, DEBUG_TYPE,
6167
"Process Implicit Definitions", false, false)
6268

63-
void ProcessImplicitDefs::getAnalysisUsage(AnalysisUsage &AU) const {
69+
void ProcessImplicitDefsLegacy::getAnalysisUsage(AnalysisUsage &AU) const {
6470
AU.setPreservesCFG();
6571
AU.addPreserved<AAResultsWrapperPass>();
6672
MachineFunctionPass::getAnalysisUsage(AU);
@@ -133,9 +139,24 @@ void ProcessImplicitDefs::processImplicitDef(MachineInstr *MI) {
133139
LLVM_DEBUG(dbgs() << "Keeping physreg: " << *MI);
134140
}
135141

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

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

llvm/lib/Passes/PassBuilder.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@
145145
#include "llvm/CodeGen/PostRAHazardRecognizer.h"
146146
#include "llvm/CodeGen/PostRASchedulerList.h"
147147
#include "llvm/CodeGen/PreISelIntrinsicLowering.h"
148+
#include "llvm/CodeGen/ProcessImplicitDefs.h"
148149
#include "llvm/CodeGen/RegAllocEvictionAdvisor.h"
149150
#include "llvm/CodeGen/RegAllocFast.h"
150151
#include "llvm/CodeGen/RegAllocGreedyPass.h"

0 commit comments

Comments
 (0)