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

0 commit comments

Comments
 (0)