mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
3d2508df1f
``` // llvm-objdump -d output (before) 400000: e8 0b 00 00 00 callq 11 400005: e8 0b 00 00 00 callq 11 // llvm-objdump -d output (after) 400000: e8 0b 00 00 00 callq 0x400010 400005: e8 0b 00 00 00 callq 0x400015 // GNU objdump -d. The lack of 0x is not ideal because the result cannot be re-assembled 400000: e8 0b 00 00 00 callq 400010 400005: e8 0b 00 00 00 callq 400015 ``` In llvm-objdump, we pass the address of the next MCInst. Ideally we should just thread the address of the current address, unfortunately we cannot call X86MCCodeEmitter::encodeInstruction (X86MCCodeEmitter requires MCInstrInfo and MCContext) to get the length of the MCInst. MCInstPrinter::printInst has other callers (e.g llvm-mc -filetype=asm, llvm-mca) which set Address to 0. They leave MCInstPrinter::PrintBranchImmAsAddress as false and this change is a no-op for them. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D76580
20 lines
522 B
LLVM
20 lines
522 B
LLVM
; RUN: llc < %s -mtriple=x86_64-linux-gnu -filetype=obj -o - \
|
|
; RUN: | llvm-objdump --triple=x86_64-linux-gnu -d - \
|
|
; RUN: | FileCheck %s
|
|
|
|
; CHECK: 0000000000000000 <test1>:
|
|
; CHECK-NEXT: 0: 74 00 je 0x2 <test1+0x2>
|
|
; CHECK-NEXT: 2: c3 retq
|
|
|
|
define void @test1() {
|
|
entry:
|
|
callbr void asm sideeffect "je ${0:l}", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test1, %a.b.normal.jump))
|
|
to label %asm.fallthrough [label %a.b.normal.jump]
|
|
|
|
asm.fallthrough:
|
|
ret void
|
|
|
|
a.b.normal.jump:
|
|
ret void
|
|
}
|