Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / lld / test / ELF / arm-thumb-branch-rangethunk.s
blobd19a43c44ad6049b57a85b55603546c8f3d3abe1
1 // REQUIRES: arm
2 // RUN: llvm-mc -arm-add-build-attributes -filetype=obj -triple=thumbv7a-none-linux-gnueabi %s -o %t
3 // RUN: llvm-mc -arm-add-build-attributes -filetype=obj -triple=thumbv7a-none-linux-gnueabi %S/Inputs/far-arm-thumb-abs.s -o %tfar
4 // RUN: ld.lld %t %tfar -o %t2
5 // RUN: llvm-objdump -d %t2
6 .syntax unified
7 .thumb
8 .section .text, "ax",%progbits
9 .globl _start
10 .balign 0x10000
11 .type _start,%function
12 _start:
13 // address of too_far symbols are just out of range of ARM branch with
14 // 26-bit immediate field and an addend of -8
15 bl too_far1
16 b too_far2
17 beq.w too_far3
19 // CHECK: Disassembly of section .text:
20 // CHECK-EMPTY:
21 // CHECK-NEXT: _start:
22 // CHECK-NEXT: 20000: 00 f0 04 f8 bl #8
23 // CHECK-NEXT: 20004: 00 f0 07 b8 b.w #14 <__Thumbv7ABSLongThunk_too_far2>
24 // CHECK-NEXT: 20008: 00 f0 0a 80 beq.w #20 <__Thumbv7ABSLongThunk_too_far3>
25 // CHECK: __Thumbv7ABSLongThunk_too_far1:
26 // CHECK-NEXT: 2000c: 40 f2 05 0c movw r12, #5
27 // CHECK-NEXT: 20010: c0 f2 02 1c movt r12, #258
28 // CHECK-NEXT: 20014: 60 47 bx r12
29 // CHECK: __Thumbv7ABSLongThunk_too_far2:
30 // CHECK-NEXT: 20016: 40 f2 09 0c movw r12, #9
31 // CHECK-NEXT: 2001a: c0 f2 02 1c movt r12, #258
32 // CHECK-NEXT: 2001e: 60 47 bx r12
33 // CHECK: __Thumbv7ABSLongThunk_too_far3:
34 // CHECK-NEXT: 20020: 40 f2 0d 0c movw r12, #13
35 // CHECK-NEXT: 20024: c0 f2 12 0c movt r12, #18
36 // CHECK-NEXT: 20028: 60 47 bx r12
37 // CHECK-NEXT: 2002a: 00 00 movs r0, r0