blob: 9140ff5585f257457ffd6026afdbac925c799720 [file] [log] [blame]
// <rdar://problem/15358345> Check that we always use PIC relocations on all
// platforms.
// RUN: %target-swift-frontend %s -module-name main -S -o - | FileCheck -check-prefix=%target-cpu %s
// XFAIL: linux
var global: Int = 0
public func use_global() -> Int {
return global
}
// x86_64-LABEL: __TF4main10use_globalFT_Si:
// x86_64: movq __Tv4main6globalSi(%rip), %rax
// i386-LABEL: __TF4main10use_globalFT_Si:
// i386: [[PIC_BLOCK:^L.*\$pb]]:{{$}}
// i386: popl [[PIC_REG:%[a-z]+]]
// i386: movl __Tv4main6globalSi-[[PIC_BLOCK]]([[PIC_REG]]), {{%[a-z]+}}
// armv7-LABEL: __TF4main10use_globalFT_Si:
// armv7: movw r0, :lower16:(__Tv4main6globalSi-([[PIC_0:L.*]]+8))
// armv7: movt r0, :upper16:(__Tv4main6globalSi-([[PIC_0]]+8))
// armv7: [[PIC_0]]:{{$}}
// armv7: add r0, pc, r0
// armv7: ldr r0, [r0]
// armv7s-LABEL: __TF4main10use_globalFT_Si:
// armv7s: movw r0, :lower16:(__Tv4main6globalSi-([[PIC_0:L.*]]+8))
// armv7s: movt r0, :upper16:(__Tv4main6globalSi-([[PIC_0]]+8))
// armv7s: [[PIC_0]]:{{$}}
// armv7s: add r0, pc, r0
// armv7s: ldr r0, [r0]
// armv7k-LABEL: __TF4main10use_globalFT_Si:
// armv7k: movw r0, :lower16:(__Tv4main6globalSi-([[PIC_0:L.*]]+8))
// armv7k: movt r0, :upper16:(__Tv4main6globalSi-([[PIC_0]]+8))
// armv7k: [[PIC_0]]:{{$}}
// armv7k: add r0, pc, r0
// armv7k: ldr r0, [r0]
// arm64-LABEL: __TF4main10use_globalFT_Si:
// arm64: adrp [[REG1:x[0-9]+]], __Tv4main6globalSi@PAGE
// arm64: add [[REG2:x[0-9]+]], [[REG1]], __Tv4main6globalSi@PAGEOFF
// arm64: ldr {{x[0-9]+}}, {{\[}}[[REG2]]{{\]}}