[PATCH] D71629: [SystemZ] Recognize mrecord-mcount in backend
Ulrich Weigand via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 17 23:40:09 PST 2019
uweigand added inline comments.
================
Comment at: llvm/lib/Target/SystemZ/SystemZAsmPrinter.cpp:565
if (MF->getFunction().getFnAttribute("mnop-mcount")
.getValueAsString() == "true") {
EmitNop(Ctx, *OutStreamer, 6, getSubtargetInfo());
----------------
For consistency, we should really remove the "true" from the "mnop-mcount" attribute as well. (That should be a separate patch.)
================
Comment at: llvm/lib/Target/SystemZ/SystemZAsmPrinter.cpp:575
- MCSymbol *fentry = Ctx.getOrCreateSymbol("__fentry__");
- const MCSymbolRefExpr *Op =
- MCSymbolRefExpr::create(fentry, MCSymbolRefExpr::VK_PLT, Ctx);
- OutStreamer->EmitInstruction(MCInstBuilder(SystemZ::BRASL)
- .addReg(SystemZ::R0D).addExpr(Op), getSubtargetInfo());
+ if (RecordMCount) {
+ OutStreamer->SwitchSection(
----------------
There's no reason to split the code up this way. You might as well do everything in the block above.
================
Comment at: llvm/lib/Target/SystemZ/SystemZAsmPrinter.cpp:578
+ Ctx.getELFSection("__mcount_loc", ELF::SHT_PROGBITS, ELF::SHF_ALLOC));
+ OutStreamer->EmitIntValue(0x1b, 8);
+ OutStreamer->SwitchSection(OutStreamer->getPreviousSection().first);
----------------
This is wrong, you need to emit a reference to the "DotSym" above.
I guess GCC uses the GAS unnamed label feature "1b" -- this is not the hex value 0x1b, but a backward reference to the immediately preceding instance of the "1:" label.
================
Comment at: llvm/test/CodeGen/SystemZ/mrecord-mcount-01.ll:12
+; CHECK: .section __mcount_loc,"a", at progbits
+; CHECK: .quad 27
+; CHECK: .text
----------------
So instead of ".quad 27" this should read ".quad .Ltmp0".
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D71629/new/
https://reviews.llvm.org/D71629
More information about the llvm-commits
mailing list