blob: fb18b462da51fe959a3c6e028ee79c4b0dbe596e [file] [log] [blame]
Duncan P. N. Exon Smitha12e0232014-07-30 17:11:27 +00001; RUN: verify-uselistorder < %s -preserve-bc-use-list-order -num-shuffles=5
Duncan P. N. Exon Smith6b6fdc92014-07-25 14:49:26 +00002
3@a = global [4 x i1] [i1 0, i1 1, i1 0, i1 1]
4@b = alias i1* getelementptr ([4 x i1]* @a, i64 0, i64 2)
5
Duncan P. N. Exon Smith3cbca202014-07-30 01:22:16 +00006; Check use-list order of constants used by globals.
7@glob1 = global i5 7
8@glob2 = global i5 7
9@glob3 = global i5 7
10
11; Check use-list order between variables and aliases.
12@target = global i3 zeroinitializer
13@alias1 = alias i3* @target
14@alias2 = alias i3* @target
15@alias3 = alias i3* @target
16@var1 = global i3* @target
17@var2 = global i3* @target
18@var3 = global i3* @target
19
Duncan P. N. Exon Smithc69b5162014-07-30 17:51:09 +000020; Check use-list order for a global when used both by a global and in a
21; function.
22@globalAndFunction = global i4 4
23@globalAndFunctionGlobalUser = global i4* @globalAndFunction
24
Duncan P. N. Exon Smith6b6fdc92014-07-25 14:49:26 +000025define i64 @f(i64 %f) {
26entry:
27 %sum = add i64 %f, 0
28 ret i64 %sum
29}
30
31define i64 @g(i64 %g) {
32entry:
33 %sum = add i64 %g, 0
34 ret i64 %sum
35}
36
37define i64 @h(i64 %h) {
38entry:
39 %sum = add i64 %h, 0
40 ret i64 %sum
41}
42
43define i64 @i(i64 %i) {
44entry:
45 %sum = add i64 %i, 1
46 ret i64 %sum
47}
48
49define i64 @j(i64 %j) {
50entry:
51 %sum = add i64 %j, 1
52 ret i64 %sum
53}
54
55define i64 @k(i64 %k) {
56entry:
57 %sum = add i64 %k, 1
58 ret i64 %sum
59}
60
61define i64 @l(i64 %l) {
62entry:
63 %sum = add i64 %l, 1
64 ret i64 %sum
65}
66
67define i1 @loadb() {
68entry:
69 %b = load i1* @b
70 ret i1 %b
71}
72
73define i1 @loada() {
74entry:
75 %a = load i1* getelementptr ([4 x i1]* @a, i64 0, i64 2)
76 ret i1 %a
77}
78
79define i32 @f32(i32 %a, i32 %b, i32 %c, i32 %d) {
80entry:
81 br label %first
82
83second:
84 %eh = mul i32 %e, %h
85 %sum = add i32 %eh, %ef
86 br label %exit
87
88exit:
89 %product = phi i32 [%ef, %first], [%sum, %second]
90 ret i32 %product
91
92first:
93 %e = add i32 %a, 7
94 %f = add i32 %b, 7
95 %g = add i32 %c, 8
96 %h = add i32 %d, 8
97 %ef = mul i32 %e, %f
98 %gh = mul i32 %g, %h
99 %gotosecond = icmp slt i32 %gh, -9
100 br i1 %gotosecond, label %second, label %exit
101}
Duncan P. N. Exon Smithc69b5162014-07-30 17:51:09 +0000102
103define i4 @globalAndFunctionFunctionUser() {
104entry:
105 %local = load i4* @globalAndFunction
106 ret i4 %local
107}