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