[test] Improve linker-relaxable fixups tests
The behavior will change once the assembler improves (#140692)
This commit is contained in:
parent
8b2c013564
commit
53edb1a160
@ -2,7 +2,7 @@
|
||||
;; after linker relaxation. See https://github.com/ClangBuiltLinux/linux/issues/1965
|
||||
|
||||
; RUN: llc -mtriple=riscv64 -mattr=-relax -filetype=obj < %s \
|
||||
; RUN: | llvm-objdump -d -r - | FileCheck %s
|
||||
; RUN: | llvm-objdump -d -r - | FileCheck %s --check-prefixes=CHECK,NORELAX
|
||||
; RUN: llc -mtriple=riscv64 -mattr=+relax -filetype=obj < %s \
|
||||
; RUN: | llvm-objdump -d -r - | FileCheck %s --check-prefixes=CHECK,RELAX
|
||||
|
||||
@ -12,14 +12,22 @@
|
||||
; CHECK-NEXT: R_RISCV_CALL_PLT f
|
||||
; RELAX-NEXT: R_RISCV_RELAX *ABS*
|
||||
; CHECK-NEXT: jalr ra
|
||||
; CHECK-NEXT: j {{.*}}
|
||||
; RELAX-NEXT: R_RISCV_JAL .LBB0_{{.*}}
|
||||
; CHECK-NEXT: j {{.*}}
|
||||
; RELAX-NEXT: R_RISCV_JAL .L0
|
||||
; NORELAX-NEXT: li a0, 0x0
|
||||
; RELAX-EMPTY:
|
||||
|
||||
define dso_local noundef signext i32 @main() local_unnamed_addr #0 {
|
||||
entry:
|
||||
callbr void asm sideeffect ".option push\0A.option norvc\0A.option norelax\0Aj $0\0A.option pop\0A", "!i"() #2
|
||||
callbr void asm sideeffect ".option push\0A.option norelax\0Aj $0\0A.option pop\0A", "!i"()
|
||||
to label %asm.fallthrough [label %label]
|
||||
|
||||
asm.fallthrough: ; preds = %entry
|
||||
tail call void @f()
|
||||
callbr void asm sideeffect ".option push\0A.option norelax\0Aj $0\0A.option pop\0A", "!i"()
|
||||
to label %asm.fallthrough [label %label]
|
||||
br label %label
|
||||
|
||||
label: ; preds = %asm.fallthrough, %entry
|
||||
|
@ -1,5 +1,5 @@
|
||||
# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+c < %s \
|
||||
# RUN: | llvm-objdump -M no-aliases -d - \
|
||||
# RUN: | llvm-objdump -M no-aliases -dr - \
|
||||
# RUN: | FileCheck -check-prefix=CHECK-INSTR %s
|
||||
# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+c,+relax < %s \
|
||||
# RUN: | llvm-readobj -r - | FileCheck -check-prefix=CHECK-RELOC %s
|
||||
@ -8,18 +8,28 @@
|
||||
|
||||
.LBB1:
|
||||
|
||||
## This is linker-relaxable to avoid resolving the following fixups
|
||||
call relax
|
||||
|
||||
jal zero, .LBB0+16
|
||||
# CHECK-INSTR: jal zero, 0x10
|
||||
# CHECK-RELOC: R_RISCV_JAL
|
||||
|
||||
beq a0, a1, .LBB1+32
|
||||
# CHECK-INSTR: beq a0, a1, 0x20
|
||||
# CHECK-RELOC: R_RISCV_BRANCH
|
||||
# CHECK-RELOC-NEXT: R_RISCV_BRANCH
|
||||
|
||||
c.j .+32
|
||||
# CHECK-INSTR: c.j 0x28
|
||||
# CHECK-RELOC: R_RISCV_RVC_JUMP
|
||||
# CHECK-INSTR: c.j 0x30
|
||||
# CHECK-RELOC-NEXT: R_RISCV_RVC_JUMP
|
||||
|
||||
c.j .LBB2+4
|
||||
# CHECK-INSTR: c.j 0x22
|
||||
# CHECK-RELOC-NEXT: R_RISCV_RVC_JUMP
|
||||
|
||||
c.beqz a0, .-2
|
||||
# CHECK-INSTR: c.beqz a0, 0x8
|
||||
# CHECK-RELOC: R_RISCV_RVC_BRANCH
|
||||
# CHECK-INSTR: c.beqz a0, 0x12
|
||||
# CHECK-RELOC-NEXT: R_RISCV_RVC_BRANCH
|
||||
|
||||
call relax
|
||||
.LBB2:
|
||||
|
@ -25,7 +25,8 @@ test:
|
||||
# CHECK-INST-C-RELAX-NEXT: jal zero, {{.*}}
|
||||
# CHECK-INST-C-RELAX-NEXT: R_RISCV_JAL .L1
|
||||
bne a0, a1, .L1
|
||||
.fill 1300, 4, 0
|
||||
call relax
|
||||
.fill 1300-2, 4, 0
|
||||
.L1:
|
||||
ret
|
||||
# CHECK-INST: bne a0, a1, 0x1464
|
||||
|
@ -15,10 +15,11 @@ FAR_BRANCH_NEGATIVE:
|
||||
|
||||
NEAR_NEGATIVE:
|
||||
c.nop
|
||||
call relax
|
||||
|
||||
start:
|
||||
c.bnez a0, NEAR
|
||||
#INSTR: c.bnez a0, 0x91e
|
||||
#INSTR: c.bnez a0, 0x92e
|
||||
#RELAX-INSTR: c.bnez a0, 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_BRANCH
|
||||
c.bnez a0, NEAR_NEGATIVE
|
||||
@ -26,7 +27,7 @@ start:
|
||||
#RELAX-INSTR: c.bnez a0, 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_BRANCH
|
||||
c.bnez a0, FAR_BRANCH
|
||||
#INSTR-NEXT: bne a0, zero, 0xa20
|
||||
#INSTR-NEXT: bne a0, zero, 0xa30
|
||||
#RELAX-INSTR-NEXT: bne a0, zero, 0
|
||||
#RELAX-RELOC: R_RISCV_BRANCH
|
||||
c.bnez a0, FAR_BRANCH_NEGATIVE
|
||||
@ -34,7 +35,7 @@ start:
|
||||
#RELAX-INSTR-NEXT: bne a0, zero, 0
|
||||
#RELAX-RELOC: R_RISCV_BRANCH
|
||||
c.bnez a0, FAR_JUMP
|
||||
#INSTR-NEXT: bne a0, zero, 0x11f2
|
||||
#INSTR-NEXT: bne a0, zero, 0x1202
|
||||
#RELAX-INSTR-NEXT: bne a0, zero, 0
|
||||
#RELAX-RELOC: R_RISCV_BRANCH
|
||||
c.bnez a0, FAR_JUMP_NEGATIVE
|
||||
@ -43,7 +44,7 @@ start:
|
||||
#RELAX-RELOC: R_RISCV_BRANCH
|
||||
|
||||
c.beqz a0, NEAR
|
||||
#INSTR-NEXT: c.beqz a0, 0x91e
|
||||
#INSTR-NEXT: c.beqz a0, 0x92e
|
||||
#RELAX-INSTR-NEXT: c.beqz a0, 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_BRANCH
|
||||
c.beqz a0, NEAR_NEGATIVE
|
||||
@ -51,7 +52,7 @@ start:
|
||||
#RELAX-INSTR-NEXT: c.beqz a0, 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_BRANCH
|
||||
c.beqz a0, FAR_BRANCH
|
||||
#INSTR-NEXT: beq a0, zero, 0xa20
|
||||
#INSTR-NEXT: beq a0, zero, 0xa30
|
||||
#RELAX-INSTR-NEXT: beq a0, zero, 0
|
||||
#RELAX-RELOC: R_RISCV_BRANCH
|
||||
c.beqz a0, FAR_BRANCH_NEGATIVE
|
||||
@ -59,7 +60,7 @@ start:
|
||||
#RELAX-INSTR-NEXT: beq a0, zero, 0
|
||||
#RELAX-RELOC: R_RISCV_BRANCH
|
||||
c.beqz a0, FAR_JUMP
|
||||
#INSTR-NEXT: beq a0, zero, 0x11f2
|
||||
#INSTR-NEXT: beq a0, zero, 0x1202
|
||||
#RELAX-INSTR-NEXT: beq a0, zero, 0
|
||||
#RELAX-RELOC: R_RISCV_BRANCH
|
||||
c.beqz a0, FAR_JUMP_NEGATIVE
|
||||
@ -68,7 +69,7 @@ start:
|
||||
#RELAX-RELOC: R_RISCV_BRANCH
|
||||
|
||||
c.j NEAR
|
||||
#INSTR-NEXT: c.j 0x91e
|
||||
#INSTR-NEXT: c.j 0x92e
|
||||
#RELAX-INSTR-NEXT: c.j 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_JUMP
|
||||
c.j NEAR_NEGATIVE
|
||||
@ -76,7 +77,7 @@ start:
|
||||
#RELAX-INSTR-NEXT: c.j 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_JUMP
|
||||
c.j FAR_BRANCH
|
||||
#INSTR-NEXT: c.j 0xa20
|
||||
#INSTR-NEXT: c.j 0xa30
|
||||
#RELAX-INSTR-NEXT: c.j 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_JUMP
|
||||
c.j FAR_BRANCH_NEGATIVE
|
||||
@ -84,7 +85,7 @@ start:
|
||||
#RELAX-INSTR-NEXT: c.j 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_JUMP
|
||||
c.j FAR_JUMP
|
||||
#INSTR-NEXT: jal zero, 0x11f2
|
||||
#INSTR-NEXT: jal zero, 0x1202
|
||||
#RELAX-INSTR-NEXT: jal zero, 0
|
||||
#RELAX-RELOC: R_RISCV_JAL
|
||||
c.j FAR_JUMP_NEGATIVE
|
||||
@ -93,7 +94,7 @@ start:
|
||||
#RELAX-RELOC: R_RISCV_JAL
|
||||
|
||||
c.jal NEAR
|
||||
#INSTR: c.jal 0x91e
|
||||
#INSTR: c.jal 0x92e
|
||||
#RELAX-INSTR: c.jal 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_JUMP
|
||||
c.jal NEAR_NEGATIVE
|
||||
@ -101,7 +102,7 @@ start:
|
||||
#RELAX-INSTR: c.jal 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_JUMP
|
||||
c.jal FAR_BRANCH
|
||||
#INSTR-NEXT: c.jal 0xa20
|
||||
#INSTR-NEXT: c.jal 0xa30
|
||||
#RELAX-INSTR-NEXT: c.jal 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_JUMP
|
||||
c.jal FAR_BRANCH_NEGATIVE
|
||||
@ -109,7 +110,7 @@ start:
|
||||
#RELAX-INSTR-NEXT: c.jal 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_JUMP
|
||||
c.jal FAR_JUMP
|
||||
#INSTR-NEXT: jal ra, 0x11f2
|
||||
#INSTR-NEXT: jal ra, 0x1202
|
||||
#RELAX-INSTR-NEXT: jal ra, 0
|
||||
#RELAX-RELOC: R_RISCV_JAL
|
||||
c.jal FAR_JUMP_NEGATIVE
|
||||
@ -117,6 +118,7 @@ start:
|
||||
#RELAX-INSTR-NEXT: jal ra, 0
|
||||
#RELAX-RELOC: R_RISCV_JAL
|
||||
|
||||
call relax
|
||||
NEAR:
|
||||
c.nop
|
||||
.space 256
|
||||
|
@ -16,9 +16,11 @@ FAR_BRANCH_NEGATIVE:
|
||||
NEAR_NEGATIVE:
|
||||
c.nop
|
||||
|
||||
call relax
|
||||
|
||||
start:
|
||||
c.bnez a0, NEAR
|
||||
#INSTR: c.bnez a0, 0x90e
|
||||
#INSTR: c.bnez a0, 0x92e
|
||||
#RELAX-INSTR: c.bnez a0, 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_BRANCH
|
||||
c.bnez a0, NEAR_NEGATIVE
|
||||
@ -26,7 +28,7 @@ start:
|
||||
#RELAX-INSTR: c.bnez a0, 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_BRANCH
|
||||
c.bnez a0, FAR_BRANCH
|
||||
#INSTR-NEXT: bne a0, zero, 0xa10
|
||||
#INSTR-NEXT: bne a0, zero, 0xa30
|
||||
#RELAX-INSTR-NEXT: bne a0, zero, 0
|
||||
#RELAX-RELOC: R_RISCV_BRANCH
|
||||
c.bnez a0, FAR_BRANCH_NEGATIVE
|
||||
@ -34,7 +36,7 @@ start:
|
||||
#RELAX-INSTR-NEXT: bne a0, zero, 0
|
||||
#RELAX-RELOC: R_RISCV_BRANCH
|
||||
c.bnez a0, FAR_JUMP
|
||||
#INSTR-NEXT: bne a0, zero, 0x11e2
|
||||
#INSTR-NEXT: bne a0, zero, 0x1202
|
||||
#RELAX-INSTR-NEXT: bne a0, zero, 0
|
||||
#RELAX-RELOC: R_RISCV_BRANCH
|
||||
c.bnez a0, FAR_JUMP_NEGATIVE
|
||||
@ -43,7 +45,7 @@ start:
|
||||
#RELAX-RELOC: R_RISCV_BRANCH
|
||||
|
||||
c.beqz a0, NEAR
|
||||
#INSTR-NEXT: c.beqz a0, 0x90e
|
||||
#INSTR-NEXT: c.beqz a0, 0x92e
|
||||
#RELAX-INSTR-NEXT: c.beqz a0, 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_BRANCH
|
||||
c.beqz a0, NEAR_NEGATIVE
|
||||
@ -51,7 +53,7 @@ start:
|
||||
#RELAX-INSTR-NEXT: c.beqz a0, 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_BRANCH
|
||||
c.beqz a0, FAR_BRANCH
|
||||
#INSTR-NEXT: beq a0, zero, 0xa10
|
||||
#INSTR-NEXT: beq a0, zero, 0xa30
|
||||
#RELAX-INSTR-NEXT: beq a0, zero, 0
|
||||
#RELAX-RELOC: R_RISCV_BRANCH
|
||||
c.beqz a0, FAR_BRANCH_NEGATIVE
|
||||
@ -59,7 +61,7 @@ start:
|
||||
#RELAX-INSTR-NEXT: beq a0, zero, 0
|
||||
#RELAX-RELOC: R_RISCV_BRANCH
|
||||
c.beqz a0, FAR_JUMP
|
||||
#INSTR-NEXT: beq a0, zero, 0x11e2
|
||||
#INSTR-NEXT: beq a0, zero, 0x1202
|
||||
#RELAX-INSTR-NEXT: beq a0, zero, 0
|
||||
#RELAX-RELOC: R_RISCV_BRANCH
|
||||
c.beqz a0, FAR_JUMP_NEGATIVE
|
||||
@ -68,7 +70,7 @@ start:
|
||||
#RELAX-RELOC: R_RISCV_BRANCH
|
||||
|
||||
c.j NEAR
|
||||
#INSTR-NEXT: c.j 0x90e
|
||||
#INSTR-NEXT: c.j 0x92e
|
||||
#RELAX-INSTR-NEXT: c.j 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_JUMP
|
||||
c.j NEAR_NEGATIVE
|
||||
@ -76,7 +78,7 @@ start:
|
||||
#RELAX-INSTR-NEXT: c.j 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_JUMP
|
||||
c.j FAR_BRANCH
|
||||
#INSTR-NEXT: c.j 0xa10
|
||||
#INSTR-NEXT: c.j 0xa30
|
||||
#RELAX-INSTR-NEXT: c.j 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_JUMP
|
||||
c.j FAR_BRANCH_NEGATIVE
|
||||
@ -84,7 +86,7 @@ start:
|
||||
#RELAX-INSTR-NEXT: c.j 0
|
||||
#RELAX-RELOC: R_RISCV_RVC_JUMP
|
||||
c.j FAR_JUMP
|
||||
#INSTR-NEXT: jal zero, 0x11e2
|
||||
#INSTR-NEXT: jal zero, 0x1202
|
||||
#RELAX-INSTR-NEXT: jal zero, 0
|
||||
#RELAX-RELOC: R_RISCV_JAL
|
||||
c.j FAR_JUMP_NEGATIVE
|
||||
@ -92,6 +94,8 @@ start:
|
||||
#RELAX-INSTR-NEXT: jal zero, 0
|
||||
#RELAX-RELOC: R_RISCV_JAL
|
||||
|
||||
.space 16
|
||||
call relax
|
||||
NEAR:
|
||||
c.nop
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user