Skip to content

Commit 229dcf9

Browse files
authored
[CodeGen][NPM] Port MachineLateInstrsCleanup to NPM (#128160)
There are no standalone tests for this pass for backends implementing the NPM yet.
1 parent 47656dc commit 229dcf9

File tree

7 files changed

+63
-10
lines changed

7 files changed

+63
-10
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//===- llvm/CodeGen/MachineLateInstrsCleanup.h ------------------*- C++ -*-===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
#ifndef LLVM_CODEGEN_MACHINELATEINSTRSCLEANUP_H
9+
#define LLVM_CODEGEN_MACHINELATEINSTRSCLEANUP_H
10+
11+
#include "llvm/CodeGen/MachinePassManager.h"
12+
13+
namespace llvm {
14+
15+
class MachineLateInstrsCleanupPass
16+
: public PassInfoMixin<MachineLateInstrsCleanupPass> {
17+
public:
18+
PreservedAnalyses run(MachineFunction &MachineFunction,
19+
MachineFunctionAnalysisManager &MachineFunctionAM);
20+
21+
MachineFunctionProperties getRequiredProperties() const {
22+
return MachineFunctionProperties().set(
23+
MachineFunctionProperties::Property::NoVRegs);
24+
}
25+
};
26+
27+
} // namespace llvm
28+
29+
#endif // LLVM_CODEGEN_MACHINELATEINSTRSCLEANUP_H

llvm/include/llvm/InitializePasses.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ void initializeMachineDominanceFrontierPass(PassRegistry &);
197197
void initializeMachineDominatorTreeWrapperPassPass(PassRegistry &);
198198
void initializeMachineFunctionPrinterPassPass(PassRegistry &);
199199
void initializeMachineFunctionSplitterPass(PassRegistry &);
200-
void initializeMachineLateInstrsCleanupPass(PassRegistry &);
200+
void initializeMachineLateInstrsCleanupLegacyPass(PassRegistry &);
201201
void initializeMachineLICMPass(PassRegistry &);
202202
void initializeMachineLoopInfoWrapperPassPass(PassRegistry &);
203203
void initializeMachineModuleInfoWrapperPassPass(PassRegistry &);

llvm/include/llvm/Passes/CodeGenPassBuilder.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
#include "llvm/CodeGen/MachineCopyPropagation.h"
4949
#include "llvm/CodeGen/MachineFunctionAnalysis.h"
5050
#include "llvm/CodeGen/MachineLICM.h"
51+
#include "llvm/CodeGen/MachineLateInstrsCleanup.h"
5152
#include "llvm/CodeGen/MachineModuleInfo.h"
5253
#include "llvm/CodeGen/MachinePassManager.h"
5354
#include "llvm/CodeGen/MachineScheduler.h"

llvm/include/llvm/Passes/MachinePassRegistry.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ MACHINE_FUNCTION_PASS("finalize-isel", FinalizeISelPass())
144144
MACHINE_FUNCTION_PASS("localstackalloc", LocalStackSlotAllocationPass())
145145
MACHINE_FUNCTION_PASS("machine-cp", MachineCopyPropagationPass())
146146
MACHINE_FUNCTION_PASS("machine-cse", MachineCSEPass())
147+
MACHINE_FUNCTION_PASS("machine-latecleanup", MachineLateInstrsCleanupPass())
147148
MACHINE_FUNCTION_PASS("machine-scheduler", MachineSchedulerPass(TM))
148149
MACHINE_FUNCTION_PASS("machinelicm", MachineLICMPass())
149150
MACHINE_FUNCTION_PASS("no-op-machine-function", NoOpMachineFunctionPass())
@@ -245,7 +246,6 @@ DUMMY_MACHINE_FUNCTION_PASS("lrshrink", LiveRangeShrinkPass)
245246
DUMMY_MACHINE_FUNCTION_PASS("machine-combiner", MachineCombinerPass)
246247
DUMMY_MACHINE_FUNCTION_PASS("static-data-splitter", StaticDataSplitter)
247248
DUMMY_MACHINE_FUNCTION_PASS("machine-function-splitter", MachineFunctionSplitterPass)
248-
DUMMY_MACHINE_FUNCTION_PASS("machine-latecleanup", MachineLateInstrsCleanupPass)
249249
DUMMY_MACHINE_FUNCTION_PASS("machine-sanmd", MachineSanitizerBinaryMetadata)
250250
DUMMY_MACHINE_FUNCTION_PASS("machine-sink", MachineSinkingPass)
251251
DUMMY_MACHINE_FUNCTION_PASS("machine-uniformity", MachineUniformityInfoWrapperPass)

llvm/lib/CodeGen/CodeGen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) {
8383
initializeMachineDominatorTreeWrapperPassPass(Registry);
8484
initializeMachineFunctionPrinterPassPass(Registry);
8585
initializeMachineFunctionSplitterPass(Registry);
86-
initializeMachineLateInstrsCleanupPass(Registry);
86+
initializeMachineLateInstrsCleanupLegacyPass(Registry);
8787
initializeMachineLICMPass(Registry);
8888
initializeMachineLoopInfoWrapperPassPass(Registry);
8989
initializeMachineModuleInfoWrapperPassPass(Registry);

llvm/lib/CodeGen/MachineLateInstrsCleanup.cpp

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
//
1414
//===----------------------------------------------------------------------===//
1515

16+
#include "llvm/CodeGen/MachineLateInstrsCleanup.h"
1617
#include "llvm/ADT/BitVector.h"
1718
#include "llvm/ADT/PostOrderIterator.h"
1819
#include "llvm/ADT/Statistic.h"
@@ -36,7 +37,7 @@ STATISTIC(NumRemoved, "Number of redundant instructions removed.");
3637

3738
namespace {
3839

39-
class MachineLateInstrsCleanup : public MachineFunctionPass {
40+
class MachineLateInstrsCleanup {
4041
const TargetRegisterInfo *TRI = nullptr;
4142
const TargetInstrInfo *TII = nullptr;
4243

@@ -59,11 +60,17 @@ class MachineLateInstrsCleanup : public MachineFunctionPass {
5960
void clearKillsForDef(Register Reg, MachineBasicBlock *MBB,
6061
BitVector &VisitedPreds);
6162

63+
public:
64+
bool run(MachineFunction &MF);
65+
};
66+
67+
class MachineLateInstrsCleanupLegacy : public MachineFunctionPass {
6268
public:
6369
static char ID; // Pass identification, replacement for typeid
6470

65-
MachineLateInstrsCleanup() : MachineFunctionPass(ID) {
66-
initializeMachineLateInstrsCleanupPass(*PassRegistry::getPassRegistry());
71+
MachineLateInstrsCleanupLegacy() : MachineFunctionPass(ID) {
72+
initializeMachineLateInstrsCleanupLegacyPass(
73+
*PassRegistry::getPassRegistry());
6774
}
6875

6976
void getAnalysisUsage(AnalysisUsage &AU) const override {
@@ -81,17 +88,32 @@ class MachineLateInstrsCleanup : public MachineFunctionPass {
8188

8289
} // end anonymous namespace
8390

84-
char MachineLateInstrsCleanup::ID = 0;
91+
char MachineLateInstrsCleanupLegacy::ID = 0;
8592

86-
char &llvm::MachineLateInstrsCleanupID = MachineLateInstrsCleanup::ID;
93+
char &llvm::MachineLateInstrsCleanupID = MachineLateInstrsCleanupLegacy::ID;
8794

88-
INITIALIZE_PASS(MachineLateInstrsCleanup, DEBUG_TYPE,
95+
INITIALIZE_PASS(MachineLateInstrsCleanupLegacy, DEBUG_TYPE,
8996
"Machine Late Instructions Cleanup Pass", false, false)
9097

91-
bool MachineLateInstrsCleanup::runOnMachineFunction(MachineFunction &MF) {
98+
bool MachineLateInstrsCleanupLegacy::runOnMachineFunction(MachineFunction &MF) {
9299
if (skipFunction(MF.getFunction()))
93100
return false;
94101

102+
return MachineLateInstrsCleanup().run(MF);
103+
}
104+
105+
PreservedAnalyses
106+
MachineLateInstrsCleanupPass::run(MachineFunction &MF,
107+
MachineFunctionAnalysisManager &MFAM) {
108+
MFPropsModifier _(*this, MF);
109+
if (!MachineLateInstrsCleanup().run(MF))
110+
return PreservedAnalyses::all();
111+
auto PA = getMachineFunctionPassPreservedAnalyses();
112+
PA.preserveSet<CFGAnalyses>();
113+
return PA;
114+
}
115+
116+
bool MachineLateInstrsCleanup::run(MachineFunction &MF) {
95117
TRI = MF.getSubtarget().getRegisterInfo();
96118
TII = MF.getSubtarget().getInstrInfo();
97119

llvm/lib/Passes/PassBuilder.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@
114114
#include "llvm/CodeGen/MachineDominators.h"
115115
#include "llvm/CodeGen/MachineFunctionAnalysis.h"
116116
#include "llvm/CodeGen/MachineLICM.h"
117+
#include "llvm/CodeGen/MachineLateInstrsCleanup.h"
117118
#include "llvm/CodeGen/MachineLoopInfo.h"
118119
#include "llvm/CodeGen/MachineOptimizationRemarkEmitter.h"
119120
#include "llvm/CodeGen/MachinePassManager.h"

0 commit comments

Comments
 (0)