blob: ccb14280df9bea85fe6b155be8841db742c5d42b [file] [log] [blame]
Chris Lattner7bf4bc52009-10-19 18:27:56 +00001; RUN: llc < %s -mtriple=arm-apple-darwin -relocation-model=static | FileCheck %s -check-prefix=DarwinStatic
2; RUN: llc < %s -mtriple=arm-apple-darwin -relocation-model=dynamic-no-pic | FileCheck %s -check-prefix=DarwinDynamic
3; RUN: llc < %s -mtriple=arm-apple-darwin -relocation-model=pic | FileCheck %s -check-prefix=DarwinPIC
4; RUN: llc < %s -mtriple=arm-linux-gnueabi -relocation-model=pic | FileCheck %s -check-prefix=LinuxPIC
Evan Cheng02b985c2007-01-19 09:20:23 +00005
Evan Cheng85350722007-05-04 00:29:34 +00006@G = external global i32
Evan Cheng02b985c2007-01-19 09:20:23 +00007
Evan Cheng85350722007-05-04 00:29:34 +00008define i32 @test1() {
9 %tmp = load i32* @G
10 ret i32 %tmp
Evan Cheng02b985c2007-01-19 09:20:23 +000011}
Chris Lattner7bf4bc52009-10-19 18:27:56 +000012
13; DarwinStatic: _test1:
Dan Gohman9f23dee2010-04-17 16:29:15 +000014; DarwinStatic: ldr r0, LCPI0_0
Chris Lattner7bf4bc52009-10-19 18:27:56 +000015; DarwinStatic: ldr r0, [r0]
16; DarwinStatic: bx lr
17
18; DarwinStatic: .align 2
Dan Gohman9f23dee2010-04-17 16:29:15 +000019; DarwinStatic: LCPI0_0:
Chris Lattner7bf4bc52009-10-19 18:27:56 +000020; DarwinStatic: .long {{_G$}}
21
22
23; DarwinDynamic: _test1:
Dan Gohman9f23dee2010-04-17 16:29:15 +000024; DarwinDynamic: ldr r0, LCPI0_0
Chris Lattner7bf4bc52009-10-19 18:27:56 +000025; DarwinDynamic: ldr r0, [r0]
26; DarwinDynamic: ldr r0, [r0]
27; DarwinDynamic: bx lr
28
29; DarwinDynamic: .align 2
Dan Gohman9f23dee2010-04-17 16:29:15 +000030; DarwinDynamic: LCPI0_0:
Chris Lattner7bf4bc52009-10-19 18:27:56 +000031; DarwinDynamic: .long L_G$non_lazy_ptr
32
33; DarwinDynamic: .section __DATA,__nl_symbol_ptr,non_lazy_symbol_pointers
34; DarwinDynamic: .align 2
35; DarwinDynamic: L_G$non_lazy_ptr:
36; DarwinDynamic: .indirect_symbol _G
37; DarwinDynamic: .long 0
38
39
40
41; DarwinPIC: _test1:
Dan Gohman9f23dee2010-04-17 16:29:15 +000042; DarwinPIC: ldr r0, LCPI0_0
43; DarwinPIC: LPC0_0:
Johnny Chen9e088762010-03-17 17:52:21 +000044; DarwinPIC: ldr r0, [pc, r0]
Chris Lattner7bf4bc52009-10-19 18:27:56 +000045; DarwinPIC: ldr r0, [r0]
46; DarwinPIC: bx lr
47
48; DarwinPIC: .align 2
Dan Gohman9f23dee2010-04-17 16:29:15 +000049; DarwinPIC: LCPI0_0:
50; DarwinPIC: .long L_G$non_lazy_ptr-(LPC0_0+8)
Chris Lattner7bf4bc52009-10-19 18:27:56 +000051
52; DarwinPIC: .section __DATA,__nl_symbol_ptr,non_lazy_symbol_pointers
53; DarwinPIC: .align 2
54; DarwinPIC: L_G$non_lazy_ptr:
55; DarwinPIC: .indirect_symbol _G
56; DarwinPIC: .long 0
57
58
59
60; LinuxPIC: test1:
Dan Gohman9f23dee2010-04-17 16:29:15 +000061; LinuxPIC: ldr r0, .LCPI0_0
62; LinuxPIC: ldr r1, .LCPI0_1
Chris Lattner7bf4bc52009-10-19 18:27:56 +000063
Dan Gohman9f23dee2010-04-17 16:29:15 +000064; LinuxPIC: .LPC0_0:
Chris Lattner7bf4bc52009-10-19 18:27:56 +000065; LinuxPIC: add r0, pc, r0
Johnny Chen9e088762010-03-17 17:52:21 +000066; LinuxPIC: ldr r0, [r1, r0]
Chris Lattner7bf4bc52009-10-19 18:27:56 +000067; LinuxPIC: ldr r0, [r0]
68; LinuxPIC: bx lr
69
Rafael Espindola2e2563b2010-01-26 20:21:43 +000070; LinuxPIC: .align 2
Dan Gohman9f23dee2010-04-17 16:29:15 +000071; LinuxPIC: .LCPI0_0:
72; LinuxPIC: .long _GLOBAL_OFFSET_TABLE_-(.LPC0_0+8)
Rafael Espindola2e2563b2010-01-26 20:21:43 +000073; LinuxPIC: .align 2
Dan Gohman9f23dee2010-04-17 16:29:15 +000074; LinuxPIC: .LCPI0_1:
Chris Lattner7bf4bc52009-10-19 18:27:56 +000075; LinuxPIC: .long G(GOT)