Skip to content

Commit 53edb1a

Browse files
committed
[test] Improve linker-relaxable fixups tests
The behavior will change once the assembler improves (#140692)
1 parent 8b2c013 commit 53edb1a

File tree

5 files changed

+55
-30
lines changed

5 files changed

+55
-30
lines changed

llvm/test/CodeGen/RISCV/option-relax-relocation.ll

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
;; after linker relaxation. See https://github.com/ClangBuiltLinux/linux/issues/1965
33

44
; RUN: llc -mtriple=riscv64 -mattr=-relax -filetype=obj < %s \
5-
; RUN: | llvm-objdump -d -r - | FileCheck %s
5+
; RUN: | llvm-objdump -d -r - | FileCheck %s --check-prefixes=CHECK,NORELAX
66
; RUN: llc -mtriple=riscv64 -mattr=+relax -filetype=obj < %s \
77
; RUN: | llvm-objdump -d -r - | FileCheck %s --check-prefixes=CHECK,RELAX
88

@@ -12,14 +12,22 @@
1212
; CHECK-NEXT: R_RISCV_CALL_PLT f
1313
; RELAX-NEXT: R_RISCV_RELAX *ABS*
1414
; CHECK-NEXT: jalr ra
15+
; CHECK-NEXT: j {{.*}}
16+
; RELAX-NEXT: R_RISCV_JAL .LBB0_{{.*}}
17+
; CHECK-NEXT: j {{.*}}
18+
; RELAX-NEXT: R_RISCV_JAL .L0
19+
; NORELAX-NEXT: li a0, 0x0
20+
; RELAX-EMPTY:
1521

1622
define dso_local noundef signext i32 @main() local_unnamed_addr #0 {
1723
entry:
18-
callbr void asm sideeffect ".option push\0A.option norvc\0A.option norelax\0Aj $0\0A.option pop\0A", "!i"() #2
24+
callbr void asm sideeffect ".option push\0A.option norelax\0Aj $0\0A.option pop\0A", "!i"()
1925
to label %asm.fallthrough [label %label]
2026

2127
asm.fallthrough: ; preds = %entry
2228
tail call void @f()
29+
callbr void asm sideeffect ".option push\0A.option norelax\0Aj $0\0A.option pop\0A", "!i"()
30+
to label %asm.fallthrough [label %label]
2331
br label %label
2432

2533
label: ; preds = %asm.fallthrough, %entry
Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+c < %s \
2-
# RUN: | llvm-objdump -M no-aliases -d - \
2+
# RUN: | llvm-objdump -M no-aliases -dr - \
33
# RUN: | FileCheck -check-prefix=CHECK-INSTR %s
44
# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+c,+relax < %s \
55
# RUN: | llvm-readobj -r - | FileCheck -check-prefix=CHECK-RELOC %s
@@ -8,18 +8,28 @@
88

99
.LBB1:
1010

11+
## This is linker-relaxable to avoid resolving the following fixups
12+
call relax
13+
1114
jal zero, .LBB0+16
1215
# CHECK-INSTR: jal zero, 0x10
1316
# CHECK-RELOC: R_RISCV_JAL
1417

1518
beq a0, a1, .LBB1+32
1619
# CHECK-INSTR: beq a0, a1, 0x20
17-
# CHECK-RELOC: R_RISCV_BRANCH
20+
# CHECK-RELOC-NEXT: R_RISCV_BRANCH
1821

1922
c.j .+32
20-
# CHECK-INSTR: c.j 0x28
21-
# CHECK-RELOC: R_RISCV_RVC_JUMP
23+
# CHECK-INSTR: c.j 0x30
24+
# CHECK-RELOC-NEXT: R_RISCV_RVC_JUMP
25+
26+
c.j .LBB2+4
27+
# CHECK-INSTR: c.j 0x22
28+
# CHECK-RELOC-NEXT: R_RISCV_RVC_JUMP
2229

2330
c.beqz a0, .-2
24-
# CHECK-INSTR: c.beqz a0, 0x8
25-
# CHECK-RELOC: R_RISCV_RVC_BRANCH
31+
# CHECK-INSTR: c.beqz a0, 0x12
32+
# CHECK-RELOC-NEXT: R_RISCV_RVC_BRANCH
33+
34+
call relax
35+
.LBB2:

llvm/test/MC/RISCV/long-conditional-jump.s

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ test:
2525
# CHECK-INST-C-RELAX-NEXT: jal zero, {{.*}}
2626
# CHECK-INST-C-RELAX-NEXT: R_RISCV_JAL .L1
2727
bne a0, a1, .L1
28-
.fill 1300, 4, 0
28+
call relax
29+
.fill 1300-2, 4, 0
2930
.L1:
3031
ret
3132
# CHECK-INST: bne a0, a1, 0x1464

llvm/test/MC/RISCV/rv32-relaxation.s

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,27 @@ FAR_BRANCH_NEGATIVE:
1515

1616
NEAR_NEGATIVE:
1717
c.nop
18+
call relax
1819

1920
start:
2021
c.bnez a0, NEAR
21-
#INSTR: c.bnez a0, 0x91e
22+
#INSTR: c.bnez a0, 0x92e
2223
#RELAX-INSTR: c.bnez a0, 0
2324
#RELAX-RELOC: R_RISCV_RVC_BRANCH
2425
c.bnez a0, NEAR_NEGATIVE
2526
#INSTR: c.bnez a0, 0x8d4
2627
#RELAX-INSTR: c.bnez a0, 0
2728
#RELAX-RELOC: R_RISCV_RVC_BRANCH
2829
c.bnez a0, FAR_BRANCH
29-
#INSTR-NEXT: bne a0, zero, 0xa20
30+
#INSTR-NEXT: bne a0, zero, 0xa30
3031
#RELAX-INSTR-NEXT: bne a0, zero, 0
3132
#RELAX-RELOC: R_RISCV_BRANCH
3233
c.bnez a0, FAR_BRANCH_NEGATIVE
3334
#INSTR-NEXT: bne a0, zero, 0x7d2
3435
#RELAX-INSTR-NEXT: bne a0, zero, 0
3536
#RELAX-RELOC: R_RISCV_BRANCH
3637
c.bnez a0, FAR_JUMP
37-
#INSTR-NEXT: bne a0, zero, 0x11f2
38+
#INSTR-NEXT: bne a0, zero, 0x1202
3839
#RELAX-INSTR-NEXT: bne a0, zero, 0
3940
#RELAX-RELOC: R_RISCV_BRANCH
4041
c.bnez a0, FAR_JUMP_NEGATIVE
@@ -43,23 +44,23 @@ start:
4344
#RELAX-RELOC: R_RISCV_BRANCH
4445

4546
c.beqz a0, NEAR
46-
#INSTR-NEXT: c.beqz a0, 0x91e
47+
#INSTR-NEXT: c.beqz a0, 0x92e
4748
#RELAX-INSTR-NEXT: c.beqz a0, 0
4849
#RELAX-RELOC: R_RISCV_RVC_BRANCH
4950
c.beqz a0, NEAR_NEGATIVE
5051
#INSTR-NEXT: c.beqz a0, 0x8d4
5152
#RELAX-INSTR-NEXT: c.beqz a0, 0
5253
#RELAX-RELOC: R_RISCV_RVC_BRANCH
5354
c.beqz a0, FAR_BRANCH
54-
#INSTR-NEXT: beq a0, zero, 0xa20
55+
#INSTR-NEXT: beq a0, zero, 0xa30
5556
#RELAX-INSTR-NEXT: beq a0, zero, 0
5657
#RELAX-RELOC: R_RISCV_BRANCH
5758
c.beqz a0, FAR_BRANCH_NEGATIVE
5859
#INSTR-NEXT: beq a0, zero, 0x7d2
5960
#RELAX-INSTR-NEXT: beq a0, zero, 0
6061
#RELAX-RELOC: R_RISCV_BRANCH
6162
c.beqz a0, FAR_JUMP
62-
#INSTR-NEXT: beq a0, zero, 0x11f2
63+
#INSTR-NEXT: beq a0, zero, 0x1202
6364
#RELAX-INSTR-NEXT: beq a0, zero, 0
6465
#RELAX-RELOC: R_RISCV_BRANCH
6566
c.beqz a0, FAR_JUMP_NEGATIVE
@@ -68,23 +69,23 @@ start:
6869
#RELAX-RELOC: R_RISCV_BRANCH
6970

7071
c.j NEAR
71-
#INSTR-NEXT: c.j 0x91e
72+
#INSTR-NEXT: c.j 0x92e
7273
#RELAX-INSTR-NEXT: c.j 0
7374
#RELAX-RELOC: R_RISCV_RVC_JUMP
7475
c.j NEAR_NEGATIVE
7576
#INSTR-NEXT: c.j 0x8d4
7677
#RELAX-INSTR-NEXT: c.j 0
7778
#RELAX-RELOC: R_RISCV_RVC_JUMP
7879
c.j FAR_BRANCH
79-
#INSTR-NEXT: c.j 0xa20
80+
#INSTR-NEXT: c.j 0xa30
8081
#RELAX-INSTR-NEXT: c.j 0
8182
#RELAX-RELOC: R_RISCV_RVC_JUMP
8283
c.j FAR_BRANCH_NEGATIVE
8384
#INSTR-NEXT: c.j 0x7d2
8485
#RELAX-INSTR-NEXT: c.j 0
8586
#RELAX-RELOC: R_RISCV_RVC_JUMP
8687
c.j FAR_JUMP
87-
#INSTR-NEXT: jal zero, 0x11f2
88+
#INSTR-NEXT: jal zero, 0x1202
8889
#RELAX-INSTR-NEXT: jal zero, 0
8990
#RELAX-RELOC: R_RISCV_JAL
9091
c.j FAR_JUMP_NEGATIVE
@@ -93,30 +94,31 @@ start:
9394
#RELAX-RELOC: R_RISCV_JAL
9495

9596
c.jal NEAR
96-
#INSTR: c.jal 0x91e
97+
#INSTR: c.jal 0x92e
9798
#RELAX-INSTR: c.jal 0
9899
#RELAX-RELOC: R_RISCV_RVC_JUMP
99100
c.jal NEAR_NEGATIVE
100101
#INSTR: c.jal 0x8d4
101102
#RELAX-INSTR: c.jal 0
102103
#RELAX-RELOC: R_RISCV_RVC_JUMP
103104
c.jal FAR_BRANCH
104-
#INSTR-NEXT: c.jal 0xa20
105+
#INSTR-NEXT: c.jal 0xa30
105106
#RELAX-INSTR-NEXT: c.jal 0
106107
#RELAX-RELOC: R_RISCV_RVC_JUMP
107108
c.jal FAR_BRANCH_NEGATIVE
108109
#INSTR-NEXT: c.jal 0x7d2
109110
#RELAX-INSTR-NEXT: c.jal 0
110111
#RELAX-RELOC: R_RISCV_RVC_JUMP
111112
c.jal FAR_JUMP
112-
#INSTR-NEXT: jal ra, 0x11f2
113+
#INSTR-NEXT: jal ra, 0x1202
113114
#RELAX-INSTR-NEXT: jal ra, 0
114115
#RELAX-RELOC: R_RISCV_JAL
115116
c.jal FAR_JUMP_NEGATIVE
116117
#INSTR-NEXT: jal ra, 0x0
117118
#RELAX-INSTR-NEXT: jal ra, 0
118119
#RELAX-RELOC: R_RISCV_JAL
119120

121+
call relax
120122
NEAR:
121123
c.nop
122124
.space 256

llvm/test/MC/RISCV/rv64-relaxation.s

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,27 @@ FAR_BRANCH_NEGATIVE:
1616
NEAR_NEGATIVE:
1717
c.nop
1818

19+
call relax
20+
1921
start:
2022
c.bnez a0, NEAR
21-
#INSTR: c.bnez a0, 0x90e
23+
#INSTR: c.bnez a0, 0x92e
2224
#RELAX-INSTR: c.bnez a0, 0
2325
#RELAX-RELOC: R_RISCV_RVC_BRANCH
2426
c.bnez a0, NEAR_NEGATIVE
2527
#INSTR: c.bnez a0, 0x8d4
2628
#RELAX-INSTR: c.bnez a0, 0
2729
#RELAX-RELOC: R_RISCV_RVC_BRANCH
2830
c.bnez a0, FAR_BRANCH
29-
#INSTR-NEXT: bne a0, zero, 0xa10
31+
#INSTR-NEXT: bne a0, zero, 0xa30
3032
#RELAX-INSTR-NEXT: bne a0, zero, 0
3133
#RELAX-RELOC: R_RISCV_BRANCH
3234
c.bnez a0, FAR_BRANCH_NEGATIVE
3335
#INSTR-NEXT: bne a0, zero, 0x7d2
3436
#RELAX-INSTR-NEXT: bne a0, zero, 0
3537
#RELAX-RELOC: R_RISCV_BRANCH
3638
c.bnez a0, FAR_JUMP
37-
#INSTR-NEXT: bne a0, zero, 0x11e2
39+
#INSTR-NEXT: bne a0, zero, 0x1202
3840
#RELAX-INSTR-NEXT: bne a0, zero, 0
3941
#RELAX-RELOC: R_RISCV_BRANCH
4042
c.bnez a0, FAR_JUMP_NEGATIVE
@@ -43,23 +45,23 @@ start:
4345
#RELAX-RELOC: R_RISCV_BRANCH
4446

4547
c.beqz a0, NEAR
46-
#INSTR-NEXT: c.beqz a0, 0x90e
48+
#INSTR-NEXT: c.beqz a0, 0x92e
4749
#RELAX-INSTR-NEXT: c.beqz a0, 0
4850
#RELAX-RELOC: R_RISCV_RVC_BRANCH
4951
c.beqz a0, NEAR_NEGATIVE
5052
#INSTR-NEXT: c.beqz a0, 0x8d4
5153
#RELAX-INSTR-NEXT: c.beqz a0, 0
5254
#RELAX-RELOC: R_RISCV_RVC_BRANCH
5355
c.beqz a0, FAR_BRANCH
54-
#INSTR-NEXT: beq a0, zero, 0xa10
56+
#INSTR-NEXT: beq a0, zero, 0xa30
5557
#RELAX-INSTR-NEXT: beq a0, zero, 0
5658
#RELAX-RELOC: R_RISCV_BRANCH
5759
c.beqz a0, FAR_BRANCH_NEGATIVE
5860
#INSTR-NEXT: beq a0, zero, 0x7d2
5961
#RELAX-INSTR-NEXT: beq a0, zero, 0
6062
#RELAX-RELOC: R_RISCV_BRANCH
6163
c.beqz a0, FAR_JUMP
62-
#INSTR-NEXT: beq a0, zero, 0x11e2
64+
#INSTR-NEXT: beq a0, zero, 0x1202
6365
#RELAX-INSTR-NEXT: beq a0, zero, 0
6466
#RELAX-RELOC: R_RISCV_BRANCH
6567
c.beqz a0, FAR_JUMP_NEGATIVE
@@ -68,30 +70,32 @@ start:
6870
#RELAX-RELOC: R_RISCV_BRANCH
6971

7072
c.j NEAR
71-
#INSTR-NEXT: c.j 0x90e
73+
#INSTR-NEXT: c.j 0x92e
7274
#RELAX-INSTR-NEXT: c.j 0
7375
#RELAX-RELOC: R_RISCV_RVC_JUMP
7476
c.j NEAR_NEGATIVE
7577
#INSTR-NEXT: c.j 0x8d4
7678
#RELAX-INSTR-NEXT: c.j 0
7779
#RELAX-RELOC: R_RISCV_RVC_JUMP
7880
c.j FAR_BRANCH
79-
#INSTR-NEXT: c.j 0xa10
81+
#INSTR-NEXT: c.j 0xa30
8082
#RELAX-INSTR-NEXT: c.j 0
8183
#RELAX-RELOC: R_RISCV_RVC_JUMP
8284
c.j FAR_BRANCH_NEGATIVE
8385
#INSTR-NEXT: c.j 0x7d2
8486
#RELAX-INSTR-NEXT: c.j 0
8587
#RELAX-RELOC: R_RISCV_RVC_JUMP
8688
c.j FAR_JUMP
87-
#INSTR-NEXT: jal zero, 0x11e2
89+
#INSTR-NEXT: jal zero, 0x1202
8890
#RELAX-INSTR-NEXT: jal zero, 0
8991
#RELAX-RELOC: R_RISCV_JAL
9092
c.j FAR_JUMP_NEGATIVE
9193
#INSTR-NEXT: jal zero, 0x0
9294
#RELAX-INSTR-NEXT: jal zero, 0
9395
#RELAX-RELOC: R_RISCV_JAL
9496

97+
.space 16
98+
call relax
9599
NEAR:
96100
c.nop
97101

0 commit comments

Comments
 (0)