diff --git a/llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp b/llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp --- a/llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp +++ b/llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp @@ -65,11 +65,7 @@ return LowerRISCVMachineOperandToMCOperand(MO, MCOp, *this); } - void emitStartOfAsmFile(Module &M) override; void emitEndOfAsmFile(Module &M) override; - -private: - void emitAttributes(); }; } @@ -177,23 +173,14 @@ return false; } -void RISCVAsmPrinter::emitStartOfAsmFile(Module &M) { - if (TM.getTargetTriple().isOSBinFormatELF()) - emitAttributes(); -} - void RISCVAsmPrinter::emitEndOfAsmFile(Module &M) { RISCVTargetStreamer &RTS = static_cast(*OutStreamer->getTargetStreamer()); - if (TM.getTargetTriple().isOSBinFormatELF()) + if (TM.getTargetTriple().isOSBinFormatELF()) { + RTS.emitTargetAttributes(*STI); RTS.finishAttributeSection(); -} - -void RISCVAsmPrinter::emitAttributes() { - RISCVTargetStreamer &RTS = - static_cast(*OutStreamer->getTargetStreamer()); - RTS.emitTargetAttributes(*STI); + } } // Force static initialization. diff --git a/llvm/test/CodeGen/RISCV/subtarget-features-obj-bug.ll b/llvm/test/CodeGen/RISCV/subtarget-features-obj-bug.ll --- a/llvm/test/CodeGen/RISCV/subtarget-features-obj-bug.ll +++ b/llvm/test/CodeGen/RISCV/subtarget-features-obj-bug.ll @@ -2,7 +2,7 @@ ; RUN: | FileCheck %s ; CHECK: TagName: arch -; CHECK: Value: rv64i2p0 +; CHECK: Value: rv64i2p0_m2p0_a2p0_f2p0_d2p0_c2p0 target triple = "riscv64-unknown-linux-gnu"