Skip to content

Commit 675cb70

Browse files
authored
Register assembly printer passes (#138348)
Register assembly printer passes in the pass registry. This makes it possible to use `llc -start-before=<target>-asm-printer ...` in tests. Adds a `char &ID` parameter to the AssemblyPrinter constructor to allow targets to use the `INITIALIZE_PASS` macros and register the pass in the pass registry. This currently has a default parameter so it won't break any targets that have not been updated.
1 parent 91f1830 commit 675cb70

File tree

94 files changed

+289
-47
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+289
-47
lines changed

llvm/include/llvm/CodeGen/AsmPrinter.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,8 @@ class AsmPrinter : public MachineFunctionPass {
240240
bool DbgInfoAvailable = false;
241241

242242
protected:
243-
explicit AsmPrinter(TargetMachine &TM, std::unique_ptr<MCStreamer> Streamer);
243+
AsmPrinter(TargetMachine &TM, std::unique_ptr<MCStreamer> Streamer,
244+
char &ID = AsmPrinter::ID);
244245

245246
public:
246247
~AsmPrinter() override;

llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,8 @@ Align AsmPrinter::getGVAlignment(const GlobalObject *GV, const DataLayout &DL,
382382
return Alignment;
383383
}
384384

385-
AsmPrinter::AsmPrinter(TargetMachine &tm, std::unique_ptr<MCStreamer> Streamer)
385+
AsmPrinter::AsmPrinter(TargetMachine &tm, std::unique_ptr<MCStreamer> Streamer,
386+
char &ID)
386387
: MachineFunctionPass(ID), TM(tm), MAI(tm.getMCAsmInfo()),
387388
OutContext(Streamer->getContext()), OutStreamer(std::move(Streamer)),
388389
SM(*this) {

llvm/lib/Target/AArch64/AArch64.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ ModulePass *createAArch64Arm64ECCallLoweringPass();
7777
void initializeAArch64A53Fix835769Pass(PassRegistry&);
7878
void initializeAArch64A57FPLoadBalancingPass(PassRegistry&);
7979
void initializeAArch64AdvSIMDScalarPass(PassRegistry&);
80+
void initializeAArch64AsmPrinterPass(PassRegistry &);
8081
void initializeAArch64PointerAuthPass(PassRegistry&);
8182
void initializeAArch64BranchTargetsPass(PassRegistry&);
8283
void initializeAArch64CFIFixupPass(PassRegistry&);

llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,11 @@ class AArch64AsmPrinter : public AsmPrinter {
9696
SectionToImportedFunctionCalls;
9797

9898
public:
99+
static char ID;
100+
99101
AArch64AsmPrinter(TargetMachine &TM, std::unique_ptr<MCStreamer> Streamer)
100-
: AsmPrinter(TM, std::move(Streamer)), MCInstLowering(OutContext, *this),
101-
FM(*this) {}
102+
: AsmPrinter(TM, std::move(Streamer), ID),
103+
MCInstLowering(OutContext, *this), FM(*this) {}
102104

103105
StringRef getPassName() const override { return "AArch64 Assembly Printer"; }
104106

@@ -3523,6 +3525,11 @@ const MCExpr *AArch64AsmPrinter::lowerConstant(const Constant *CV,
35233525
return AsmPrinter::lowerConstant(CV, BaseCV, Offset);
35243526
}
35253527

3528+
char AArch64AsmPrinter::ID = 0;
3529+
3530+
INITIALIZE_PASS(AArch64AsmPrinter, "aarch64-asm-printer",
3531+
"AArch64 Assmebly Printer", false, false)
3532+
35263533
// Force static initialization.
35273534
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAArch64AsmPrinter() {
35283535
RegisterAsmPrinter<AArch64AsmPrinter> X(getTheAArch64leTarget());

llvm/lib/Target/AArch64/AArch64TargetMachine.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAArch64Target() {
235235
initializeAArch64A53Fix835769Pass(PR);
236236
initializeAArch64A57FPLoadBalancingPass(PR);
237237
initializeAArch64AdvSIMDScalarPass(PR);
238+
initializeAArch64AsmPrinterPass(PR);
238239
initializeAArch64BranchTargetsPass(PR);
239240
initializeAArch64CollectLOHPass(PR);
240241
initializeAArch64CompressJumpTablesPass(PR);

llvm/lib/Target/AMDGPU/AMDGPU.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ void initializeAMDGPUDAGToDAGISelLegacyPass(PassRegistry &);
9595

9696
void initializeAMDGPUAlwaysInlinePass(PassRegistry&);
9797

98+
void initializeAMDGPUAsmPrinterPass(PassRegistry &);
99+
98100
Pass *createAMDGPUAttributorLegacyPass();
99101
void initializeAMDGPUAttributorLegacyPass(PassRegistry &);
100102

llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1742,3 +1742,8 @@ void AMDGPUAsmPrinter::emitResourceUsageRemarks(
17421742
EmitResourceUsageRemark("BytesLDS", "LDS Size [bytes/block]",
17431743
CurrentProgramInfo.LDSSize);
17441744
}
1745+
1746+
char AMDGPUAsmPrinter::ID = 0;
1747+
1748+
INITIALIZE_PASS(AMDGPUAsmPrinter, "amdgpu-asm-printer",
1749+
"AMDGPU Assembly Printer", false, false)

llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ class MetadataStreamer;
3636
} // namespace AMDGPU
3737

3838
class AMDGPUAsmPrinter final : public AsmPrinter {
39+
public:
40+
static char ID;
41+
3942
private:
4043
unsigned CodeObjectVersion;
4144
void initializeTargetID(const Module &M);

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAMDGPUTarget() {
495495
initializeR600EmitClauseMarkersPass(*PR);
496496
initializeR600MachineCFGStructurizerPass(*PR);
497497
initializeGlobalISel(*PR);
498+
initializeAMDGPUAsmPrinterPass(*PR);
498499
initializeAMDGPUDAGToDAGISelLegacyPass(*PR);
499500
initializeGCNDPPCombineLegacyPass(*PR);
500501
initializeSILowerI1CopiesLegacyPass(*PR);

llvm/lib/Target/ARC/ARC.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ FunctionPass *createARCISelDag(ARCTargetMachine &TM, CodeGenOptLevel OptLevel);
2727
FunctionPass *createARCExpandPseudosPass();
2828
FunctionPass *createARCOptAddrMode();
2929
FunctionPass *createARCBranchFinalizePass();
30+
void initializeARCAsmPrinterPass(PassRegistry &);
3031
void initializeARCDAGToDAGISelLegacyPass(PassRegistry &);
3132

3233
} // end namespace llvm

llvm/lib/Target/ARC/ARCAsmPrinter.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,11 @@ class ARCAsmPrinter : public AsmPrinter {
3535
ARCMCInstLower MCInstLowering;
3636

3737
public:
38+
static char ID;
39+
3840
explicit ARCAsmPrinter(TargetMachine &TM,
3941
std::unique_ptr<MCStreamer> Streamer)
40-
: AsmPrinter(TM, std::move(Streamer)),
42+
: AsmPrinter(TM, std::move(Streamer), ID),
4143
MCInstLowering(&OutContext, *this) {}
4244

4345
StringRef getPassName() const override { return "ARC Assembly Printer"; }
@@ -72,6 +74,11 @@ bool ARCAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
7274
return AsmPrinter::runOnMachineFunction(MF);
7375
}
7476

77+
char ARCAsmPrinter::ID = 0;
78+
79+
INITIALIZE_PASS(ARCAsmPrinter, "arc-asm-printer", "ARC Assmebly Printer", false,
80+
false)
81+
7582
// Force static initialization.
7683
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeARCAsmPrinter() {
7784
RegisterAsmPrinter<ARCAsmPrinter> X(getTheARCTarget());

llvm/lib/Target/ARC/ARCTargetMachine.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ MachineFunctionInfo *ARCTargetMachine::createMachineFunctionInfo(
9898
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeARCTarget() {
9999
RegisterTargetMachine<ARCTargetMachine> X(getTheARCTarget());
100100
PassRegistry &PR = *PassRegistry::getPassRegistry();
101+
initializeARCAsmPrinterPass(PR);
101102
initializeARCDAGToDAGISelLegacyPass(PR);
102103
}
103104

llvm/lib/Target/ARM/ARM.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ FunctionPass *createARMFixCortexA57AES1742098Pass();
6161
void LowerARMMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI,
6262
ARMAsmPrinter &AP);
6363

64+
void initializeARMAsmPrinterPass(PassRegistry &);
6465
void initializeARMBlockPlacementPass(PassRegistry &);
6566
void initializeARMBranchTargetsPass(PassRegistry &);
6667
void initializeARMConstantIslandsPass(PassRegistry &);

llvm/lib/Target/ARM/ARMAsmPrinter.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ using namespace llvm;
5050

5151
ARMAsmPrinter::ARMAsmPrinter(TargetMachine &TM,
5252
std::unique_ptr<MCStreamer> Streamer)
53-
: AsmPrinter(TM, std::move(Streamer)), Subtarget(nullptr), AFI(nullptr),
53+
: AsmPrinter(TM, std::move(Streamer), ID), Subtarget(nullptr), AFI(nullptr),
5454
MCP(nullptr), InConstantPool(false), OptimizationGoals(-1) {}
5555

5656
void ARMAsmPrinter::emitFunctionBodyEnd() {
@@ -2434,6 +2434,11 @@ void ARMAsmPrinter::emitInstruction(const MachineInstr *MI) {
24342434
EmitToStreamer(*OutStreamer, TmpInst);
24352435
}
24362436

2437+
char ARMAsmPrinter::ID = 0;
2438+
2439+
INITIALIZE_PASS(ARMAsmPrinter, "arm-asm-printer", "ARM Assembly Printer", false,
2440+
false)
2441+
24372442
//===----------------------------------------------------------------------===//
24382443
// Target Registry Stuff
24392444
//===----------------------------------------------------------------------===//

llvm/lib/Target/ARM/ARMAsmPrinter.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ namespace ARM {
2929
}
3030

3131
class LLVM_LIBRARY_VISIBILITY ARMAsmPrinter : public AsmPrinter {
32+
public:
33+
static char ID;
3234

35+
private:
3336
/// Subtarget - Keep a pointer to the ARMSubtarget around so that we can
3437
/// make the right decision when printing asm code for different targets.
3538
const ARMSubtarget *Subtarget;
@@ -152,6 +155,7 @@ class LLVM_LIBRARY_VISIBILITY ARMAsmPrinter : public AsmPrinter {
152155
/// the .s file.
153156
void emitMachineConstantPoolValue(MachineConstantPoolValue *MCPV) override;
154157
};
158+
155159
} // end namespace llvm
156160

157161
#endif

llvm/lib/Target/ARM/ARMTargetMachine.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeARMTarget() {
9191

9292
PassRegistry &Registry = *PassRegistry::getPassRegistry();
9393
initializeGlobalISel(Registry);
94+
initializeARMAsmPrinterPass(Registry);
9495
initializeARMLoadStoreOptPass(Registry);
9596
initializeARMPreAllocLoadStoreOptPass(Registry);
9697
initializeARMParallelDSPPass(Registry);

llvm/lib/Target/AVR/AVR.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ FunctionPass *createAVRExpandPseudoPass();
3131
FunctionPass *createAVRFrameAnalyzerPass();
3232
FunctionPass *createAVRBranchSelectionPass();
3333

34+
void initializeAVRAsmPrinterPass(PassRegistry &);
3435
void initializeAVRDAGToDAGISelLegacyPass(PassRegistry &);
3536
void initializeAVRExpandPseudoPass(PassRegistry &);
3637
void initializeAVRShiftExpandPass(PassRegistry &);

llvm/lib/Target/AVR/AVRAsmPrinter.cpp

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,15 @@
3939

4040
#define DEBUG_TYPE "avr-asm-printer"
4141

42-
namespace llvm {
42+
using namespace llvm;
43+
44+
namespace {
4345

4446
/// An AVR assembly code printer.
4547
class AVRAsmPrinter : public AsmPrinter {
4648
public:
4749
AVRAsmPrinter(TargetMachine &TM, std::unique_ptr<MCStreamer> Streamer)
48-
: AsmPrinter(TM, std::move(Streamer)), MRI(*TM.getMCRegisterInfo()) {}
50+
: AsmPrinter(TM, std::move(Streamer), ID), MRI(*TM.getMCRegisterInfo()) {}
4951

5052
StringRef getPassName() const override { return "AVR Assembly Printer"; }
5153

@@ -68,11 +70,15 @@ class AVRAsmPrinter : public AsmPrinter {
6870

6971
void emitStartOfAsmFile(Module &M) override;
7072

73+
static char ID;
74+
7175
private:
7276
const MCRegisterInfo &MRI;
7377
bool EmittedStructorSymbolAttrs = false;
7478
};
7579

80+
} // namespace
81+
7682
void AVRAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo,
7783
raw_ostream &O) {
7884
const MachineOperand &MO = MI->getOperand(OpNo);
@@ -324,8 +330,11 @@ void AVRAsmPrinter::emitStartOfAsmFile(Module &M) {
324330
MCConstantExpr::create(SubTM->getIORegRAMPZ(), MMI->getContext()));
325331
}
326332

327-
} // end of namespace llvm
333+
char AVRAsmPrinter::ID = 0;
334+
335+
INITIALIZE_PASS(AVRAsmPrinter, "avr-asm-printer", "AVR Assembly Printer", false,
336+
false)
328337

329338
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAVRAsmPrinter() {
330-
llvm::RegisterAsmPrinter<llvm::AVRAsmPrinter> X(llvm::getTheAVRTarget());
339+
llvm::RegisterAsmPrinter<AVRAsmPrinter> X(getTheAVRTarget());
331340
}

llvm/lib/Target/AVR/AVRTargetMachine.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAVRTarget() {
9292
RegisterTargetMachine<AVRTargetMachine> X(getTheAVRTarget());
9393

9494
auto &PR = *PassRegistry::getPassRegistry();
95+
initializeAVRAsmPrinterPass(PR);
9596
initializeAVRExpandPseudoPass(PR);
9697
initializeAVRShiftExpandPass(PR);
9798
initializeAVRDAGToDAGISelLegacyPass(PR);

llvm/lib/Target/BPF/BPF.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ InstructionSelector *createBPFInstructionSelector(const BPFTargetMachine &,
3434
const BPFSubtarget &,
3535
const BPFRegisterBankInfo &);
3636

37+
void initializeBPFAsmPrinterPass(PassRegistry &);
3738
void initializeBPFCheckAndAdjustIRPass(PassRegistry&);
3839
void initializeBPFDAGToDAGISelLegacyPass(PassRegistry &);
3940
void initializeBPFMIPeepholePass(PassRegistry &);

llvm/lib/Target/BPF/BPFAsmPrinter.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class BPFAsmPrinter : public AsmPrinter {
3737
public:
3838
explicit BPFAsmPrinter(TargetMachine &TM,
3939
std::unique_ptr<MCStreamer> Streamer)
40-
: AsmPrinter(TM, std::move(Streamer)), BTF(nullptr) {}
40+
: AsmPrinter(TM, std::move(Streamer), ID), BTF(nullptr) {}
4141

4242
StringRef getPassName() const override { return "BPF Assembly Printer"; }
4343
bool doInitialization(Module &M) override;
@@ -49,6 +49,8 @@ class BPFAsmPrinter : public AsmPrinter {
4949

5050
void emitInstruction(const MachineInstr *MI) override;
5151

52+
static char ID;
53+
5254
private:
5355
BTFDebug *BTF;
5456
};
@@ -147,6 +149,11 @@ void BPFAsmPrinter::emitInstruction(const MachineInstr *MI) {
147149
EmitToStreamer(*OutStreamer, TmpInst);
148150
}
149151

152+
char BPFAsmPrinter::ID = 0;
153+
154+
INITIALIZE_PASS(BPFAsmPrinter, "bpf-asm-printer", "BPF Assembly Printer", false,
155+
false)
156+
150157
// Force static initialization.
151158
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeBPFAsmPrinter() {
152159
RegisterAsmPrinter<BPFAsmPrinter> X(getTheBPFleTarget());

llvm/lib/Target/BPF/BPFTargetMachine.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeBPFTarget() {
4545

4646
PassRegistry &PR = *PassRegistry::getPassRegistry();
4747
initializeGlobalISel(PR);
48+
initializeBPFAsmPrinterPass(PR);
4849
initializeBPFCheckAndAdjustIRPass(PR);
4950
initializeBPFMIPeepholePass(PR);
5051
initializeBPFMIPreEmitPeepholePass(PR);

llvm/lib/Target/Hexagon/Hexagon.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class Pass;
2626
extern char &HexagonCopyHoistingID;
2727
extern char &HexagonExpandCondsetsID;
2828
extern char &HexagonTfrCleanupID;
29+
void initializeHexagonAsmPrinterPass(PassRegistry &);
2930
void initializeHexagonBitSimplifyPass(PassRegistry &);
3031
void initializeHexagonBranchRelaxationPass(PassRegistry &);
3132
void initializeHexagonCFGOptimizerPass(PassRegistry &);

llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -853,6 +853,11 @@ void HexagonAsmPrinter::LowerPATCHABLE_TAIL_CALL(const MachineInstr &MI) {
853853
EmitSled(MI, SledKind::TAIL_CALL);
854854
}
855855

856+
char HexagonAsmPrinter::ID = 0;
857+
858+
INITIALIZE_PASS(HexagonAsmPrinter, "hexagon-asm-printer",
859+
"Hexagon Assembly Printer", false, false)
860+
856861
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeHexagonAsmPrinter() {
857862
RegisterAsmPrinter<HexagonAsmPrinter> X(getTheHexagonTarget());
858863
}

llvm/lib/Target/Hexagon/HexagonAsmPrinter.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,18 @@ class raw_ostream;
2727
class TargetMachine;
2828

2929
class HexagonAsmPrinter : public AsmPrinter {
30+
public:
31+
static char ID;
32+
33+
private:
3034
const HexagonSubtarget *Subtarget = nullptr;
3135

3236
void emitAttributes();
3337

3438
public:
3539
explicit HexagonAsmPrinter(TargetMachine &TM,
3640
std::unique_ptr<MCStreamer> Streamer)
37-
: AsmPrinter(TM, std::move(Streamer)) {}
41+
: AsmPrinter(TM, std::move(Streamer), ID) {}
3842

3943
bool runOnMachineFunction(MachineFunction &Fn) override {
4044
Subtarget = &Fn.getSubtarget<HexagonSubtarget>();

llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeHexagonTarget() {
179179
RegisterTargetMachine<HexagonTargetMachine> X(getTheHexagonTarget());
180180

181181
PassRegistry &PR = *PassRegistry::getPassRegistry();
182+
initializeHexagonAsmPrinterPass(PR);
182183
initializeHexagonBitSimplifyPass(PR);
183184
initializeHexagonConstExtendersPass(PR);
184185
initializeHexagonConstPropagationPass(PR);

llvm/lib/Target/Lanai/Lanai.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ FunctionPass *createLanaiMemAluCombinerPass();
3737
// operations.
3838
FunctionPass *createLanaiSetflagAluCombinerPass();
3939

40+
void initializeLanaiAsmPrinterPass(PassRegistry &);
4041
void initializeLanaiDAGToDAGISelLegacyPass(PassRegistry &);
4142
void initializeLanaiMemAluCombinerPass(PassRegistry &);
4243

llvm/lib/Target/Lanai/LanaiAsmPrinter.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class LanaiAsmPrinter : public AsmPrinter {
3838
public:
3939
explicit LanaiAsmPrinter(TargetMachine &TM,
4040
std::unique_ptr<MCStreamer> Streamer)
41-
: AsmPrinter(TM, std::move(Streamer)) {}
41+
: AsmPrinter(TM, std::move(Streamer), ID) {}
4242

4343
StringRef getPassName() const override { return "Lanai Assembly Printer"; }
4444

@@ -52,6 +52,9 @@ class LanaiAsmPrinter : public AsmPrinter {
5252
private:
5353
void customEmitInstruction(const MachineInstr *MI);
5454
void emitCallInstruction(const MachineInstr *MI);
55+
56+
public:
57+
static char ID;
5558
};
5659
} // end of anonymous namespace
5760

@@ -233,6 +236,11 @@ bool LanaiAsmPrinter::isBlockOnlyReachableByFallthrough(
233236
return !I->isBarrier();
234237
}
235238

239+
char LanaiAsmPrinter::ID = 0;
240+
241+
INITIALIZE_PASS(LanaiAsmPrinter, "lanai-asm-printer", "Lanai Assembly Printer",
242+
false, false)
243+
236244
// Force static initialization.
237245
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeLanaiAsmPrinter() {
238246
RegisterAsmPrinter<LanaiAsmPrinter> X(getTheLanaiTarget());

llvm/lib/Target/Lanai/LanaiTargetMachine.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeLanaiTarget() {
3131
RegisterTargetMachine<LanaiTargetMachine> registered_target(
3232
getTheLanaiTarget());
3333
PassRegistry &PR = *PassRegistry::getPassRegistry();
34+
initializeLanaiAsmPrinterPass(PR);
3435
initializeLanaiDAGToDAGISelLegacyPass(PR);
3536
initializeLanaiMemAluCombinerPass(PR);
3637
}

0 commit comments

Comments
 (0)