// REQUIRES: arm
// RUN: llvm-mc -filetype=obj -triple=thumbv7-windows %s -o %t.obj
// RUN: lld-link -entry:main -subsystem:console %t.obj -out:%t.exe -verbose 2>&1 | FileCheck -check-prefix=VERBOSE %s
// RUN: llvm-objdump -d %t.exe --start-address=0x401000 --stop-address=0x401022 | FileCheck --check-prefix=MAIN %s
// RUN: llvm-objdump -d %t.exe --start-address=0x501022 --stop-address=0x501032 | FileCheck --check-prefix=FUNC1 %s
// RUN: llvm-objdump -d %t.exe --start-address=0x601032 | FileCheck --check-prefix=FUNC2 %s

// VERBOSE: Added 3 thunks with margin {{.*}} in 1 passes

    .syntax unified
    .globl main
    .globl func1
    .text
main:
    bne func1
    bne func2
    // This should reuse the same thunk as func1 above
    bne func1_alias
    bx lr
    .section .text$a, "xr"
    .space 0x100000
    .section .text$b, "xr"
func1:
func1_alias:
    // This shouldn't reuse the func2 thunk from above, since it is out
    // of range.
    bne func2
    bx lr
    .section .text$c, "xr"
    .space 0x100000
    .section .text$d, "xr"
func2:
// Test using string tail merging. This is irrelevant to the thunking itself,
// but running multiple passes of assignAddresses() calls finalizeAddresses()
// multiple times; check that MergeChunk handles this correctly.
    movw r0, :lower16:"??_C@string1"
    movt r0, :upper16:"??_C@string1"
    movw r1, :lower16:"??_C@string2"
    movt r1, :upper16:"??_C@string2"
    bx lr

    .section .rdata,"dr",discard,"??_C@string1"
    .globl "??_C@string1"
"??_C@string1":
    .asciz "foobar"
    .section .rdata,"dr",discard,"??_C@string2"
    .globl "??_C@string2"
"??_C@string2":
    .asciz "bar"

// MAIN:    401000:       40 f0 05 80     bne.w   0x40100e <.text+0xe>
// MAIN:    401004:       40 f0 08 80     bne.w   0x401018 <.text+0x18>
// MAIN:    401008:       40 f0 01 80     bne.w   0x40100e <.text+0xe>
// MAIN:    40100c:       70 47           bx      lr
// func1 thunk
// MAIN:    40100e:       40 f2 08 0c     movw    r12, #8
// MAIN:    401012:       c0 f2 10 0c     movt    r12, #16
// MAIN:    401016:       e7 44           add     pc,  r12
// func2 thunk
// MAIN:    401018:       40 f2 0e 0c     movw    r12, #14
// MAIN:    40101c:       c0 f2 20 0c     movt    r12, #32
// MAIN:    401020:       e7 44           add     pc,  r12

// FUNC1:   501022:       40 f0 01 80     bne.w   0x501028 <.text+0x100028>
// FUNC1:   501026:       70 47           bx      lr
// func2 thunk
// FUNC1:   501028:       4f f6 fe 7c     movw    r12, #65534
// FUNC1:   50102c:       c0 f2 0f 0c     movt    r12, #15
// FUNC1:   501030:       e7 44           add     pc,  r12

// FUNC2:   601032:       42 f2 00 00     movw    r0, #8192
// FUNC2:   601036:       c0 f2 60 00     movt    r0, #96
// FUNC2:   60103a:       42 f2 03 01     movw    r1, #8195
// FUNC2:   60103e:       c0 f2 60 01     movt    r1, #96
// FUNC2:   601042:       70 47   bx      lr
