diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2022-07-04 19:20:19 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2023-02-08 19:02:26 +0000 |
commit | 81ad626541db97eb356e2c1d4a20eb2a26a766ab (patch) | |
tree | 311b6a8987c32b1e1dcbab65c54cfac3fdb56175 /contrib/llvm-project/llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp | |
parent | 5fff09660e06a66bed6482da9c70df328e16bbb6 (diff) | |
parent | 145449b1e420787bb99721a429341fa6be3adfb6 (diff) | |
download | src-81ad626541db97eb356e2c1d4a20eb2a26a766ab.tar.gz src-81ad626541db97eb356e2c1d4a20eb2a26a766ab.zip |
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp')
-rw-r--r-- | contrib/llvm-project/llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/contrib/llvm-project/llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp b/contrib/llvm-project/llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp index 9fed6e7baadc..5b2a247ebda0 100644 --- a/contrib/llvm-project/llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp +++ b/contrib/llvm-project/llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp @@ -38,12 +38,13 @@ STATISTIC(RISCVNumInstrsCompressed, namespace { class RISCVAsmPrinter : public AsmPrinter { - const MCSubtargetInfo *STI; + const MCSubtargetInfo *MCSTI; + const RISCVSubtarget *STI; public: explicit RISCVAsmPrinter(TargetMachine &TM, std::unique_ptr<MCStreamer> Streamer) - : AsmPrinter(TM, std::move(Streamer)), STI(TM.getMCSubtargetInfo()) {} + : AsmPrinter(TM, std::move(Streamer)), MCSTI(TM.getMCSubtargetInfo()) {} StringRef getPassName() const override { return "RISCV Assembly Printer"; } @@ -62,12 +63,14 @@ public: // Wrapper needed for tblgenned pseudo lowering. bool lowerOperand(const MachineOperand &MO, MCOperand &MCOp) const { - return LowerRISCVMachineOperandToMCOperand(MO, MCOp, *this); + return lowerRISCVMachineOperandToMCOperand(MO, MCOp, *this); } void emitStartOfAsmFile(Module &M) override; void emitEndOfAsmFile(Module &M) override; + void emitFunctionEntryLabel() override; + private: void emitAttributes(); }; @@ -170,7 +173,8 @@ bool RISCVAsmPrinter::runOnMachineFunction(MachineFunction &MF) { MCSubtargetInfo &NewSTI = OutStreamer->getContext().getSubtargetCopy(*TM.getMCSubtargetInfo()); NewSTI.setFeatureBits(MF.getSubtarget().getFeatureBits()); - STI = &NewSTI; + MCSTI = &NewSTI; + STI = &MF.getSubtarget<RISCVSubtarget>(); SetupMachineFunction(MF); emitFunctionBody(); @@ -193,7 +197,14 @@ void RISCVAsmPrinter::emitEndOfAsmFile(Module &M) { void RISCVAsmPrinter::emitAttributes() { RISCVTargetStreamer &RTS = static_cast<RISCVTargetStreamer &>(*OutStreamer->getTargetStreamer()); - RTS.emitTargetAttributes(*STI); + RTS.emitTargetAttributes(*MCSTI); +} + +void RISCVAsmPrinter::emitFunctionEntryLabel() { + AsmPrinter::emitFunctionEntryLabel(); + RISCVTargetStreamer &RTS = + static_cast<RISCVTargetStreamer &>(*OutStreamer->getTargetStreamer()); + RTS.setTargetABI(STI->getTargetABI()); } // Force static initialization. |