[PATCH] D120702: [RISCV] emit .option directive when generate assembly file
luxufan via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 1 01:03:39 PST 2022
StephenFan created this revision.
StephenFan added reviewers: jrtc27, asb, craig.topper.
Herald added subscribers: VincentWu, luke957, achieveartificialintelligence, vkmr, frasercrmck, evandro, luismarques, apazos, sameer.abuasal, s.egerton, Jim, benna, psnobl, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, kito-cheng, niosHD, sabuasal, simoncook, johnrusso, rbar, hiraditya.
StephenFan requested review of this revision.
Herald added subscribers: llvm-commits, pcwang-thead, eopXD, MaskRay.
Herald added a project: LLVM.
This patch add `.option norvc`, `.option nopic` and `.option norelax` directive when generate assembly file
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D120702
Files:
llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp
Index: llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp
===================================================================
--- llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp
+++ llvm/lib/Target/RISCV/RISCVAsmPrinter.cpp
@@ -70,6 +70,7 @@
private:
void emitAttributes();
+ void emitDirectiveOption();
};
}
@@ -178,8 +179,10 @@
}
void RISCVAsmPrinter::emitStartOfAsmFile(Module &M) {
- if (TM.getTargetTriple().isOSBinFormatELF())
- emitAttributes();
+ if (!TM.getTargetTriple().isOSBinFormatELF())
+ return;
+ emitAttributes();
+ emitDirectiveOption();
}
void RISCVAsmPrinter::emitEndOfAsmFile(Module &M) {
@@ -196,6 +199,20 @@
RTS.emitTargetAttributes(*STI);
}
+void RISCVAsmPrinter::emitDirectiveOption() {
+ RISCVTargetStreamer &RTS =
+ static_cast<RISCVTargetStreamer &>(*OutStreamer->getTargetStreamer());
+
+ if (!isPositionIndependent())
+ RTS.emitDirectiveOptionNoPIC();
+
+ if (!STI->hasFeature(RISCV::FeatureRelax))
+ RTS.emitDirectiveOptionNoRelax();
+
+ if (!STI->hasFeature(RISCV::FeatureStdExtC))
+ RTS.emitDirectiveOptionNoRVC();
+}
+
// Force static initialization.
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeRISCVAsmPrinter() {
RegisterAsmPrinter<RISCVAsmPrinter> X(getTheRISCV32Target());
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D120702.411999.patch
Type: text/x-patch
Size: 1265 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220301/6dd7e004/attachment.bin>
More information about the llvm-commits
mailing list