[ARMInstPrinter] Print the target address of a branch instruction
authorIgor Kudrin <ikudrin@accesssoftek.com>
Wed, 30 Jun 2021 09:34:52 +0000 (16:34 +0700)
committerIgor Kudrin <ikudrin@accesssoftek.com>
Wed, 30 Jun 2021 09:35:28 +0000 (16:35 +0700)
commit657e067bb58c585400d62d6b260301ca0fdb7b48
tree58ca3602a4e0b507a8f6725e03e0b92277bdf0f9
parent4361bd9b7b38c73b69f9a37e52d0b72989e84947
[ARMInstPrinter] Print the target address of a branch instruction

This follows other patches that changed printing immediate values of
branch instructions to target addresses, see D76580 (x86), D76591 (PPC),
D77853 (AArch64).

As observing immediate values might sometimes be useful, they are
printed as comments for branch instructions.

// llvm-objdump -d output (before)
000200b4 <_start>:
   200b4: ff ff ff fa   blx     #-4 <thumb>
000200b8 <thumb>:
   200b8: ff f7 fc ef   blx     #-8 <_start>

// llvm-objdump -d output (after)
000200b4 <_start>:
   200b4: ff ff ff fa   blx     0x200b8 <thumb>         @ imm = #-4
000200b8 <thumb>:
   200b8: ff f7 fc ef   blx     0x200b4 <_start>        @ imm = #-8

// GNU objdump -d.
000200b4 <_start>:
   200b4:       faffffff        blx     200b8 <thumb>
000200b8 <thumb>:
   200b8:       f7ff effc       blx     200b4 <_start>

Differential Revision: https://reviews.llvm.org/D104701
74 files changed:
lld/test/COFF/arm-thumb-thunks-multipass.s
lld/test/COFF/arm-thumb-thunks.s
lld/test/COFF/armnt-blx23t.test
lld/test/COFF/armnt-branch24t.test
lld/test/COFF/delayimports-armnt.yaml
lld/test/ELF/arm-bl-v6-inrange.s
lld/test/ELF/arm-bl-v6.s
lld/test/ELF/arm-blx.s
lld/test/ELF/arm-branch-rangethunk.s
lld/test/ELF/arm-branch-undef-weak-plt-thunk.s
lld/test/ELF/arm-branch.s
lld/test/ELF/arm-exidx-canunwind.s
lld/test/ELF/arm-exidx-gc.s
lld/test/ELF/arm-extreme-range-pi-thunk.s
lld/test/ELF/arm-fix-cortex-a8-blx.s
lld/test/ELF/arm-fix-cortex-a8-nopatch.s
lld/test/ELF/arm-fix-cortex-a8-plt.s
lld/test/ELF/arm-fix-cortex-a8-recognize.s
lld/test/ELF/arm-fix-cortex-a8-thunk-align.s
lld/test/ELF/arm-fix-cortex-a8-thunk.s
lld/test/ELF/arm-force-pi-thunk.s
lld/test/ELF/arm-gnu-ifunc-plt.s
lld/test/ELF/arm-gnu-ifunc.s
lld/test/ELF/arm-long-thunk-converge.s
lld/test/ELF/arm-plt-reloc.s
lld/test/ELF/arm-thumb-branch.s
lld/test/ELF/arm-thumb-condbranch-thunk.s
lld/test/ELF/arm-thumb-interwork-abs.s
lld/test/ELF/arm-thumb-interwork-ifunc.s
lld/test/ELF/arm-thumb-interwork-notfunc.s
lld/test/ELF/arm-thumb-interwork-shared.s
lld/test/ELF/arm-thumb-interwork-thunk-v5.s
lld/test/ELF/arm-thumb-interwork-thunk.s
lld/test/ELF/arm-thumb-mix-range-thunk-os.s
lld/test/ELF/arm-thumb-narrow-branch-check.s
lld/test/ELF/arm-thumb-no-undefined-thunk.s
lld/test/ELF/arm-thumb-plt-range-thunk-os.s
lld/test/ELF/arm-thumb-plt-reloc.s
lld/test/ELF/arm-thumb-range-thunk-os.s
lld/test/ELF/arm-thumb-thunk-empty-pass.s
lld/test/ELF/arm-thumb-thunk-v6m.s
lld/test/ELF/arm-thumb-undefined-weak-narrow.test
lld/test/ELF/arm-thumb-undefined-weak.s
lld/test/ELF/arm-thunk-arm-thumb-reuse.s
lld/test/ELF/arm-thunk-largesection.s
lld/test/ELF/arm-thunk-linkerscript-dotexpr.s
lld/test/ELF/arm-thunk-linkerscript-large.s
lld/test/ELF/arm-thunk-linkerscript-orphan.s
lld/test/ELF/arm-thunk-linkerscript-sort.s
lld/test/ELF/arm-thunk-linkerscript.s
lld/test/ELF/arm-thunk-many-passes.s
lld/test/ELF/arm-thunk-multipass-plt.s
lld/test/ELF/arm-thunk-multipass.s
lld/test/ELF/arm-thunk-nosuitable.s
lld/test/ELF/arm-thunk-re-add.s
lld/test/ELF/arm-undefined-weak.s
llvm/lib/Target/ARM/MCTargetDesc/ARMInstPrinter.cpp
llvm/lib/Target/ARM/MCTargetDesc/ARMInstPrinter.h
llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h
llvm/test/CodeGen/ARM/Windows/division-range.ll
llvm/test/MC/ARM/arm-macho-calls.s
llvm/test/MC/ARM/branch-disassemble.s
llvm/test/MC/ARM/coff-relocations.s
llvm/test/MC/ARM/thumb-cb-thumbfunc.s
llvm/test/MC/ARM/thumb1-relax-bcc.s
llvm/test/MC/ARM/thumb1-relax-br.s
llvm/test/MC/ARM/thumb2-b.w-target.s
llvm/test/MC/ARM/thumb2-cbn-to-next-inst.s
llvm/test/MC/Disassembler/ARM/mve-lol.txt
llvm/test/tools/llvm-objdump/ELF/ARM/branch-symbols.s
llvm/test/tools/llvm-objdump/ELF/ARM/invalid-instruction.s
llvm/test/tools/llvm-objdump/ELF/ARM/tblxi-target.s
llvm/test/tools/llvm-objdump/ELF/ARM/unknown-instr.test