Skip to content

Commit 3801bf6

Browse files
authored
[NFC] Cleanup pass initialization for SPIRV passes (#134189)
- Do not call pass initialization functions from pass contructors. - Instead, call them from SPIRV target initialization. - #111767
1 parent d7d9150 commit 3801bf6

14 files changed

+36
-74
lines changed

llvm/lib/Target/SPIRV/Analysis/SPIRVConvergenceRegionAnalysis.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
//===----------------------------------------------------------------------===//
1414

1515
#include "SPIRVConvergenceRegionAnalysis.h"
16+
#include "SPIRV.h"
1617
#include "llvm/Analysis/LoopInfo.h"
1718
#include "llvm/IR/Dominators.h"
1819
#include "llvm/IR/IntrinsicInst.h"
@@ -26,10 +27,6 @@
2627
using namespace llvm;
2728
using namespace SPIRV;
2829

29-
namespace llvm {
30-
void initializeSPIRVConvergenceRegionAnalysisWrapperPassPass(PassRegistry &);
31-
} // namespace llvm
32-
3330
INITIALIZE_PASS_BEGIN(SPIRVConvergenceRegionAnalysisWrapperPass,
3431
"convergence-region",
3532
"SPIRV convergence regions analysis", true, true)

llvm/lib/Target/SPIRV/SPIRV.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ void initializeSPIRVPostLegalizerPass(PassRegistry &);
4343
void initializeSPIRVStructurizerPass(PassRegistry &);
4444
void initializeSPIRVEmitIntrinsicsPass(PassRegistry &);
4545
void initializeSPIRVEmitNonSemanticDIPass(PassRegistry &);
46+
void initializeSPIRVLegalizePointerCastPass(PassRegistry &);
47+
void initializeSPIRVRegularizerPass(PassRegistry &);
48+
void initializeSPIRVMergeRegionExitTargetsPass(PassRegistry &);
49+
void initializeSPIRVPrepareFunctionsPass(PassRegistry &);
50+
void initializeSPIRVStripConvergentIntrinsicsPass(PassRegistry &);
4651
} // namespace llvm
4752

4853
#endif // LLVM_LIB_TARGET_SPIRV_SPIRV_H

llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,10 @@
4747

4848
using namespace llvm;
4949

50-
namespace llvm {
51-
namespace SPIRV {
50+
namespace llvm::SPIRV {
5251
#define GET_BuiltinGroup_DECL
5352
#include "SPIRVGenTables.inc"
54-
} // namespace SPIRV
55-
void initializeSPIRVEmitIntrinsicsPass(PassRegistry &);
56-
} // namespace llvm
53+
} // namespace llvm::SPIRV
5754

5855
namespace {
5956

@@ -200,12 +197,8 @@ class SPIRVEmitIntrinsics
200197

201198
public:
202199
static char ID;
203-
SPIRVEmitIntrinsics() : ModulePass(ID) {
204-
initializeSPIRVEmitIntrinsicsPass(*PassRegistry::getPassRegistry());
205-
}
206-
SPIRVEmitIntrinsics(SPIRVTargetMachine *_TM) : ModulePass(ID), TM(_TM) {
207-
initializeSPIRVEmitIntrinsicsPass(*PassRegistry::getPassRegistry());
208-
}
200+
SPIRVEmitIntrinsics(SPIRVTargetMachine *TM = nullptr)
201+
: ModulePass(ID), TM(TM) {}
209202
Instruction *visitInstruction(Instruction &I) { return &I; }
210203
Instruction *visitSwitchInst(SwitchInst &I);
211204
Instruction *visitGetElementPtrInst(GetElementPtrInst &I);

llvm/lib/Target/SPIRV/SPIRVEmitNonSemanticDI.cpp

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ namespace {
3333
struct SPIRVEmitNonSemanticDI : public MachineFunctionPass {
3434
static char ID;
3535
SPIRVTargetMachine *TM;
36-
SPIRVEmitNonSemanticDI(SPIRVTargetMachine *TM);
37-
SPIRVEmitNonSemanticDI();
36+
SPIRVEmitNonSemanticDI(SPIRVTargetMachine *TM = nullptr)
37+
: MachineFunctionPass(ID), TM(TM) {}
3838

3939
bool runOnMachineFunction(MachineFunction &MF) override;
4040

@@ -54,15 +54,6 @@ llvm::createSPIRVEmitNonSemanticDIPass(SPIRVTargetMachine *TM) {
5454
return new SPIRVEmitNonSemanticDI(TM);
5555
}
5656

57-
SPIRVEmitNonSemanticDI::SPIRVEmitNonSemanticDI(SPIRVTargetMachine *TM)
58-
: MachineFunctionPass(ID), TM(TM) {
59-
initializeSPIRVEmitNonSemanticDIPass(*PassRegistry::getPassRegistry());
60-
}
61-
62-
SPIRVEmitNonSemanticDI::SPIRVEmitNonSemanticDI() : MachineFunctionPass(ID) {
63-
initializeSPIRVEmitNonSemanticDIPass(*PassRegistry::getPassRegistry());
64-
}
65-
6657
enum BaseTypeAttributeEncoding {
6758
Unspecified = 0,
6859
Address = 1,

llvm/lib/Target/SPIRV/SPIRVLegalizePointerCast.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,7 @@
5656

5757
using namespace llvm;
5858

59-
namespace llvm {
60-
void initializeSPIRVLegalizePointerCastPass(PassRegistry &);
61-
}
62-
59+
namespace {
6360
class SPIRVLegalizePointerCast : public FunctionPass {
6461

6562
// Builds the `spv_assign_type` assigning |Ty| to |Value| at the current
@@ -182,9 +179,7 @@ class SPIRVLegalizePointerCast : public FunctionPass {
182179
}
183180

184181
public:
185-
SPIRVLegalizePointerCast(SPIRVTargetMachine *TM) : FunctionPass(ID), TM(TM) {
186-
initializeSPIRVLegalizePointerCastPass(*PassRegistry::getPassRegistry());
187-
};
182+
SPIRVLegalizePointerCast(SPIRVTargetMachine *TM) : FunctionPass(ID), TM(TM) {}
188183

189184
virtual bool runOnFunction(Function &F) override {
190185
const SPIRVSubtarget &ST = TM->getSubtarget<SPIRVSubtarget>(F);
@@ -217,6 +212,7 @@ class SPIRVLegalizePointerCast : public FunctionPass {
217212
public:
218213
static char ID;
219214
};
215+
} // namespace
220216

221217
char SPIRVLegalizePointerCast::ID = 0;
222218
INITIALIZE_PASS(SPIRVLegalizePointerCast, "spirv-legalize-bitcast",

llvm/lib/Target/SPIRV/SPIRVMergeRegionExitTargets.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,13 @@
3434

3535
using namespace llvm;
3636

37-
namespace llvm {
38-
void initializeSPIRVMergeRegionExitTargetsPass(PassRegistry &);
37+
namespace {
3938

4039
class SPIRVMergeRegionExitTargets : public FunctionPass {
4140
public:
4241
static char ID;
4342

44-
SPIRVMergeRegionExitTargets() : FunctionPass(ID) {
45-
initializeSPIRVMergeRegionExitTargetsPass(*PassRegistry::getPassRegistry());
46-
};
43+
SPIRVMergeRegionExitTargets() : FunctionPass(ID) {}
4744

4845
// Gather all the successors of |BB|.
4946
// This function asserts if the terminator neither a branch, switch or return.
@@ -273,7 +270,7 @@ class SPIRVMergeRegionExitTargets : public FunctionPass {
273270
FunctionPass::getAnalysisUsage(AU);
274271
}
275272
};
276-
} // namespace llvm
273+
} // namespace
277274

278275
char SPIRVMergeRegionExitTargets::ID = 0;
279276

llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,6 @@ struct AvoidCapabilitiesSet {
4949

5050
char llvm::SPIRVModuleAnalysis::ID = 0;
5151

52-
namespace llvm {
53-
void initializeSPIRVModuleAnalysisPass(PassRegistry &);
54-
} // namespace llvm
55-
5652
INITIALIZE_PASS(SPIRVModuleAnalysis, DEBUG_TYPE, "SPIRV module analysis", true,
5753
true)
5854

llvm/lib/Target/SPIRV/SPIRVPostLegalizer.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,7 @@ namespace {
3434
class SPIRVPostLegalizer : public MachineFunctionPass {
3535
public:
3636
static char ID;
37-
SPIRVPostLegalizer() : MachineFunctionPass(ID) {
38-
initializeSPIRVPostLegalizerPass(*PassRegistry::getPassRegistry());
39-
}
37+
SPIRVPostLegalizer() : MachineFunctionPass(ID) {}
4038
bool runOnMachineFunction(MachineFunction &MF) override;
4139
};
4240
} // namespace

llvm/lib/Target/SPIRV/SPIRVPreLegalizer.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ namespace {
3232
class SPIRVPreLegalizer : public MachineFunctionPass {
3333
public:
3434
static char ID;
35-
SPIRVPreLegalizer() : MachineFunctionPass(ID) {
36-
initializeSPIRVPreLegalizerPass(*PassRegistry::getPassRegistry());
37-
}
35+
SPIRVPreLegalizer() : MachineFunctionPass(ID) {}
3836
bool runOnMachineFunction(MachineFunction &MF) override;
3937
void getAnalysisUsage(AnalysisUsage &AU) const override;
4038
};

llvm/lib/Target/SPIRV/SPIRVPreLegalizerCombiner.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,6 @@ void SPIRVPreLegalizerCombiner::getAnalysisUsage(AnalysisUsage &AU) const {
197197

198198
SPIRVPreLegalizerCombiner::SPIRVPreLegalizerCombiner()
199199
: MachineFunctionPass(ID) {
200-
initializeSPIRVPreLegalizerCombinerPass(*PassRegistry::getPassRegistry());
201-
202200
if (!RuleConfig.parseCommandLineOption())
203201
report_fatal_error("Invalid rule identifier");
204202
}

llvm/lib/Target/SPIRV/SPIRVPrepareFunctions.cpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,6 @@
3535

3636
using namespace llvm;
3737

38-
namespace llvm {
39-
void initializeSPIRVPrepareFunctionsPass(PassRegistry &);
40-
}
41-
4238
namespace {
4339

4440
class SPIRVPrepareFunctions : public ModulePass {
@@ -48,9 +44,8 @@ class SPIRVPrepareFunctions : public ModulePass {
4844

4945
public:
5046
static char ID;
51-
SPIRVPrepareFunctions(const SPIRVTargetMachine &TM) : ModulePass(ID), TM(TM) {
52-
initializeSPIRVPrepareFunctionsPass(*PassRegistry::getPassRegistry());
53-
}
47+
SPIRVPrepareFunctions(const SPIRVTargetMachine &TM)
48+
: ModulePass(ID), TM(TM) {}
5449

5550
bool runOnModule(Module &M) override;
5651

@@ -68,7 +63,7 @@ char SPIRVPrepareFunctions::ID = 0;
6863
INITIALIZE_PASS(SPIRVPrepareFunctions, "prepare-functions",
6964
"SPIRV prepare functions", false, false)
7065

71-
std::string lowerLLVMIntrinsicName(IntrinsicInst *II) {
66+
static std::string lowerLLVMIntrinsicName(IntrinsicInst *II) {
7267
Function *IntrinsicFunc = II->getCalledFunction();
7368
assert(IntrinsicFunc && "Missing function");
7469
std::string FuncName = IntrinsicFunc->getName().str();

llvm/lib/Target/SPIRV/SPIRVRegularizer.cpp

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,13 @@
2525

2626
using namespace llvm;
2727

28-
namespace llvm {
29-
void initializeSPIRVRegularizerPass(PassRegistry &);
30-
}
31-
3228
namespace {
3329
struct SPIRVRegularizer : public FunctionPass, InstVisitor<SPIRVRegularizer> {
3430
DenseMap<Function *, Function *> Old2NewFuncs;
3531

3632
public:
3733
static char ID;
38-
SPIRVRegularizer() : FunctionPass(ID) {
39-
initializeSPIRVRegularizerPass(*PassRegistry::getPassRegistry());
40-
}
34+
SPIRVRegularizer() : FunctionPass(ID) {}
4135
bool runOnFunction(Function &F) override;
4236
StringRef getPassName() const override { return "SPIR-V Regularizer"; }
4337

llvm/lib/Target/SPIRV/SPIRVStripConvergentIntrinsics.cpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,12 @@
2525

2626
using namespace llvm;
2727

28-
namespace llvm {
29-
void initializeSPIRVStripConvergentIntrinsicsPass(PassRegistry &);
30-
}
31-
28+
namespace {
3229
class SPIRVStripConvergentIntrinsics : public FunctionPass {
3330
public:
3431
static char ID;
3532

36-
SPIRVStripConvergentIntrinsics() : FunctionPass(ID) {
37-
initializeSPIRVStripConvergentIntrinsicsPass(
38-
*PassRegistry::getPassRegistry());
39-
};
33+
SPIRVStripConvergentIntrinsics() : FunctionPass(ID) {}
4034

4135
virtual bool runOnFunction(Function &F) override {
4236
DenseSet<Instruction *> ToRemove;
@@ -85,6 +79,7 @@ class SPIRVStripConvergentIntrinsics : public FunctionPass {
8579
return ToRemove.size() != 0;
8680
}
8781
};
82+
} // namespace
8883

8984
char SPIRVStripConvergentIntrinsics::ID = 0;
9085
INITIALIZE_PASS(SPIRVStripConvergentIntrinsics, "strip-convergent-intrinsics",

llvm/lib/Target/SPIRV/SPIRVTargetMachine.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,15 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeSPIRVTarget() {
4949
initializeSPIRVConvergenceRegionAnalysisWrapperPassPass(PR);
5050
initializeSPIRVStructurizerPass(PR);
5151
initializeSPIRVPreLegalizerCombinerPass(PR);
52+
initializeSPIRVLegalizePointerCastPass(PR);
53+
initializeSPIRVRegularizerPass(PR);
54+
initializeSPIRVPreLegalizerPass(PR);
55+
initializeSPIRVPostLegalizerPass(PR);
56+
initializeSPIRVMergeRegionExitTargetsPass(PR);
57+
initializeSPIRVEmitIntrinsicsPass(PR);
58+
initializeSPIRVEmitNonSemanticDIPass(PR);
59+
initializeSPIRVPrepareFunctionsPass(PR);
60+
initializeSPIRVStripConvergentIntrinsicsPass(PR);
5261
}
5362

5463
static std::string computeDataLayout(const Triple &TT) {

0 commit comments

Comments
 (0)