~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to test/Transforms/GVN/2007-07-31-NoDomInherit.ll

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2015-07-15 17:51:08 UTC
  • Revision ID: package-import@ubuntu.com-20150715175108-l8mynwovkx4zx697
Tags: upstream-3.7~+rc2
ImportĀ upstreamĀ versionĀ 3.7~+rc2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; RUN: opt < %s -basicaa -gvn -S | grep "tmp47 = phi i32 "
 
2
 
 
3
        %struct.anon = type { i32 (i32, i32, i32)*, i32, i32, [3 x i32], i8*, i8*, i8* }
 
4
@debug = external constant i32          ; <i32*> [#uses=0]
 
5
@counters = external constant i32               ; <i32*> [#uses=1]
 
6
@trialx = external global [17 x i32]            ; <[17 x i32]*> [#uses=1]
 
7
@dummy1 = external global [7 x i32]             ; <[7 x i32]*> [#uses=0]
 
8
@dummy2 = external global [4 x i32]             ; <[4 x i32]*> [#uses=0]
 
9
@unacceptable = external global i32             ; <i32*> [#uses=0]
 
10
@isa = external global [13 x %struct.anon]              ; <[13 x %struct.anon]*> [#uses=3]
 
11
@.str = external constant [4 x i8]              ; <[4 x i8]*> [#uses=0]
 
12
@.str1 = external constant [3 x i8]             ; <[3 x i8]*> [#uses=0]
 
13
@.str2 = external constant [1 x i8]             ; <[1 x i8]*> [#uses=0]
 
14
@.str3 = external constant [4 x i8]             ; <[4 x i8]*> [#uses=0]
 
15
@.str4 = external constant [3 x i8]             ; <[3 x i8]*> [#uses=0]
 
16
@.str5 = external constant [4 x i8]             ; <[4 x i8]*> [#uses=0]
 
17
@.str6 = external constant [2 x i8]             ; <[2 x i8]*> [#uses=0]
 
18
@.str7 = external constant [4 x i8]             ; <[4 x i8]*> [#uses=0]
 
19
@.str8 = external constant [4 x i8]             ; <[4 x i8]*> [#uses=0]
 
20
@.str9 = external constant [4 x i8]             ; <[4 x i8]*> [#uses=0]
 
21
@.str10 = external constant [4 x i8]            ; <[4 x i8]*> [#uses=0]
 
22
@.str11 = external constant [2 x i8]            ; <[2 x i8]*> [#uses=0]
 
23
@.str12 = external constant [4 x i8]            ; <[4 x i8]*> [#uses=0]
 
24
@.str13 = external constant [2 x i8]            ; <[2 x i8]*> [#uses=0]
 
25
@.str14 = external constant [5 x i8]            ; <[5 x i8]*> [#uses=0]
 
26
@.str15 = external constant [5 x i8]            ; <[5 x i8]*> [#uses=0]
 
27
@.str16 = external constant [4 x i8]            ; <[4 x i8]*> [#uses=0]
 
28
@.str17 = external constant [4 x i8]            ; <[4 x i8]*> [#uses=0]
 
29
@.str18 = external constant [3 x i8]            ; <[3 x i8]*> [#uses=0]
 
30
@.str19 = external constant [4 x i8]            ; <[4 x i8]*> [#uses=0]
 
31
@.str20 = external constant [4 x i8]            ; <[4 x i8]*> [#uses=0]
 
32
@.str21 = external constant [4 x i8]            ; <[4 x i8]*> [#uses=0]
 
33
@.str22 = external constant [4 x i8]            ; <[4 x i8]*> [#uses=0]
 
34
@.str23 = external constant [5 x i8]            ; <[5 x i8]*> [#uses=0]
 
35
@.str24 = external constant [4 x i8]            ; <[4 x i8]*> [#uses=0]
 
36
@.str25 = external constant [6 x i8]            ; <[6 x i8]*> [#uses=0]
 
37
@.str26 = external constant [5 x i8]            ; <[5 x i8]*> [#uses=0]
 
38
@.str27 = external constant [6 x i8]            ; <[6 x i8]*> [#uses=0]
 
39
@r = external global [17 x i32]         ; <[17 x i32]*> [#uses=0]
 
40
@.str28 = external constant [3 x i8]            ; <[3 x i8]*> [#uses=0]
 
41
@.str29 = external constant [5 x i8]            ; <[5 x i8]*> [#uses=0]
 
42
@pgm = external global [5 x { i32, [3 x i32] }]         ; <[5 x { i32, [3 x i32] }]*> [#uses=4]
 
43
@.str30 = external constant [3 x i8]            ; <[3 x i8]*> [#uses=0]
 
44
@.str31 = external constant [13 x i8]           ; <[13 x i8]*> [#uses=0]
 
45
@.str32 = external constant [3 x i8]            ; <[3 x i8]*> [#uses=0]
 
46
@.str33 = external constant [4 x i8]            ; <[4 x i8]*> [#uses=0]
 
47
@.str34 = external constant [20 x i8]           ; <[20 x i8]*> [#uses=0]
 
48
@numi = external global i32             ; <i32*> [#uses=7]
 
49
@.str35 = external constant [10 x i8]           ; <[10 x i8]*> [#uses=0]
 
50
@counter = external global [5 x i32]            ; <[5 x i32]*> [#uses=2]
 
51
@itrialx.2510 = external global i32             ; <i32*> [#uses=0]
 
52
@.str36 = external constant [43 x i8]           ; <[43 x i8]*> [#uses=0]
 
53
@.str37 = external constant [42 x i8]           ; <[42 x i8]*> [#uses=0]
 
54
@corr_result = external global i32              ; <i32*> [#uses=0]
 
55
@.str38 = external constant [3 x i8]            ; <[3 x i8]*> [#uses=0]
 
56
@.str39 = external constant [5 x i8]            ; <[5 x i8]*> [#uses=0]
 
57
@.str40 = external constant [47 x i8]           ; <[47 x i8]*> [#uses=0]
 
58
@correct_result = external global [17 x i32]            ; <[17 x i32]*> [#uses=1]
 
59
@.str41 = external constant [46 x i8]           ; <[46 x i8]*> [#uses=0]
 
60
@.str42 = external constant [32 x i8]           ; <[32 x i8]*> [#uses=0]
 
61
@.str43 = external constant [44 x i8]           ; <[44 x i8]*> [#uses=1]
 
62
@.str44 = external constant [21 x i8]           ; <[21 x i8]*> [#uses=1]
 
63
@.str45 = external constant [12 x i8]           ; <[12 x i8]*> [#uses=1]
 
64
@.str46 = external constant [5 x i8]            ; <[5 x i8]*> [#uses=1]
 
65
@.str47 = external constant [12 x i8]           ; <[12 x i8]*> [#uses=1]
 
66
 
 
67
declare i32 @neg(i32, i32, i32)
 
68
 
 
69
declare i32 @Not(i32, i32, i32)
 
70
 
 
71
declare i32 @pop(i32, i32, i32)
 
72
 
 
73
declare i32 @nlz(i32, i32, i32)
 
74
 
 
75
declare i32 @rev(i32, i32, i32)
 
76
 
 
77
declare i32 @add(i32, i32, i32)
 
78
 
 
79
declare i32 @sub(i32, i32, i32)
 
80
 
 
81
declare i32 @mul(i32, i32, i32)
 
82
 
 
83
declare i32 @divide(i32, i32, i32)
 
84
 
 
85
declare i32 @divu(i32, i32, i32)
 
86
 
 
87
declare i32 @And(i32, i32, i32)
 
88
 
 
89
declare i32 @Or(i32, i32, i32)
 
90
 
 
91
declare i32 @Xor(i32, i32, i32)
 
92
 
 
93
declare i32 @rotl(i32, i32, i32)
 
94
 
 
95
declare i32 @shl(i32, i32, i32)
 
96
 
 
97
declare i32 @shr(i32, i32, i32)
 
98
 
 
99
declare i32 @shrs(i32, i32, i32)
 
100
 
 
101
declare i32 @cmpeq(i32, i32, i32)
 
102
 
 
103
declare i32 @cmplt(i32, i32, i32)
 
104
 
 
105
declare i32 @cmpltu(i32, i32, i32)
 
106
 
 
107
declare i32 @seleq(i32, i32, i32)
 
108
 
 
109
declare i32 @sellt(i32, i32, i32)
 
110
 
 
111
declare i32 @selle(i32, i32, i32)
 
112
 
 
113
declare void @print_expr(i32)
 
114
 
 
115
declare i32 @printf(i8*, ...)
 
116
 
 
117
declare i32 @putchar(i32)
 
118
 
 
119
declare void @print_pgm()
 
120
 
 
121
declare void @simulate_one_instruction(i32)
 
122
 
 
123
declare i32 @check(i32)
 
124
 
 
125
declare i32 @puts(i8*)
 
126
 
 
127
declare void @fix_operands(i32)
 
128
 
 
129
declare void @abort()
 
130
 
 
131
declare i32 @increment()
 
132
 
 
133
declare i32 @search()
 
134
 
 
135
define i32 @main(i32 %argc, i8** %argv) {
 
136
entry:
 
137
        %argc_addr = alloca i32         ; <i32*> [#uses=1]
 
138
        %argv_addr = alloca i8**                ; <i8***> [#uses=1]
 
139
        %retval = alloca i32, align 4           ; <i32*> [#uses=2]
 
140
        %tmp = alloca i32, align 4              ; <i32*> [#uses=2]
 
141
        %i = alloca i32, align 4                ; <i32*> [#uses=21]
 
142
        %num_sol = alloca i32, align 4          ; <i32*> [#uses=4]
 
143
        %total = alloca i32, align 4            ; <i32*> [#uses=4]
 
144
        %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
 
145
        store i32 %argc, i32* %argc_addr
 
146
        store i8** %argv, i8*** %argv_addr
 
147
        store i32 0, i32* %num_sol
 
148
        store i32 1, i32* @numi
 
149
        br label %bb91
 
150
 
 
151
bb:             ; preds = %cond_next97
 
152
        %tmp1 = load i32, i32* @numi            ; <i32> [#uses=1]
 
153
        %tmp2 = getelementptr [44 x i8], [44 x i8]* @.str43, i32 0, i32 0               ; <i8*> [#uses=1]
 
154
        %tmp3 = call i32 (i8*, ...) @printf( i8* %tmp2, i32 %tmp1 )             ; <i32> [#uses=0]
 
155
        store i32 0, i32* %i
 
156
        br label %bb13
 
157
 
 
158
bb4:            ; preds = %bb13
 
159
        %tmp5 = load i32, i32* %i               ; <i32> [#uses=1]
 
160
        %tmp6 = load i32, i32* %i               ; <i32> [#uses=1]
 
161
        %tmp7 = getelementptr [17 x i32], [17 x i32]* @trialx, i32 0, i32 %tmp6         ; <i32*> [#uses=1]
 
162
        %tmp8 = load i32, i32* %tmp7            ; <i32> [#uses=1]
 
163
        %tmp9 = call i32 @userfun( i32 %tmp8 )          ; <i32> [#uses=1]
 
164
        %tmp10 = getelementptr [17 x i32], [17 x i32]* @correct_result, i32 0, i32 %tmp5                ; <i32*> [#uses=1]
 
165
        store i32 %tmp9, i32* %tmp10
 
166
        %tmp11 = load i32, i32* %i              ; <i32> [#uses=1]
 
167
        %tmp12 = add i32 %tmp11, 1              ; <i32> [#uses=1]
 
168
        store i32 %tmp12, i32* %i
 
169
        br label %bb13
 
170
 
 
171
bb13:           ; preds = %bb4, %bb
 
172
        %tmp14 = load i32, i32* %i              ; <i32> [#uses=1]
 
173
        %tmp15 = icmp sle i32 %tmp14, 16                ; <i1> [#uses=1]
 
174
        %tmp1516 = zext i1 %tmp15 to i32                ; <i32> [#uses=1]
 
175
        %toBool = icmp ne i32 %tmp1516, 0               ; <i1> [#uses=1]
 
176
        br i1 %toBool, label %bb4, label %bb17
 
177
 
 
178
bb17:           ; preds = %bb13
 
179
        store i32 0, i32* %i
 
180
        br label %bb49
 
181
 
 
182
bb18:           ; preds = %bb49
 
183
        %tmp19 = load i32, i32* %i              ; <i32> [#uses=1]
 
184
        %tmp20 = getelementptr [5 x { i32, [3 x i32] }], [5 x { i32, [3 x i32] }]* @pgm, i32 0, i32 %tmp19              ; <{ i32, [3 x i32] }*> [#uses=1]
 
185
        %tmp21 = getelementptr { i32, [3 x i32] }, { i32, [3 x i32] }* %tmp20, i32 0, i32 0             ; <i32*> [#uses=1]
 
186
        store i32 0, i32* %tmp21
 
187
        %tmp22 = load i32, i32* %i              ; <i32> [#uses=1]
 
188
        %tmp23 = getelementptr [13 x %struct.anon], [13 x %struct.anon]* @isa, i32 0, i32 0             ; <%struct.anon*> [#uses=1]
 
189
        %tmp24 = getelementptr %struct.anon, %struct.anon* %tmp23, i32 0, i32 3         ; <[3 x i32]*> [#uses=1]
 
190
        %tmp25 = getelementptr [3 x i32], [3 x i32]* %tmp24, i32 0, i32 0               ; <i32*> [#uses=1]
 
191
        %tmp26 = load i32, i32* %tmp25          ; <i32> [#uses=1]
 
192
        %tmp27 = getelementptr [5 x { i32, [3 x i32] }], [5 x { i32, [3 x i32] }]* @pgm, i32 0, i32 %tmp22              ; <{ i32, [3 x i32] }*> [#uses=1]
 
193
        %tmp28 = getelementptr { i32, [3 x i32] }, { i32, [3 x i32] }* %tmp27, i32 0, i32 1             ; <[3 x i32]*> [#uses=1]
 
194
        %tmp29 = getelementptr [3 x i32], [3 x i32]* %tmp28, i32 0, i32 0               ; <i32*> [#uses=1]
 
195
        store i32 %tmp26, i32* %tmp29
 
196
        %tmp30 = load i32, i32* %i              ; <i32> [#uses=1]
 
197
        %tmp31 = getelementptr [13 x %struct.anon], [13 x %struct.anon]* @isa, i32 0, i32 0             ; <%struct.anon*> [#uses=1]
 
198
        %tmp32 = getelementptr %struct.anon, %struct.anon* %tmp31, i32 0, i32 3         ; <[3 x i32]*> [#uses=1]
 
199
        %tmp33 = getelementptr [3 x i32], [3 x i32]* %tmp32, i32 0, i32 1               ; <i32*> [#uses=1]
 
200
        %tmp34 = load i32, i32* %tmp33          ; <i32> [#uses=1]
 
201
        %tmp35 = getelementptr [5 x { i32, [3 x i32] }], [5 x { i32, [3 x i32] }]* @pgm, i32 0, i32 %tmp30              ; <{ i32, [3 x i32] }*> [#uses=1]
 
202
        %tmp36 = getelementptr { i32, [3 x i32] }, { i32, [3 x i32] }* %tmp35, i32 0, i32 1             ; <[3 x i32]*> [#uses=1]
 
203
        %tmp37 = getelementptr [3 x i32], [3 x i32]* %tmp36, i32 0, i32 1               ; <i32*> [#uses=1]
 
204
        store i32 %tmp34, i32* %tmp37
 
205
        %tmp38 = load i32, i32* %i              ; <i32> [#uses=1]
 
206
        %tmp39 = getelementptr [13 x %struct.anon], [13 x %struct.anon]* @isa, i32 0, i32 0             ; <%struct.anon*> [#uses=1]
 
207
        %tmp40 = getelementptr %struct.anon, %struct.anon* %tmp39, i32 0, i32 3         ; <[3 x i32]*> [#uses=1]
 
208
        %tmp41 = getelementptr [3 x i32], [3 x i32]* %tmp40, i32 0, i32 2               ; <i32*> [#uses=1]
 
209
        %tmp42 = load i32, i32* %tmp41          ; <i32> [#uses=1]
 
210
        %tmp43 = getelementptr [5 x { i32, [3 x i32] }], [5 x { i32, [3 x i32] }]* @pgm, i32 0, i32 %tmp38              ; <{ i32, [3 x i32] }*> [#uses=1]
 
211
        %tmp44 = getelementptr { i32, [3 x i32] }, { i32, [3 x i32] }* %tmp43, i32 0, i32 1             ; <[3 x i32]*> [#uses=1]
 
212
        %tmp45 = getelementptr [3 x i32], [3 x i32]* %tmp44, i32 0, i32 2               ; <i32*> [#uses=1]
 
213
        store i32 %tmp42, i32* %tmp45
 
214
        %tmp46 = load i32, i32* %i              ; <i32> [#uses=1]
 
215
        call void @fix_operands( i32 %tmp46 )
 
216
        %tmp47 = load i32, i32* %i              ; <i32> [#uses=1]
 
217
        %tmp48 = add i32 %tmp47, 1              ; <i32> [#uses=1]
 
218
        store i32 %tmp48, i32* %i
 
219
        br label %bb49
 
220
 
 
221
bb49:           ; preds = %bb18, %bb17
 
222
        %tmp50 = load i32, i32* @numi           ; <i32> [#uses=1]
 
223
        %tmp51 = load i32, i32* %i              ; <i32> [#uses=1]
 
224
        %tmp52 = icmp slt i32 %tmp51, %tmp50            ; <i1> [#uses=1]
 
225
        %tmp5253 = zext i1 %tmp52 to i32                ; <i32> [#uses=1]
 
226
        %toBool54 = icmp ne i32 %tmp5253, 0             ; <i1> [#uses=1]
 
227
        br i1 %toBool54, label %bb18, label %bb55
 
228
 
 
229
bb55:           ; preds = %bb49
 
230
        %tmp56 = call i32 @search( )            ; <i32> [#uses=1]
 
231
        store i32 %tmp56, i32* %num_sol
 
232
        %tmp57 = getelementptr [21 x i8], [21 x i8]* @.str44, i32 0, i32 0              ; <i8*> [#uses=1]
 
233
        %tmp58 = load i32, i32* %num_sol                ; <i32> [#uses=1]
 
234
        %tmp59 = call i32 (i8*, ...) @printf( i8* %tmp57, i32 %tmp58 )          ; <i32> [#uses=0]
 
235
        %tmp60 = load i32, i32* @counters               ; <i32> [#uses=1]
 
236
        %tmp61 = icmp ne i32 %tmp60, 0          ; <i1> [#uses=1]
 
237
        %tmp6162 = zext i1 %tmp61 to i32                ; <i32> [#uses=1]
 
238
        %toBool63 = icmp ne i32 %tmp6162, 0             ; <i1> [#uses=1]
 
239
        br i1 %toBool63, label %cond_true, label %cond_next
 
240
 
 
241
cond_true:              ; preds = %bb55
 
242
        store i32 0, i32* %total
 
243
        %tmp64 = getelementptr [12 x i8], [12 x i8]* @.str45, i32 0, i32 0              ; <i8*> [#uses=1]
 
244
        %tmp65 = call i32 (i8*, ...) @printf( i8* %tmp64 )              ; <i32> [#uses=0]
 
245
        store i32 0, i32* %i
 
246
        br label %bb79
 
247
 
 
248
bb66:           ; preds = %bb79
 
249
        %tmp67 = load i32, i32* %i              ; <i32> [#uses=1]
 
250
        %tmp68 = getelementptr [5 x i32], [5 x i32]* @counter, i32 0, i32 %tmp67                ; <i32*> [#uses=1]
 
251
        %tmp69 = load i32, i32* %tmp68          ; <i32> [#uses=1]
 
252
        %tmp70 = getelementptr [5 x i8], [5 x i8]* @.str46, i32 0, i32 0                ; <i8*> [#uses=1]
 
253
        %tmp71 = call i32 (i8*, ...) @printf( i8* %tmp70, i32 %tmp69 )          ; <i32> [#uses=0]
 
254
        %tmp72 = load i32, i32* %i              ; <i32> [#uses=1]
 
255
        %tmp73 = getelementptr [5 x i32], [5 x i32]* @counter, i32 0, i32 %tmp72                ; <i32*> [#uses=1]
 
256
        %tmp74 = load i32, i32* %tmp73          ; <i32> [#uses=1]
 
257
        %tmp75 = load i32, i32* %total          ; <i32> [#uses=1]
 
258
        %tmp76 = add i32 %tmp74, %tmp75         ; <i32> [#uses=1]
 
259
        store i32 %tmp76, i32* %total
 
260
        %tmp77 = load i32, i32* %i              ; <i32> [#uses=1]
 
261
        %tmp78 = add i32 %tmp77, 1              ; <i32> [#uses=1]
 
262
        store i32 %tmp78, i32* %i
 
263
        br label %bb79
 
264
 
 
265
bb79:           ; preds = %bb66, %cond_true
 
266
        %tmp80 = load i32, i32* @numi           ; <i32> [#uses=1]
 
267
        %tmp81 = load i32, i32* %i              ; <i32> [#uses=1]
 
268
        %tmp82 = icmp slt i32 %tmp81, %tmp80            ; <i1> [#uses=1]
 
269
        %tmp8283 = zext i1 %tmp82 to i32                ; <i32> [#uses=1]
 
270
        %toBool84 = icmp ne i32 %tmp8283, 0             ; <i1> [#uses=1]
 
271
        br i1 %toBool84, label %bb66, label %bb85
 
272
 
 
273
bb85:           ; preds = %bb79
 
274
        %tmp86 = getelementptr [12 x i8], [12 x i8]* @.str47, i32 0, i32 0              ; <i8*> [#uses=1]
 
275
        %tmp87 = load i32, i32* %total          ; <i32> [#uses=1]
 
276
        %tmp88 = call i32 (i8*, ...) @printf( i8* %tmp86, i32 %tmp87 )          ; <i32> [#uses=0]
 
277
        br label %cond_next
 
278
 
 
279
cond_next:              ; preds = %bb85, %bb55
 
280
        %tmp89 = load i32, i32* @numi           ; <i32> [#uses=1]
 
281
        %tmp90 = add i32 %tmp89, 1              ; <i32> [#uses=1]
 
282
        store i32 %tmp90, i32* @numi
 
283
        br label %bb91
 
284
 
 
285
bb91:           ; preds = %cond_next, %entry
 
286
        %tmp92 = load i32, i32* @numi           ; <i32> [#uses=1]
 
287
        %tmp93 = icmp sgt i32 %tmp92, 5         ; <i1> [#uses=1]
 
288
        %tmp9394 = zext i1 %tmp93 to i32                ; <i32> [#uses=1]
 
289
        %toBool95 = icmp ne i32 %tmp9394, 0             ; <i1> [#uses=1]
 
290
        br i1 %toBool95, label %cond_true96, label %cond_next97
 
291
 
 
292
cond_true96:            ; preds = %bb91
 
293
        br label %bb102
 
294
 
 
295
cond_next97:            ; preds = %bb91
 
296
        %tmp98 = load i32, i32* %num_sol                ; <i32> [#uses=1]
 
297
        %tmp99 = icmp eq i32 %tmp98, 0          ; <i1> [#uses=1]
 
298
        %tmp99100 = zext i1 %tmp99 to i32               ; <i32> [#uses=1]
 
299
        %toBool101 = icmp ne i32 %tmp99100, 0           ; <i1> [#uses=1]
 
300
        br i1 %toBool101, label %bb, label %bb102
 
301
 
 
302
bb102:          ; preds = %cond_next97, %cond_true96
 
303
        store i32 0, i32* %tmp
 
304
        %tmp103 = load i32, i32* %tmp           ; <i32> [#uses=1]
 
305
        store i32 %tmp103, i32* %retval
 
306
        br label %return
 
307
 
 
308
return:         ; preds = %bb102
 
309
        %retval104 = load i32, i32* %retval             ; <i32> [#uses=1]
 
310
        ret i32 %retval104
 
311
}
 
312
 
 
313
declare i32 @userfun(i32)