[ARM] Define subtarget feature "reserve-r9", which is used to decide
[oota-llvm.git] / test / CodeGen / ARM / aliases.ll
1 ; RUN: llc < %s -mtriple=arm-linux-gnueabi | FileCheck %s
2
3 ; CHECK: .globl test
4
5 ; CHECK: .globl structvar
6 ; CHECK: .size structvar, 8
7
8 ; CHECK: .globl foo1
9 ; CHECK: foo1 = bar
10 ; CHECK: .size foo1, 4
11
12 ; CHECK: .globl foo2
13 ; CHECK: foo2 = bar
14 ; CHECK: .size foo2, 4
15
16 ; CHECK: .weak  bar_f
17 ; CHECK: bar_f = foo_f
18
19 ; CHECK: bar_i = bar
20 ; CHECK: .size bar_i, 4
21
22 ; CHECK: .globl A
23 ; CHECK: A = bar
24 ; CHECK: .size A, 8
25
26 ; CHECK: .globl elem0
27 ; CHECK: elem0 = structvar
28 ; CHECK: .size elem0, 4
29
30 ; CHECK: .globl elem1
31 ; CHECK: elem1 = structvar+4
32 ; CHECK: .size elem1, 4
33
34 @bar = global i32 42
35 @foo1 = alias i32* @bar
36 @foo2 = alias i32* @bar
37
38 %FunTy = type i32()
39
40 define i32 @foo_f() {
41   ret i32 0
42 }
43 @bar_f = weak alias %FunTy* @foo_f
44
45 @bar_i = internal alias i32* @bar
46
47 @A = alias bitcast (i32* @bar to i64*)
48
49 @structvar = global {i32, i32} {i32 1, i32 2}
50 @elem0 = alias getelementptr({i32, i32}, {i32, i32}*  @structvar, i32 0, i32 0)
51 @elem1 = alias getelementptr({i32, i32}, {i32, i32}*  @structvar, i32 0, i32 1)
52
53 define i32 @test() {
54 entry:
55    %tmp = load i32, i32* @foo1
56    %tmp1 = load i32, i32* @foo2
57    %tmp0 = load i32, i32* @bar_i
58    %tmp2 = call i32 @foo_f()
59    %tmp3 = add i32 %tmp, %tmp2
60    %tmp4 = call i32 @bar_f()
61    %tmp5 = add i32 %tmp3, %tmp4
62    %tmp6 = add i32 %tmp1, %tmp5
63    %tmp7 = add i32 %tmp6, %tmp0
64    ret i32 %tmp7
65 }