2 // RUN
: llvm-mc
-filetype
=obj
-triple
=thumbv7-windows
%s
-o
%t.obj
3 // RUN
: lld-link
-entry
:main
-subsystem
:console
%t.obj
-out
:%t.exe
-map
-verbose
2>&1 | FileCheck
-check-prefix
=VERBOSE
%s
4 // RUN
: llvm-objdump
--no-print-imm-hex
-d
%t.exe
--start-address
=0x401000 --stop-address
=0x401022 | FileCheck
--check-prefix
=MAIN
%s
5 // RUN
: llvm-objdump
--no-print-imm-hex
-d
%t.exe
--start-address
=0x501022 --stop-address
=0x501032 | FileCheck
--check-prefix
=FUNC1
%s
6 // RUN
: llvm-objdump
--no-print-imm-hex
-d
%t.exe
--start-address
=0x601032 | FileCheck
--check-prefix
=FUNC2
%s
8 // VERBOSE
: Added
3 thunks with margin
{{.*}} in 1 passes
17 // This should reuse the same thunk as func1 above
20 .section .text$a, "xr"
22 .section .text$b, "xr"
25 // This shouldn
't reuse the func2 thunk from above, since it is out
29 .section .text$c, "xr"
31 .section .text$d, "xr"
33 // Test using string tail merging. This is irrelevant to the thunking itself,
34 // but running multiple passes of assignAddresses() calls finalizeAddresses()
35 // multiple times; check that MergeChunk handles this correctly.
36 movw r0, :lower16:"??_C@string1"
37 movt r0, :upper16:"??_C@string1"
38 movw r1, :lower16:"??_C@string2"
39 movt r1, :upper16:"??_C@string2"
42 .section .rdata,"dr",discard,"??_C@string1"
46 .section .rdata,"dr",discard,"??_C@string2"
51 // MAIN: 401000: f040 8005 bne.w 0x40100e <.text+0xe>
52 // MAIN: 401004: f040 8008 bne.w 0x401018 <.text+0x18>
53 // MAIN: 401008: f040 8001 bne.w 0x40100e <.text+0xe>
54 // MAIN: 40100c: 4770 bx lr
56 // MAIN: 40100e: f240 0c08 movw r12, #8
57 // MAIN: 401012: f2c0 0c10 movt r12, #16
58 // MAIN: 401016: 44e7 add pc, r12
60 // MAIN: 401018: f240 0c0e movw r12, #14
61 // MAIN: 40101c: f2c0 0c20 movt r12, #32
62 // MAIN: 401020: 44e7 add pc, r12
64 // FUNC1: 501022: f040 8001 bne.w 0x501028 <.text+0x100028>
65 // FUNC1: 501026: 4770 bx lr
67 // FUNC1: 501028: f64f 7cfe movw r12, #65534
68 // FUNC1: 50102c: f2c0 0c0f movt r12, #15
69 // FUNC1: 501030: 44e7 add pc, r12
71 // FUNC2: 601032: f242 0000 movw r0, #8192
72 // FUNC2: 601036: f2c0 0060 movt r0, #96
73 // FUNC2: 60103a: f242 0103 movw r1, #8195
74 // FUNC2: 60103e: f2c0 0160 movt r1, #96
75 // FUNC2: 601042: 4770 bx lr