[PATCH] D72172: [MC] Add parameter `Address` to MCInstPrinter::printInst

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 3 11:50:46 PST 2020


MaskRay created this revision.
MaskRay added reviewers: grimar, jhenderson, jyknight, rnk, sperezglz.
Herald added subscribers: llvm-commits, luismarques, apazos, sameer.abuasal, pzheng, s.egerton, lenary, Jim, jsji, jocewei, rupprecht, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, atanasyan, edward-jones, zzheng, jrtc27, gbedwell, niosHD, sabuasal, simoncook, johnrusso, rbar, asb, fedor.sergeev, kbarton, aheejin, hiraditya, jgravelle-google, sbc100, nhaehnle, jvesely, nemanjai, sdardis, dylanmckay, dschuff, arsenm, jholewinski.
Herald added a reviewer: andreadb.
Herald added a project: LLVM.
MaskRay added a comment.
Herald added a subscriber: wuzish.

I should mention that `MCDisassembler::getInstruction` (which is used together with `printInst` in a dissasembler) accepts `uint64_t Address`.

  virtual DecodeStatus getInstruction(MCInst &Instr, uint64_t &Size,
                                      ArrayRef<uint8_t> Bytes, uint64_t Address,
                                      raw_ostream &VStream,
                                      raw_ostream &CStream) const = 0;


printInst prints a branch/call instruction as `b offset` (there are many
variants on various targets) instead of `b address`.

It is a convention to use address instead of offset in most external
symbolizers/disassemblers. This difference makes `llvm-objdump -d`
output unsatisfactory.

Add `uint64_t Address` to printInst, so that it can pass the argument to
printInstruction. The next step is to add the argument to
printInstruction (generated by tablegen from the instruction set
description). We can gradually migrate targets to print `address`
instead of `offset`.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D72172

Files:
  llvm/include/llvm/MC/MCInstPrinter.h
  llvm/include/llvm/MC/MCStreamer.h
  llvm/lib/MC/MCAsmStreamer.cpp
  llvm/lib/MC/MCDisassembler/Disassembler.cpp
  llvm/lib/MC/MCStreamer.cpp
  llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
  llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.h
  llvm/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp
  llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp
  llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.h
  llvm/lib/Target/ARC/MCTargetDesc/ARCInstPrinter.cpp
  llvm/lib/Target/ARC/MCTargetDesc/ARCInstPrinter.h
  llvm/lib/Target/ARM/MCTargetDesc/ARMInstPrinter.cpp
  llvm/lib/Target/ARM/MCTargetDesc/ARMInstPrinter.h
  llvm/lib/Target/AVR/MCTargetDesc/AVRInstPrinter.cpp
  llvm/lib/Target/AVR/MCTargetDesc/AVRInstPrinter.h
  llvm/lib/Target/BPF/MCTargetDesc/BPFInstPrinter.cpp
  llvm/lib/Target/BPF/MCTargetDesc/BPFInstPrinter.h
  llvm/lib/Target/Hexagon/MCTargetDesc/HexagonInstPrinter.cpp
  llvm/lib/Target/Hexagon/MCTargetDesc/HexagonInstPrinter.h
  llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp
  llvm/lib/Target/Lanai/MCTargetDesc/LanaiInstPrinter.cpp
  llvm/lib/Target/Lanai/MCTargetDesc/LanaiInstPrinter.h
  llvm/lib/Target/MSP430/MCTargetDesc/MSP430InstPrinter.cpp
  llvm/lib/Target/MSP430/MCTargetDesc/MSP430InstPrinter.h
  llvm/lib/Target/Mips/MCTargetDesc/MipsInstPrinter.cpp
  llvm/lib/Target/Mips/MCTargetDesc/MipsInstPrinter.h
  llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXInstPrinter.cpp
  llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXInstPrinter.h
  llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.cpp
  llvm/lib/Target/PowerPC/MCTargetDesc/PPCInstPrinter.h
  llvm/lib/Target/RISCV/MCTargetDesc/RISCVInstPrinter.cpp
  llvm/lib/Target/RISCV/MCTargetDesc/RISCVInstPrinter.h
  llvm/lib/Target/Sparc/MCTargetDesc/SparcInstPrinter.cpp
  llvm/lib/Target/Sparc/MCTargetDesc/SparcInstPrinter.h
  llvm/lib/Target/SystemZ/MCTargetDesc/SystemZInstPrinter.cpp
  llvm/lib/Target/SystemZ/MCTargetDesc/SystemZInstPrinter.h
  llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyInstPrinter.cpp
  llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyInstPrinter.h
  llvm/lib/Target/X86/MCTargetDesc/X86ATTInstPrinter.cpp
  llvm/lib/Target/X86/MCTargetDesc/X86ATTInstPrinter.h
  llvm/lib/Target/X86/MCTargetDesc/X86IntelInstPrinter.cpp
  llvm/lib/Target/X86/MCTargetDesc/X86IntelInstPrinter.h
  llvm/lib/Target/XCore/MCTargetDesc/XCoreInstPrinter.cpp
  llvm/lib/Target/XCore/MCTargetDesc/XCoreInstPrinter.h
  llvm/tools/llvm-cfi-verify/lib/FileAnalysis.cpp
  llvm/tools/llvm-exegesis/lib/Analysis.cpp
  llvm/tools/llvm-mca/Views/BottleneckAnalysis.cpp
  llvm/tools/llvm-mca/Views/InstructionInfoView.cpp
  llvm/tools/llvm-mca/Views/ResourcePressureView.cpp
  llvm/tools/llvm-mca/Views/TimelineView.cpp
  llvm/tools/llvm-mca/llvm-mca.cpp
  llvm/tools/llvm-objdump/MachODump.cpp
  llvm/tools/llvm-objdump/llvm-objdump.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D72172.236097.patch
Type: text/x-patch
Size: 40585 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200103/7c7171b0/attachment-0001.bin>


More information about the llvm-commits mailing list