Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(490)

Side by Side Diff: test/NaCl/Bitcode/bccompress.ll

Issue 939073008: Rebased PNaCl localmods in LLVM to 223109 (Closed)
Patch Set: undo localmod Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/NaCl/Bitcode/bcanalyzer-width.ll ('k') | test/NaCl/Bitcode/bcdist.ll » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 ; Simple test to see if pnacl-bccompress maintains bitcode.
2
3 ; Test 1: Show that we generate the same disassembled code.
4 ; RUN: llvm-as < %s | pnacl-freeze -allow-local-symbol-tables \
5 ; RUN: | pnacl-bccompress \
6 ; RUN: | pnacl-thaw -allow-local-symbol-tables \
7 ; RUN: | llvm-dis - | FileCheck %s
8
9 ; Test 2: Show that both the precompressed, and the compressed versions
10 ; of the bitcode contain the same records.
11 ; RUN: llvm-as < %s | pnacl-freeze \
12 ; RUN: | pnacl-bcanalyzer -operands-per-line=6 -dump-records \
13 ; RUN: | FileCheck %s --check-prefix DUMP
14 ; RUN: llvm-as < %s | pnacl-freeze | pnacl-bccompress \
15 ; RUN: | pnacl-bcanalyzer -operands-per-line=6 -dump-records \
16 ; RUN: | FileCheck %s --check-prefix DUMP
17
18 @bytes7 = internal global [7 x i8] c"abcdefg"
19 ; CHECK: @bytes7 = internal global [7 x i8] c"abcdefg"
20
21 @ptr_to_ptr = internal global i32 ptrtoint (i32* @ptr to i32)
22 ; CHECK-NEXT: @ptr_to_ptr = internal global i32 ptrtoint (i32* @ptr to i32)
23
24 @ptr_to_func = internal global i32 ptrtoint (void ()* @func to i32)
25 ; CHECK-NEXT: @ptr_to_func = internal global i32 ptrtoint (void ()* @func to i32 )
26
27 @compound = internal global <{ [3 x i8], i32 }> <{ [3 x i8] c"foo", i32 ptrtoint (void ()* @func to i32) }>
28 ; CHECK-NEXT: @compound = internal global <{ [3 x i8], i32 }> <{ [3 x i8] c"foo" , i32 ptrtoint (void ()* @func to i32) }>
29
30 @ptr = internal global i32 ptrtoint ([7 x i8]* @bytes7 to i32)
31 ; CHECK-NEXT: @ptr = internal global i32 ptrtoint ([7 x i8]* @bytes7 to i32)
32
33 @addend_ptr = internal global i32 add (i32 ptrtoint (i32* @ptr to i32), i32 1)
34 ; CHECK-NEXT: @addend_ptr = internal global i32 add (i32 ptrtoint (i32* @ptr to i32), i32 1)
35
36 @addend_negative = internal global i32 add (i32 ptrtoint (i32* @ptr to i32), i32 -1)
37 ; CHECK-NEXT: @addend_negative = internal global i32 add (i32 ptrtoint (i32* @pt r to i32), i32 -1)
38
39 @addend_array1 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes7 to i32 ), i32 1)
40 ; CHECK-NEXT: @addend_array1 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes7 to i32), i32 1)
41
42 @addend_array2 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes7 to i32 ), i32 7)
43 ; CHECK-NEXT: @addend_array2 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes7 to i32), i32 7)
44
45 @addend_array3 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes7 to i32 ), i32 9)
46 ; CHECK-NEXT: @addend_array3 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes7 to i32), i32 9)
47
48 @addend_struct1 = internal global i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @c ompound to i32), i32 1)
49 ; CHECK-NEXT: @addend_struct1 = internal global i32 add (i32 ptrtoint (<{ [3 x i 8], i32 }>* @compound to i32), i32 1)
50
51 @addend_struct2 = internal global i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @c ompound to i32), i32 4)
52 ; CHECK-NEXT: @addend_struct2 = internal global i32 add (i32 ptrtoint (<{ [3 x i 8], i32 }>* @compound to i32), i32 4)
53
54 @ptr_to_func_align = internal global i32 ptrtoint (void ()* @func to i32), align 8
55 ; CHECK-NEXT: @ptr_to_func_align = internal global i32 ptrtoint (void ()* @func to i32), align 8
56
57 @char = internal constant [1 x i8] c"0"
58 ; CHECK-NEXT: @char = internal constant [1 x i8] c"0"
59
60 @short = internal constant [2 x i8] zeroinitializer
61 ; CHECK-NEXT: @short = internal constant [2 x i8] zeroinitializer
62
63 @bytes = internal global [4 x i8] c"abcd"
64 ; CHECK-NEXT: @bytes = internal global [4 x i8] c"abcd"
65
66 declare i32 @bar(i32)
67 ; CHECK: declare i32 @bar(i32)
68
69 define void @func() {
70 ret void
71 }
72
73 ; CHECK: define void @func() {
74 ; CHECK-NEXT: ret void
75 ; CHECK-NEXT: }
76
77 define void @AllocCastSimple() {
78 %1 = alloca i8, i32 4, align 8
79 %2 = ptrtoint i8* %1 to i32
80 %3 = bitcast [4 x i8]* @bytes to i32*
81 store i32 %2, i32* %3, align 1
82 ret void
83 }
84
85 ; CHECK: define void @AllocCastSimple() {
86 ; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
87 ; CHECK-NEXT: %2 = ptrtoint i8* %1 to i32
88 ; CHECK-NEXT: %3 = bitcast [4 x i8]* @bytes to i32*
89 ; CHECK-NEXT: store i32 %2, i32* %3, align 1
90 ; CHECK-NEXT: ret void
91 ; CHECK-NEXT: }
92
93 define void @AllocCastSimpleReversed() {
94 %1 = alloca i8, i32 4, align 8
95 %2 = ptrtoint i8* %1 to i32
96 %3 = bitcast [4 x i8]* @bytes to i32*
97 store i32 %2, i32* %3, align 1
98 ret void
99 }
100
101 ; CHECK: define void @AllocCastSimpleReversed() {
102 ; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
103 ; CHECK-NEXT: %2 = ptrtoint i8* %1 to i32
104 ; CHECK-NEXT: %3 = bitcast [4 x i8]* @bytes to i32*
105 ; CHECK-NEXT: store i32 %2, i32* %3, align 1
106 ; CHECK-NEXT: ret void
107 ; CHECK-NEXT: }
108
109 define void @AllocCastDelete() {
110 %1 = alloca i8, i32 4, align 8
111 %2 = alloca i8, i32 4, align 8
112 ret void
113 }
114
115 ; CHECK: define void @AllocCastDelete() {
116 ; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
117 ; CHECK-NEXT: %2 = alloca i8, i32 4, align 8
118 ; CHECK-NEXT: ret void
119 ; CHECK-NEXT: }
120
121 define void @AllocCastOpt() {
122 %1 = alloca i8, i32 4, align 8
123 %2 = ptrtoint i8* %1 to i32
124 %3 = bitcast [4 x i8]* @bytes to i32*
125 store i32 %2, i32* %3, align 1
126 store i32 %2, i32* %3, align 1
127 ret void
128 }
129
130 ; CHECK: define void @AllocCastOpt() {
131 ; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
132 ; CHECK-NEXT: %2 = ptrtoint i8* %1 to i32
133 ; CHECK-NEXT: %3 = bitcast [4 x i8]* @bytes to i32*
134 ; CHECK-NEXT: store i32 %2, i32* %3, align 1
135 ; CHECK-NEXT: store i32 %2, i32* %3, align 1
136 ; CHECK-NEXT: ret void
137 ; CHECK-NEXT: }
138
139 define void @AllocBitcast(i32) {
140 %2 = alloca i8, i32 4, align 8
141 %3 = add i32 %0, 1
142 %4 = ptrtoint i8* %2 to i32
143 %5 = bitcast [4 x i8]* @bytes to i32*
144 store i32 %4, i32* %5, align 1
145 ret void
146 }
147
148 ; CHECK: define void @AllocBitcast(i32) {
149 ; CHECK-NEXT: %2 = alloca i8, i32 4, align 8
150 ; CHECK-NEXT: %3 = add i32 %0, 1
151 ; CHECK-NEXT: %4 = ptrtoint i8* %2 to i32
152 ; CHECK-NEXT: %5 = bitcast [4 x i8]* @bytes to i32*
153 ; CHECK-NEXT: store i32 %4, i32* %5, align 1
154 ; CHECK-NEXT: ret void
155 ; CHECK-NEXT: }
156
157 define void @StoreGlobal() {
158 %1 = alloca i8, i32 4, align 8
159 %2 = ptrtoint [4 x i8]* @bytes to i32
160 %3 = bitcast i8* %1 to i32*
161 store i32 %2, i32* %3, align 1
162 ret void
163 }
164
165 ; CHECK: define void @StoreGlobal() {
166 ; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
167 ; CHECK-NEXT: %2 = ptrtoint [4 x i8]* @bytes to i32
168 ; CHECK-NEXT: %3 = bitcast i8* %1 to i32*
169 ; CHECK-NEXT: store i32 %2, i32* %3, align 1
170 ; CHECK-NEXT: ret void
171 ; CHECK-NEXT: }
172
173 define void @StoreGlobalCastsReversed() {
174 %1 = alloca i8, i32 4, align 8
175 %2 = ptrtoint [4 x i8]* @bytes to i32
176 %3 = bitcast i8* %1 to i32*
177 store i32 %2, i32* %3, align 1
178 ret void
179 }
180
181 ; CHECK: define void @StoreGlobalCastsReversed() {
182 ; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
183 ; CHECK-NEXT: %2 = ptrtoint [4 x i8]* @bytes to i32
184 ; CHECK-NEXT: %3 = bitcast i8* %1 to i32*
185 ; CHECK-NEXT: store i32 %2, i32* %3, align 1
186 ; CHECK-NEXT: ret void
187 ; CHECK-NEXT: }
188
189 define i32 @StoreGlobalCastPtr2Int() {
190 %1 = alloca i8, i32 4, align 8
191 %2 = ptrtoint [4 x i8]* @bytes to i32
192 %3 = bitcast i8* %1 to i32*
193 store i32 %2, i32* %3, align 1
194 ret i32 0
195 }
196
197 ; CHECK: define i32 @StoreGlobalCastPtr2Int() {
198 ; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
199 ; CHECK-NEXT: %2 = ptrtoint [4 x i8]* @bytes to i32
200 ; CHECK-NEXT: %3 = bitcast i8* %1 to i32*
201 ; CHECK-NEXT: store i32 %2, i32* %3, align 1
202 ; CHECK-NEXT: ret i32 0
203 ; CHECK-NEXT: }
204
205 define void @CastAddAlloca() {
206 %1 = alloca i8, i32 4, align 8
207 %2 = add i32 1, 2
208 %3 = ptrtoint i8* %1 to i32
209 %4 = add i32 %3, 2
210 %5 = add i32 1, %3
211 %6 = add i32 %3, %3
212 ret void
213 }
214
215 ; CHECK: define void @CastAddAlloca() {
216 ; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
217 ; CHECK-NEXT: %2 = add i32 1, 2
218 ; CHECK-NEXT: %3 = ptrtoint i8* %1 to i32
219 ; CHECK-NEXT: %4 = add i32 %3, 2
220 ; CHECK-NEXT: %5 = add i32 1, %3
221 ; CHECK-NEXT: %6 = add i32 %3, %3
222 ; CHECK-NEXT: ret void
223 ; CHECK-NEXT: }
224
225 define void @CastAddGlobal() {
226 %1 = add i32 1, 2
227 %2 = ptrtoint [4 x i8]* @bytes to i32
228 %3 = add i32 %2, 2
229 %4 = add i32 1, %2
230 %5 = add i32 %2, %2
231 ret void
232 }
233
234 ; CHECK: define void @CastAddGlobal() {
235 ; CHECK-NEXT: %1 = add i32 1, 2
236 ; CHECK-NEXT: %2 = ptrtoint [4 x i8]* @bytes to i32
237 ; CHECK-NEXT: %3 = add i32 %2, 2
238 ; CHECK-NEXT: %4 = add i32 1, %2
239 ; CHECK-NEXT: %5 = add i32 %2, %2
240 ; CHECK-NEXT: ret void
241 ; CHECK-NEXT: }
242
243 define void @CastBinop() {
244 %1 = alloca i8, i32 4, align 8
245 %2 = ptrtoint i8* %1 to i32
246 %3 = ptrtoint [4 x i8]* @bytes to i32
247 %4 = sub i32 %2, %3
248 %5 = mul i32 %2, %3
249 %6 = udiv i32 %2, %3
250 %7 = urem i32 %2, %3
251 %8 = srem i32 %2, %3
252 %9 = shl i32 %2, %3
253 %10 = lshr i32 %2, %3
254 %11 = ashr i32 %2, %3
255 %12 = and i32 %2, %3
256 %13 = or i32 %2, %3
257 %14 = xor i32 %2, %3
258 ret void
259 }
260
261 ; CHECK: define void @CastBinop() {
262 ; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
263 ; CHECK-NEXT: %2 = ptrtoint i8* %1 to i32
264 ; CHECK-NEXT: %3 = ptrtoint [4 x i8]* @bytes to i32
265 ; CHECK-NEXT: %4 = sub i32 %2, %3
266 ; CHECK-NEXT: %5 = mul i32 %2, %3
267 ; CHECK-NEXT: %6 = udiv i32 %2, %3
268 ; CHECK-NEXT: %7 = urem i32 %2, %3
269 ; CHECK-NEXT: %8 = srem i32 %2, %3
270 ; CHECK-NEXT: %9 = shl i32 %2, %3
271 ; CHECK-NEXT: %10 = lshr i32 %2, %3
272 ; CHECK-NEXT: %11 = ashr i32 %2, %3
273 ; CHECK-NEXT: %12 = and i32 %2, %3
274 ; CHECK-NEXT: %13 = or i32 %2, %3
275 ; CHECK-NEXT: %14 = xor i32 %2, %3
276 ; CHECK-NEXT: ret void
277 ; CHECK-NEXT: }
278
279 define void @TestSavedPtrToInt() {
280 %1 = alloca i8, i32 4, align 8
281 %2 = ptrtoint i8* %1 to i32
282 %3 = add i32 %2, 0
283 %4 = call i32 @bar(i32 %2)
284 ret void
285 }
286
287 ; CHECK: define void @TestSavedPtrToInt() {
288 ; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
289 ; CHECK-NEXT: %2 = ptrtoint i8* %1 to i32
290 ; CHECK-NEXT: %3 = add i32 %2, 0
291 ; CHECK-NEXT: %4 = call i32 @bar(i32 %2)
292 ; CHECK-NEXT: ret void
293 ; CHECK-NEXT: }
294
295 define void @CastSelect() {
296 %1 = alloca i8, i32 4, align 8
297 %2 = select i1 true, i32 1, i32 2
298 %3 = ptrtoint i8* %1 to i32
299 %4 = select i1 true, i32 %3, i32 2
300 %5 = ptrtoint [4 x i8]* @bytes to i32
301 %6 = select i1 true, i32 1, i32 %5
302 %7 = select i1 true, i32 %3, i32 %5
303 %8 = select i1 true, i32 %5, i32 %3
304 ret void
305 }
306
307 ; CHECK: define void @CastSelect() {
308 ; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
309 ; CHECK-NEXT: %2 = select i1 true, i32 1, i32 2
310 ; CHECK-NEXT: %3 = ptrtoint i8* %1 to i32
311 ; CHECK-NEXT: %4 = select i1 true, i32 %3, i32 2
312 ; CHECK-NEXT: %5 = ptrtoint [4 x i8]* @bytes to i32
313 ; CHECK-NEXT: %6 = select i1 true, i32 1, i32 %5
314 ; CHECK-NEXT: %7 = select i1 true, i32 %3, i32 %5
315 ; CHECK-NEXT: %8 = select i1 true, i32 %5, i32 %3
316 ; CHECK-NEXT: ret void
317 ; CHECK-NEXT: }
318
319 define void @PhiBackwardRefs(i1) {
320 %2 = alloca i8, i32 4, align 8
321 %3 = alloca i8, i32 4, align 8
322 br i1 %0, label %true, label %false
323
324 true: ; preds = %1
325 %4 = bitcast i8* %2 to i32*
326 %5 = load i32* %4
327 %6 = ptrtoint i8* %3 to i32
328 br label %merge
329
330 false: ; preds = %1
331 %7 = bitcast i8* %2 to i32*
332 %8 = load i32* %7
333 %9 = ptrtoint i8* %3 to i32
334 br label %merge
335
336 merge: ; preds = %false, %true
337 %10 = phi i32 [ %6, %true ], [ %9, %false ]
338 %11 = phi i32 [ %5, %true ], [ %8, %false ]
339 ret void
340 }
341
342 ; CHECK: define void @PhiBackwardRefs(i1) {
343 ; CHECK-NEXT: %2 = alloca i8, i32 4, align 8
344 ; CHECK-NEXT: %3 = alloca i8, i32 4, align 8
345 ; CHECK-NEXT: br i1 %0, label %true, label %false
346 ; CHECK: true: ; preds = %1
347 ; CHECK-NEXT: %4 = bitcast i8* %2 to i32*
348 ; CHECK-NEXT: %5 = load i32* %4
349 ; CHECK-NEXT: %6 = ptrtoint i8* %3 to i32
350 ; CHECK-NEXT: br label %merge
351 ; CHECK: false: ; preds = %1
352 ; CHECK-NEXT: %7 = bitcast i8* %2 to i32*
353 ; CHECK-NEXT: %8 = load i32* %7
354 ; CHECK-NEXT: %9 = ptrtoint i8* %3 to i32
355 ; CHECK-NEXT: br label %merge
356 ; CHECK: merge: ; preds = %false , %true
357 ; CHECK-NEXT: %10 = phi i32 [ %6, %true ], [ %9, %false ]
358 ; CHECK-NEXT: %11 = phi i32 [ %5, %true ], [ %8, %false ]
359 ; CHECK-NEXT: ret void
360 ; CHECK-NEXT: }
361
362 define void @PhiForwardRefs(i1) {
363 br label %start
364
365 merge: ; preds = %false, %true
366 %2 = phi i32 [ %11, %true ], [ %11, %false ]
367 %3 = phi i32 [ %5, %true ], [ %7, %false ]
368 ret void
369
370 true: ; preds = %start
371 %4 = inttoptr i32 %9 to i32*
372 %5 = load i32* %4
373 br label %merge
374
375 false: ; preds = %start
376 %6 = inttoptr i32 %9 to i32*
377 %7 = load i32* %6
378 br label %merge
379
380 start: ; preds = %1
381 %8 = alloca i8, i32 4, align 8
382 %9 = ptrtoint i8* %8 to i32
383 %10 = alloca i8, i32 4, align 8
384 %11 = ptrtoint i8* %10 to i32
385 br i1 %0, label %true, label %false
386 }
387
388 ; CHECK: define void @PhiForwardRefs(i1) {
389 ; CHECK-NEXT: br label %start
390 ; CHECK: merge: ; preds = %false , %true
391 ; CHECK-NEXT: %2 = phi i32 [ %11, %true ], [ %11, %false ]
392 ; CHECK-NEXT: %3 = phi i32 [ %5, %true ], [ %7, %false ]
393 ; CHECK-NEXT: ret void
394 ; CHECK: true: ; preds = %start
395 ; CHECK-NEXT: %4 = inttoptr i32 %9 to i32*
396 ; CHECK-NEXT: %5 = load i32* %4
397 ; CHECK-NEXT: br label %merge
398 ; CHECK: false: ; preds = %start
399 ; CHECK-NEXT: %6 = inttoptr i32 %9 to i32*
400 ; CHECK-NEXT: %7 = load i32* %6
401 ; CHECK-NEXT: br label %merge
402 ; CHECK: start: ; preds = %1
403 ; CHECK-NEXT: %8 = alloca i8, i32 4, align 8
404 ; CHECK-NEXT: %9 = ptrtoint i8* %8 to i32
405 ; CHECK-NEXT: %10 = alloca i8, i32 4, align 8
406 ; CHECK-NEXT: %11 = ptrtoint i8* %10 to i32
407 ; CHECK-NEXT: br i1 %0, label %true, label %false
408 ; CHECK-NEXT: }
409
410 define void @PhiMergeCast(i1) {
411 %2 = alloca i8, i32 4, align 8
412 %3 = alloca i8, i32 4, align 8
413 br i1 %0, label %true, label %false
414
415 true: ; preds = %1
416 %4 = bitcast i8* %2 to i32*
417 %5 = load i32* %4
418 %6 = ptrtoint i8* %3 to i32
419 %7 = add i32 %5, %6
420 br label %merge
421
422 false: ; preds = %1
423 %8 = bitcast i8* %2 to i32*
424 %9 = load i32* %8
425 %10 = ptrtoint i8* %3 to i32
426 br label %merge
427
428 merge: ; preds = %false, %true
429 %11 = phi i32 [ %6, %true ], [ %10, %false ]
430 %12 = phi i32 [ %5, %true ], [ %9, %false ]
431 ret void
432 }
433
434 ; CHECK: define void @PhiMergeCast(i1) {
435 ; CHECK-NEXT: %2 = alloca i8, i32 4, align 8
436 ; CHECK-NEXT: %3 = alloca i8, i32 4, align 8
437 ; CHECK-NEXT: br i1 %0, label %true, label %false
438 ; CHECK: true: ; preds = %1
439 ; CHECK-NEXT: %4 = bitcast i8* %2 to i32*
440 ; CHECK-NEXT: %5 = load i32* %4
441 ; CHECK-NEXT: %6 = ptrtoint i8* %3 to i32
442 ; CHECK-NEXT: %7 = add i32 %5, %6
443 ; CHECK-NEXT: br label %merge
444 ; CHECK: false: ; preds = %1
445 ; CHECK-NEXT: %8 = bitcast i8* %2 to i32*
446 ; CHECK-NEXT: %9 = load i32* %8
447 ; CHECK-NEXT: %10 = ptrtoint i8* %3 to i32
448 ; CHECK-NEXT: br label %merge
449 ; CHECK: merge: ; preds = %false , %true
450 ; CHECK-NEXT: %11 = phi i32 [ %6, %true ], [ %10, %false ]
451 ; CHECK-NEXT: %12 = phi i32 [ %5, %true ], [ %9, %false ]
452 ; CHECK-NEXT: ret void
453 ; CHECK-NEXT: }
454
455 define void @LongReachingCasts(i1) {
456 %2 = alloca i8, i32 4, align 8
457 br i1 %0, label %Split1, label %Split2
458
459 Split1: ; preds = %1
460 br i1 %0, label %b1, label %b2
461
462 Split2: ; preds = %1
463 br i1 %0, label %b3, label %b4
464
465 b1: ; preds = %Split1
466 %3 = ptrtoint i8* %2 to i32
467 %4 = bitcast [4 x i8]* @bytes to i32*
468 store i32 %3, i32* %4, align 1
469 store i32 %3, i32* %4, align 1
470 ret void
471
472 b2: ; preds = %Split1
473 %5 = ptrtoint i8* %2 to i32
474 %6 = bitcast [4 x i8]* @bytes to i32*
475 store i32 %5, i32* %6, align 1
476 store i32 %5, i32* %6, align 1
477 ret void
478
479 b3: ; preds = %Split2
480 %7 = ptrtoint i8* %2 to i32
481 %8 = bitcast [4 x i8]* @bytes to i32*
482 store i32 %7, i32* %8, align 1
483 store i32 %7, i32* %8, align 1
484 ret void
485
486 b4: ; preds = %Split2
487 %9 = ptrtoint i8* %2 to i32
488 %10 = bitcast [4 x i8]* @bytes to i32*
489 store i32 %9, i32* %10, align 1
490 store i32 %9, i32* %10, align 1
491 ret void
492 }
493
494 ; CHECK: define void @LongReachingCasts(i1) {
495 ; CHECK-NEXT: %2 = alloca i8, i32 4, align 8
496 ; CHECK-NEXT: br i1 %0, label %Split1, label %Split2
497 ; CHECK: Split1: ; preds = %1
498 ; CHECK-NEXT: br i1 %0, label %b1, label %b2
499 ; CHECK: Split2: ; preds = %1
500 ; CHECK-NEXT: br i1 %0, label %b3, label %b4
501 ; CHECK: b1: ; preds = %Split 1
502 ; CHECK-NEXT: %3 = ptrtoint i8* %2 to i32
503 ; CHECK-NEXT: %4 = bitcast [4 x i8]* @bytes to i32*
504 ; CHECK-NEXT: store i32 %3, i32* %4, align 1
505 ; CHECK-NEXT: store i32 %3, i32* %4, align 1
506 ; CHECK-NEXT: ret void
507 ; CHECK: b2: ; preds = %Split 1
508 ; CHECK-NEXT: %5 = ptrtoint i8* %2 to i32
509 ; CHECK-NEXT: %6 = bitcast [4 x i8]* @bytes to i32*
510 ; CHECK-NEXT: store i32 %5, i32* %6, align 1
511 ; CHECK-NEXT: store i32 %5, i32* %6, align 1
512 ; CHECK-NEXT: ret void
513 ; CHECK: b3: ; preds = %Split 2
514 ; CHECK-NEXT: %7 = ptrtoint i8* %2 to i32
515 ; CHECK-NEXT: %8 = bitcast [4 x i8]* @bytes to i32*
516 ; CHECK-NEXT: store i32 %7, i32* %8, align 1
517 ; CHECK-NEXT: store i32 %7, i32* %8, align 1
518 ; CHECK-NEXT: ret void
519 ; CHECK: b4: ; preds = %Split 2
520 ; CHECK-NEXT: %9 = ptrtoint i8* %2 to i32
521 ; CHECK-NEXT: %10 = bitcast [4 x i8]* @bytes to i32*
522 ; CHECK-NEXT: store i32 %9, i32* %10, align 1
523 ; CHECK-NEXT: store i32 %9, i32* %10, align 1
524 ; CHECK-NEXT: ret void
525 ; CHECK-NEXT: }
526
527 define void @SwitchVariable(i32) {
528 switch i32 %0, label %l1 [
529 i32 1, label %l2
530 i32 2, label %l2
531 i32 4, label %l3
532 i32 5, label %l3
533 ]
534 ; No predecessors!
535 br label %end
536
537 l1: ; preds = %1
538 br label %end
539
540 l2: ; preds = %1, %1
541 br label %end
542
543 l3: ; preds = %1, %1
544 br label %end
545
546 end: ; preds = %l3, %l2, %l1, %2
547 ret void
548 }
549
550 ; CHECK: define void @SwitchVariable(i32) {
551 ; CHECK-NEXT: switch i32 %0, label %l1 [
552 ; CHECK-NEXT: i32 1, label %l2
553 ; CHECK-NEXT: i32 2, label %l2
554 ; CHECK-NEXT: i32 4, label %l3
555 ; CHECK-NEXT: i32 5, label %l3
556 ; CHECK-NEXT: ]
557 ; CHECK-NEXT: ; No predecessor s!
558 ; CHECK-NEXT: br label %end
559 ; CHECK: l1: ; preds = %1
560 ; CHECK-NEXT: br label %end
561 ; CHECK: l2: ; preds = %1, %1
562 ; CHECK-NEXT: br label %end
563 ; CHECK: l3: ; preds = %1, %1
564 ; CHECK-NEXT: br label %end
565 ; CHECK: end: ; preds = %l3, % l2, %l1, %2
566 ; CHECK-NEXT: ret void
567 ; CHECK-NEXT: }
568
569 ; DUMP: PNaCl Version: 2
570
571 ; DUMP: <MODULE_BLOCK>
572 ; DUMP-NEXT: <VERSION op0=1/>
573 ; DUMP-NEXT: <BLOCKINFO_BLOCK/>
574 ; DUMP-NEXT: <TYPE_BLOCK_ID>
575 ; DUMP-NEXT: <NUMENTRY op0=9/>
576 ; DUMP-NEXT: <INTEGER op0=32/>
577 ; DUMP-NEXT: <VOID/>
578 ; DUMP-NEXT: <INTEGER op0=8/>
579 ; DUMP-NEXT: <INTEGER op0=1/>
580 ; DUMP-NEXT: <FUNCTION op0=0 op1=1/>
581 ; DUMP-NEXT: <FUNCTION op0=0 op1=1 op2=3/>
582 ; DUMP-NEXT: <FUNCTION op0=0 op1=0 op2=0/>
583 ; DUMP-NEXT: <FUNCTION op0=0 op1=1 op2=0/>
584 ; DUMP-NEXT: <FUNCTION op0=0 op1=0/>
585 ; DUMP-NEXT: </TYPE_BLOCK_ID>
586 ; DUMP-NEXT: <FUNCTION op0=6 op1=0 op2=1 op3=0/>
587 ; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
588 ; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
589 ; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
590 ; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
591 ; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
592 ; DUMP-NEXT: <FUNCTION op0=7 op1=0 op2=0 op3=0/>
593 ; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
594 ; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
595 ; DUMP-NEXT: <FUNCTION op0=8 op1=0 op2=0 op3=0/>
596 ; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
597 ; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
598 ; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
599 ; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
600 ; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
601 ; DUMP-NEXT: <FUNCTION op0=5 op1=0 op2=0 op3=0/>
602 ; DUMP-NEXT: <FUNCTION op0=5 op1=0 op2=0 op3=0/>
603 ; DUMP-NEXT: <FUNCTION op0=5 op1=0 op2=0 op3=0/>
604 ; DUMP-NEXT: <FUNCTION op0=5 op1=0 op2=0 op3=0/>
605 ; DUMP-NEXT: <FUNCTION op0=7 op1=0 op2=0 op3=0/>
606 ; DUMP-NEXT: <GLOBALVAR_BLOCK>
607 ; DUMP-NEXT: <COUNT op0=16/>
608 ; DUMP-NEXT: <VAR op0=0 op1=0/>
609 ; DUMP-NEXT: <DATA op0=97 op1=98 op2=99 op3=100 op4=101 op5=102
610 ; DUMP-NEXT: op6=103/>
611 ; DUMP-NEXT: <VAR op0=0 op1=0/>
612 ; DUMP-NEXT: <RELOC op0=24/>
613 ; DUMP-NEXT: <VAR op0=0 op1=0/>
614 ; DUMP-NEXT: <RELOC op0=1/>
615 ; DUMP-NEXT: <VAR op0=0 op1=0/>
616 ; DUMP-NEXT: <COMPOUND op0=2/>
617 ; DUMP-NEXT: <DATA op0=102 op1=111 op2=111/>
618 ; DUMP-NEXT: <RELOC op0=1/>
619 ; DUMP-NEXT: <VAR op0=0 op1=0/>
620 ; DUMP-NEXT: <RELOC op0=20/>
621 ; DUMP-NEXT: <VAR op0=0 op1=0/>
622 ; DUMP-NEXT: <RELOC op0=24 op1=1/>
623 ; DUMP-NEXT: <VAR op0=0 op1=0/>
624 ; DUMP-NEXT: <RELOC op0=24 op1=4294967295/>
625 ; DUMP-NEXT: <VAR op0=0 op1=0/>
626 ; DUMP-NEXT: <RELOC op0=20 op1=1/>
627 ; DUMP-NEXT: <VAR op0=0 op1=0/>
628 ; DUMP-NEXT: <RELOC op0=20 op1=7/>
629 ; DUMP-NEXT: <VAR op0=0 op1=0/>
630 ; DUMP-NEXT: <RELOC op0=20 op1=9/>
631 ; DUMP-NEXT: <VAR op0=0 op1=0/>
632 ; DUMP-NEXT: <RELOC op0=23 op1=1/>
633 ; DUMP-NEXT: <VAR op0=0 op1=0/>
634 ; DUMP-NEXT: <RELOC op0=23 op1=4/>
635 ; DUMP-NEXT: <VAR op0=4 op1=0/>
636 ; DUMP-NEXT: <RELOC op0=1/>
637 ; DUMP-NEXT: <VAR op0=0 op1=1/>
638 ; DUMP-NEXT: <DATA op0=48/>
639 ; DUMP-NEXT: <VAR op0=0 op1=1/>
640 ; DUMP-NEXT: <ZEROFILL op0=2/>
641 ; DUMP-NEXT: <VAR op0=0 op1=0/>
642 ; DUMP-NEXT: <DATA op0=97 op1=98 op2=99 op3=100/>
643 ; DUMP-NEXT: </GLOBALVAR_BLOCK>
644 ; DUMP-NEXT: <VALUE_SYMTAB>
645 ; DUMP-NEXT: <ENTRY op0=2 op1=65 op2=108 op3=108 op4=111 op5=99
646 ; DUMP-NEXT: op6=67 op7=97 op8=115 op9=116 op10=83 op11=105
647 ; DUMP-NEXT: op12=109 op13=112 op14=108 op15=101/>
648 ; DUMP-NEXT: <ENTRY op0=10 op1=67 op2=97 op3=115 op4=116 op5=65
649 ; DUMP-NEXT: op6=100 op7=100 op8=65 op9=108 op10=108 op11=111
650 ; DUMP-NEXT: op12=99 op13=97/>
651 ; DUMP-NEXT: <ENTRY op0=20 op1=98 op2=121 op3=116 op4=101 op5=115
652 ; DUMP-NEXT: op6=55/>
653 ; DUMP-NEXT: <ENTRY op0=23 op1=99 op2=111 op3=109 op4=112 op5=111
654 ; DUMP-NEXT: op6=117 op7=110 op8=100/>
655 ; DUMP-NEXT: <ENTRY op0=5 op1=65 op2=108 op3=108 op4=111 op5=99
656 ; DUMP-NEXT: op6=67 op7=97 op8=115 op9=116 op10=79 op11=112
657 ; DUMP-NEXT: op12=116/>
658 ; DUMP-NEXT: <ENTRY op0=32 op1=112 op2=116 op3=114 op4=95 op5=116
659 ; DUMP-NEXT: op6=111 op7=95 op8=102 op9=117 op10=110 op11=99
660 ; DUMP-NEXT: op12=95 op13=97 op14=108 op15=105 op16=103 op17=110/>
661 ; DUMP-NEXT: <ENTRY op0=18 op1=76 op2=111 op3=110 op4=103 op5=82
662 ; DUMP-NEXT: op6=101 op7=97 op8=99 op9=104 op10=105 op11=110
663 ; DUMP-NEXT: op12=103 op13=67 op14=97 op15=115 op16=116 op17=115/>
664 ; DUMP-NEXT: <ENTRY op0=15 op1=80 op2=104 op3=105 op4=66 op5=97
665 ; DUMP-NEXT: op6=99 op7=107 op8=119 op9=97 op10=114 op11=100
666 ; DUMP-NEXT: op12=82 op13=101 op14=102 op15=115/>
667 ; DUMP-NEXT: <ENTRY op0=26 op1=97 op2=100 op3=100 op4=101 op5=110
668 ; DUMP-NEXT: op6=100 op7=95 op8=110 op9=101 op10=103 op11=97
669 ; DUMP-NEXT: op12=116 op13=105 op14=118 op15=101/>
670 ; DUMP-NEXT: <ENTRY op0=6 op1=65 op2=108 op3=108 op4=111 op5=99
671 ; DUMP-NEXT: op6=66 op7=105 op8=116 op9=99 op10=97 op11=115
672 ; DUMP-NEXT: op12=116/>
673 ; DUMP-NEXT: <ENTRY op0=24 op1=112 op2=116 op3=114/>
674 ; DUMP-NEXT: <ENTRY op0=25 op1=97 op2=100 op3=100 op4=101 op5=110
675 ; DUMP-NEXT: op6=100 op7=95 op8=112 op9=116 op10=114/>
676 ; DUMP-NEXT: <ENTRY op0=19 op1=83 op2=119 op3=105 op4=116 op5=99
677 ; DUMP-NEXT: op6=104 op7=86 op8=97 op9=114 op10=105 op11=97
678 ; DUMP-NEXT: op12=98 op13=108 op14=101/>
679 ; DUMP-NEXT: <ENTRY op0=0 op1=98 op2=97 op3=114/>
680 ; DUMP-NEXT: <ENTRY op0=33 op1=99 op2=104 op3=97 op4=114/>
681 ; DUMP-NEXT: <ENTRY op0=3 op1=65 op2=108 op3=108 op4=111 op5=99
682 ; DUMP-NEXT: op6=67 op7=97 op8=115 op9=116 op10=83 op11=105
683 ; DUMP-NEXT: op12=109 op13=112 op14=108 op15=101 op16=82 op17=101
684 ; DUMP-NEXT: op18=118 op19=101 op20=114 op21=115 op22=101 op23=100/>
685 ; DUMP-NEXT: <ENTRY op0=22 op1=112 op2=116 op3=114 op4=95 op5=116
686 ; DUMP-NEXT: op6=111 op7=95 op8=102 op9=117 op10=110 op11=99/>
687 ; DUMP-NEXT: <ENTRY op0=12 op1=67 op2=97 op3=115 op4=116 op5=66
688 ; DUMP-NEXT: op6=105 op7=110 op8=111 op9=112/>
689 ; DUMP-NEXT: <ENTRY op0=11 op1=67 op2=97 op3=115 op4=116 op5=65
690 ; DUMP-NEXT: op6=100 op7=100 op8=71 op9=108 op10=111 op11=98
691 ; DUMP-NEXT: op12=97 op13=108/>
692 ; DUMP-NEXT: <ENTRY op0=16 op1=80 op2=104 op3=105 op4=70 op5=111
693 ; DUMP-NEXT: op6=114 op7=119 op8=97 op9=114 op10=100 op11=82
694 ; DUMP-NEXT: op12=101 op13=102 op14=115/>
695 ; DUMP-NEXT: <ENTRY op0=35 op1=98 op2=121 op3=116 op4=101 op5=115/>
696 ; DUMP-NEXT: <ENTRY op0=4 op1=65 op2=108 op3=108 op4=111 op5=99
697 ; DUMP-NEXT: op6=67 op7=97 op8=115 op9=116 op10=68 op11=101
698 ; DUMP-NEXT: op12=108 op13=101 op14=116 op15=101/>
699 ; DUMP-NEXT: <ENTRY op0=14 op1=67 op2=97 op3=115 op4=116 op5=83
700 ; DUMP-NEXT: op6=101 op7=108 op8=101 op9=99 op10=116/>
701 ; DUMP-NEXT: <ENTRY op0=1 op1=102 op2=117 op3=110 op4=99/>
702 ; DUMP-NEXT: <ENTRY op0=21 op1=112 op2=116 op3=114 op4=95 op5=116
703 ; DUMP-NEXT: op6=111 op7=95 op8=112 op9=116 op10=114/>
704 ; DUMP-NEXT: <ENTRY op0=27 op1=97 op2=100 op3=100 op4=101 op5=110
705 ; DUMP-NEXT: op6=100 op7=95 op8=97 op9=114 op10=114 op11=97
706 ; DUMP-NEXT: op12=121 op13=49/>
707 ; DUMP-NEXT: <ENTRY op0=28 op1=97 op2=100 op3=100 op4=101 op5=110
708 ; DUMP-NEXT: op6=100 op7=95 op8=97 op9=114 op10=114 op11=97
709 ; DUMP-NEXT: op12=121 op13=50/>
710 ; DUMP-NEXT: <ENTRY op0=29 op1=97 op2=100 op3=100 op4=101 op5=110
711 ; DUMP-NEXT: op6=100 op7=95 op8=97 op9=114 op10=114 op11=97
712 ; DUMP-NEXT: op12=121 op13=51/>
713 ; DUMP-NEXT: <ENTRY op0=34 op1=115 op2=104 op3=111 op4=114 op5=116/>
714 ; DUMP-NEXT: <ENTRY op0=30 op1=97 op2=100 op3=100 op4=101 op5=110
715 ; DUMP-NEXT: op6=100 op7=95 op8=115 op9=116 op10=114 op11=117
716 ; DUMP-NEXT: op12=99 op13=116 op14=49/>
717 ; DUMP-NEXT: <ENTRY op0=31 op1=97 op2=100 op3=100 op4=101 op5=110
718 ; DUMP-NEXT: op6=100 op7=95 op8=115 op9=116 op10=114 op11=117
719 ; DUMP-NEXT: op12=99 op13=116 op14=50/>
720 ; DUMP-NEXT: <ENTRY op0=13 op1=84 op2=101 op3=115 op4=116 op5=83
721 ; DUMP-NEXT: op6=97 op7=118 op8=101 op9=100 op10=80 op11=116
722 ; DUMP-NEXT: op12=114 op13=84 op14=111 op15=73 op16=110 op17=116/>
723 ; DUMP-NEXT: <ENTRY op0=17 op1=80 op2=104 op3=105 op4=77 op5=101
724 ; DUMP-NEXT: op6=114 op7=103 op8=101 op9=67 op10=97 op11=115
725 ; DUMP-NEXT: op12=116/>
726 ; DUMP-NEXT: <ENTRY op0=8 op1=83 op2=116 op3=111 op4=114 op5=101
727 ; DUMP-NEXT: op6=71 op7=108 op8=111 op9=98 op10=97 op11=108
728 ; DUMP-NEXT: op12=67 op13=97 op14=115 op15=116 op16=115 op17=82
729 ; DUMP-NEXT: op18=101 op19=118 op20=101 op21=114 op22=115 op23=101
730 ; DUMP-NEXT: op24=100/>
731 ; DUMP-NEXT: <ENTRY op0=7 op1=83 op2=116 op3=111 op4=114 op5=101
732 ; DUMP-NEXT: op6=71 op7=108 op8=111 op9=98 op10=97 op11=108/>
733 ; DUMP-NEXT: <ENTRY op0=9 op1=83 op2=116 op3=111 op4=114 op5=101
734 ; DUMP-NEXT: op6=71 op7=108 op8=111 op9=98 op10=97 op11=108
735 ; DUMP-NEXT: op12=67 op13=97 op14=115 op15=116 op16=80 op17=116
736 ; DUMP-NEXT: op18=114 op19=50 op20=73 op21=110 op22=116/>
737 ; DUMP-NEXT: </VALUE_SYMTAB>
738 ; DUMP-NEXT: <FUNCTION_BLOCK>
739 ; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
740 ; DUMP-NEXT: <INST_RET/>
741 ; DUMP-NEXT: </FUNCTION_BLOCK>
742 ; DUMP-NEXT: <FUNCTION_BLOCK>
743 ; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
744 ; DUMP-NEXT: <CONSTANTS_BLOCK>
745 ; DUMP-NEXT: <SETTYPE op0=0/>
746 ; DUMP-NEXT: <INTEGER op0=8/>
747 ; DUMP-NEXT: </CONSTANTS_BLOCK>
748 ; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
749 ; DUMP-NEXT: <INST_STORE op0=3 op1=1 op2=1/>
750 ; DUMP-NEXT: <INST_RET/>
751 ; DUMP-NEXT: </FUNCTION_BLOCK>
752 ; DUMP-NEXT: <FUNCTION_BLOCK>
753 ; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
754 ; DUMP-NEXT: <CONSTANTS_BLOCK>
755 ; DUMP-NEXT: <SETTYPE op0=0/>
756 ; DUMP-NEXT: <INTEGER op0=8/>
757 ; DUMP-NEXT: </CONSTANTS_BLOCK>
758 ; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
759 ; DUMP-NEXT: <INST_STORE op0=3 op1=1 op2=1/>
760 ; DUMP-NEXT: <INST_RET/>
761 ; DUMP-NEXT: </FUNCTION_BLOCK>
762 ; DUMP-NEXT: <FUNCTION_BLOCK>
763 ; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
764 ; DUMP-NEXT: <CONSTANTS_BLOCK>
765 ; DUMP-NEXT: <SETTYPE op0=0/>
766 ; DUMP-NEXT: <INTEGER op0=8/>
767 ; DUMP-NEXT: </CONSTANTS_BLOCK>
768 ; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
769 ; DUMP-NEXT: <INST_ALLOCA op0=2 op1=4/>
770 ; DUMP-NEXT: <INST_RET/>
771 ; DUMP-NEXT: </FUNCTION_BLOCK>
772 ; DUMP-NEXT: <FUNCTION_BLOCK>
773 ; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
774 ; DUMP-NEXT: <CONSTANTS_BLOCK>
775 ; DUMP-NEXT: <SETTYPE op0=0/>
776 ; DUMP-NEXT: <INTEGER op0=8/>
777 ; DUMP-NEXT: </CONSTANTS_BLOCK>
778 ; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
779 ; DUMP-NEXT: <INST_STORE op0=3 op1=1 op2=1/>
780 ; DUMP-NEXT: <INST_STORE op0=3 op1=1 op2=1/>
781 ; DUMP-NEXT: <INST_RET/>
782 ; DUMP-NEXT: </FUNCTION_BLOCK>
783 ; DUMP-NEXT: <FUNCTION_BLOCK>
784 ; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
785 ; DUMP-NEXT: <CONSTANTS_BLOCK>
786 ; DUMP-NEXT: <SETTYPE op0=0/>
787 ; DUMP-NEXT: <INTEGER op0=8/>
788 ; DUMP-NEXT: <INTEGER op0=2/>
789 ; DUMP-NEXT: </CONSTANTS_BLOCK>
790 ; DUMP-NEXT: <INST_ALLOCA op0=2 op1=4/>
791 ; DUMP-NEXT: <INST_BINOP op0=4 op1=2 op2=0/>
792 ; DUMP-NEXT: <INST_STORE op0=6 op1=2 op2=1/>
793 ; DUMP-NEXT: <INST_RET/>
794 ; DUMP-NEXT: </FUNCTION_BLOCK>
795 ; DUMP-NEXT: <FUNCTION_BLOCK>
796 ; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
797 ; DUMP-NEXT: <CONSTANTS_BLOCK>
798 ; DUMP-NEXT: <SETTYPE op0=0/>
799 ; DUMP-NEXT: <INTEGER op0=8/>
800 ; DUMP-NEXT: </CONSTANTS_BLOCK>
801 ; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
802 ; DUMP-NEXT: <INST_STORE op0=1 op1=3 op2=1/>
803 ; DUMP-NEXT: <INST_RET/>
804 ; DUMP-NEXT: </FUNCTION_BLOCK>
805 ; DUMP-NEXT: <FUNCTION_BLOCK>
806 ; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
807 ; DUMP-NEXT: <CONSTANTS_BLOCK>
808 ; DUMP-NEXT: <SETTYPE op0=0/>
809 ; DUMP-NEXT: <INTEGER op0=8/>
810 ; DUMP-NEXT: </CONSTANTS_BLOCK>
811 ; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
812 ; DUMP-NEXT: <INST_STORE op0=1 op1=3 op2=1/>
813 ; DUMP-NEXT: <INST_RET/>
814 ; DUMP-NEXT: </FUNCTION_BLOCK>
815 ; DUMP-NEXT: <FUNCTION_BLOCK>
816 ; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
817 ; DUMP-NEXT: <CONSTANTS_BLOCK>
818 ; DUMP-NEXT: <SETTYPE op0=0/>
819 ; DUMP-NEXT: <INTEGER op0=8/>
820 ; DUMP-NEXT: <INTEGER op0=0/>
821 ; DUMP-NEXT: </CONSTANTS_BLOCK>
822 ; DUMP-NEXT: <INST_ALLOCA op0=2 op1=4/>
823 ; DUMP-NEXT: <INST_STORE op0=1 op1=4 op2=1/>
824 ; DUMP-NEXT: <INST_RET op0=2/>
825 ; DUMP-NEXT: </FUNCTION_BLOCK>
826 ; DUMP-NEXT: <FUNCTION_BLOCK>
827 ; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
828 ; DUMP-NEXT: <CONSTANTS_BLOCK>
829 ; DUMP-NEXT: <SETTYPE op0=0/>
830 ; DUMP-NEXT: <INTEGER op0=2/>
831 ; DUMP-NEXT: <INTEGER op0=4/>
832 ; DUMP-NEXT: <INTEGER op0=8/>
833 ; DUMP-NEXT: </CONSTANTS_BLOCK>
834 ; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
835 ; DUMP-NEXT: <INST_BINOP op0=4 op1=3 op2=0/>
836 ; DUMP-NEXT: <INST_BINOP op0=2 op1=4 op2=0/>
837 ; DUMP-NEXT: <INST_BINOP op0=6 op1=3 op2=0/>
838 ; DUMP-NEXT: <INST_BINOP op0=4 op1=4 op2=0/>
839 ; DUMP-NEXT: <INST_RET/>
840 ; DUMP-NEXT: </FUNCTION_BLOCK>
841 ; DUMP-NEXT: <FUNCTION_BLOCK>
842 ; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
843 ; DUMP-NEXT: <CONSTANTS_BLOCK>
844 ; DUMP-NEXT: <SETTYPE op0=0/>
845 ; DUMP-NEXT: <INTEGER op0=2/>
846 ; DUMP-NEXT: <INTEGER op0=4/>
847 ; DUMP-NEXT: </CONSTANTS_BLOCK>
848 ; DUMP-NEXT: <INST_BINOP op0=2 op1=1 op2=0/>
849 ; DUMP-NEXT: <INST_BINOP op0=4 op1=2 op2=0/>
850 ; DUMP-NEXT: <INST_BINOP op0=4 op1=5 op2=0/>
851 ; DUMP-NEXT: <INST_BINOP op0=6 op1=6 op2=0/>
852 ; DUMP-NEXT: <INST_RET/>
853 ; DUMP-NEXT: </FUNCTION_BLOCK>
854 ; DUMP-NEXT: <FUNCTION_BLOCK>
855 ; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
856 ; DUMP-NEXT: <CONSTANTS_BLOCK>
857 ; DUMP-NEXT: <SETTYPE op0=0/>
858 ; DUMP-NEXT: <INTEGER op0=8/>
859 ; DUMP-NEXT: </CONSTANTS_BLOCK>
860 ; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
861 ; DUMP-NEXT: <INST_BINOP op0=1 op1=3 op2=1/>
862 ; DUMP-NEXT: <INST_BINOP op0=2 op1=4 op2=2/>
863 ; DUMP-NEXT: <INST_BINOP op0=3 op1=5 op2=3/>
864 ; DUMP-NEXT: <INST_BINOP op0=4 op1=6 op2=5/>
865 ; DUMP-NEXT: <INST_BINOP op0=5 op1=7 op2=6/>
866 ; DUMP-NEXT: <INST_BINOP op0=6 op1=8 op2=7/>
867 ; DUMP-NEXT: <INST_BINOP op0=7 op1=9 op2=8/>
868 ; DUMP-NEXT: <INST_BINOP op0=8 op1=10 op2=9/>
869 ; DUMP-NEXT: <INST_BINOP op0=9 op1=11 op2=10/>
870 ; DUMP-NEXT: <INST_BINOP op0=10 op1=12 op2=11/>
871 ; DUMP-NEXT: <INST_BINOP op0=11 op1=13 op2=12/>
872 ; DUMP-NEXT: <INST_RET/>
873 ; DUMP-NEXT: </FUNCTION_BLOCK>
874 ; DUMP-NEXT: <FUNCTION_BLOCK>
875 ; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
876 ; DUMP-NEXT: <CONSTANTS_BLOCK>
877 ; DUMP-NEXT: <SETTYPE op0=0/>
878 ; DUMP-NEXT: <INTEGER op0=8/>
879 ; DUMP-NEXT: <INTEGER op0=0/>
880 ; DUMP-NEXT: </CONSTANTS_BLOCK>
881 ; DUMP-NEXT: <INST_ALLOCA op0=2 op1=4/>
882 ; DUMP-NEXT: <INST_BINOP op0=1 op1=2 op2=0/>
883 ; DUMP-NEXT: <INST_CALL op0=0 op1=40 op2=2/>
884 ; DUMP-NEXT: <INST_RET/>
885 ; DUMP-NEXT: </FUNCTION_BLOCK>
886 ; DUMP-NEXT: <FUNCTION_BLOCK>
887 ; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
888 ; DUMP-NEXT: <CONSTANTS_BLOCK>
889 ; DUMP-NEXT: <SETTYPE op0=0/>
890 ; DUMP-NEXT: <INTEGER op0=2/>
891 ; DUMP-NEXT: <INTEGER op0=4/>
892 ; DUMP-NEXT: <INTEGER op0=8/>
893 ; DUMP-NEXT: <SETTYPE op0=3/>
894 ; DUMP-NEXT: <INTEGER op0=3/>
895 ; DUMP-NEXT: </CONSTANTS_BLOCK>
896 ; DUMP-NEXT: <INST_ALLOCA op0=2 op1=4/>
897 ; DUMP-NEXT: <INST_VSELECT op0=5 op1=4 op2=2/>
898 ; DUMP-NEXT: <INST_VSELECT op0=2 op1=5 op2=3/>
899 ; DUMP-NEXT: <INST_VSELECT op0=7 op1=8 op2=4/>
900 ; DUMP-NEXT: <INST_VSELECT op0=4 op1=9 op2=5/>
901 ; DUMP-NEXT: <INST_VSELECT op0=10 op1=5 op2=6/>
902 ; DUMP-NEXT: <INST_RET/>
903 ; DUMP-NEXT: </FUNCTION_BLOCK>
904 ; DUMP-NEXT: <FUNCTION_BLOCK>
905 ; DUMP-NEXT: <DECLAREBLOCKS op0=4/>
906 ; DUMP-NEXT: <CONSTANTS_BLOCK>
907 ; DUMP-NEXT: <SETTYPE op0=0/>
908 ; DUMP-NEXT: <INTEGER op0=8/>
909 ; DUMP-NEXT: </CONSTANTS_BLOCK>
910 ; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
911 ; DUMP-NEXT: <INST_ALLOCA op0=2 op1=4/>
912 ; DUMP-NEXT: <INST_BR op0=1 op1=2 op2=4/>
913 ; DUMP-NEXT: <INST_LOAD op0=2 op1=0 op2=0/>
914 ; DUMP-NEXT: <INST_BR op0=3/>
915 ; DUMP-NEXT: <INST_LOAD op0=3 op1=0 op2=0/>
916 ; DUMP-NEXT: <INST_BR op0=3/>
917 ; DUMP-NEXT: <INST_PHI op0=0 op1=6 op2=1 op3=6 op4=2/>
918 ; DUMP-NEXT: <INST_PHI op0=0 op1=6 op2=1 op3=4 op4=2/>
919 ; DUMP-NEXT: <INST_RET/>
920 ; DUMP-NEXT: </FUNCTION_BLOCK>
921 ; DUMP-NEXT: <FUNCTION_BLOCK>
922 ; DUMP-NEXT: <DECLAREBLOCKS op0=5/>
923 ; DUMP-NEXT: <CONSTANTS_BLOCK>
924 ; DUMP-NEXT: <SETTYPE op0=0/>
925 ; DUMP-NEXT: <INTEGER op0=8/>
926 ; DUMP-NEXT: </CONSTANTS_BLOCK>
927 ; DUMP-NEXT: <INST_BR op0=4/>
928 ; DUMP-NEXT: <FORWARDTYPEREF op0=43 op1=0/>
929 ; DUMP-NEXT: <INST_PHI op0=0 op1=11 op2=2 op3=11 op4=3/>
930 ; DUMP-NEXT: <FORWARDTYPEREF op0=40 op1=0/>
931 ; DUMP-NEXT: <FORWARDTYPEREF op0=41 op1=0/>
932 ; DUMP-NEXT: <INST_PHI op0=0 op1=3 op2=2 op3=5 op4=3/>
933 ; DUMP-NEXT: <INST_RET/>
934 ; DUMP-NEXT: <FORWARDTYPEREF op0=42 op1=0/>
935 ; DUMP-NEXT: <INST_LOAD op0=4294967294 op1=0 op2=0/>
936 ; DUMP-NEXT: <INST_BR op0=1/>
937 ; DUMP-NEXT: <INST_LOAD op0=4294967295 op1=0 op2=0/>
938 ; DUMP-NEXT: <INST_BR op0=1/>
939 ; DUMP-NEXT: <INST_ALLOCA op0=5 op1=4/>
940 ; DUMP-NEXT: <INST_ALLOCA op0=6 op1=4/>
941 ; DUMP-NEXT: <INST_BR op0=2 op1=3 op2=8/>
942 ; DUMP-NEXT: </FUNCTION_BLOCK>
943 ; DUMP-NEXT: <FUNCTION_BLOCK>
944 ; DUMP-NEXT: <DECLAREBLOCKS op0=4/>
945 ; DUMP-NEXT: <CONSTANTS_BLOCK>
946 ; DUMP-NEXT: <SETTYPE op0=0/>
947 ; DUMP-NEXT: <INTEGER op0=8/>
948 ; DUMP-NEXT: </CONSTANTS_BLOCK>
949 ; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
950 ; DUMP-NEXT: <INST_ALLOCA op0=2 op1=4/>
951 ; DUMP-NEXT: <INST_BR op0=1 op1=2 op2=4/>
952 ; DUMP-NEXT: <INST_LOAD op0=2 op1=0 op2=0/>
953 ; DUMP-NEXT: <INST_BINOP op0=1 op1=2 op2=0/>
954 ; DUMP-NEXT: <INST_BR op0=3/>
955 ; DUMP-NEXT: <INST_LOAD op0=4 op1=0 op2=0/>
956 ; DUMP-NEXT: <INST_BR op0=3/>
957 ; DUMP-NEXT: <INST_PHI op0=0 op1=8 op2=1 op3=8 op4=2/>
958 ; DUMP-NEXT: <INST_PHI op0=0 op1=8 op2=1 op3=4 op4=2/>
959 ; DUMP-NEXT: <INST_RET/>
960 ; DUMP-NEXT: </FUNCTION_BLOCK>
961 ; DUMP-NEXT: <FUNCTION_BLOCK>
962 ; DUMP-NEXT: <DECLAREBLOCKS op0=7/>
963 ; DUMP-NEXT: <CONSTANTS_BLOCK>
964 ; DUMP-NEXT: <SETTYPE op0=0/>
965 ; DUMP-NEXT: <INTEGER op0=8/>
966 ; DUMP-NEXT: </CONSTANTS_BLOCK>
967 ; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
968 ; DUMP-NEXT: <INST_BR op0=1 op1=2 op2=3/>
969 ; DUMP-NEXT: <INST_BR op0=3 op1=4 op2=3/>
970 ; DUMP-NEXT: <INST_BR op0=5 op1=6 op2=3/>
971 ; DUMP-NEXT: <INST_STORE op0=4 op1=1 op2=1/>
972 ; DUMP-NEXT: <INST_STORE op0=4 op1=1 op2=1/>
973 ; DUMP-NEXT: <INST_RET/>
974 ; DUMP-NEXT: <INST_STORE op0=4 op1=1 op2=1/>
975 ; DUMP-NEXT: <INST_STORE op0=4 op1=1 op2=1/>
976 ; DUMP-NEXT: <INST_RET/>
977 ; DUMP-NEXT: <INST_STORE op0=4 op1=1 op2=1/>
978 ; DUMP-NEXT: <INST_STORE op0=4 op1=1 op2=1/>
979 ; DUMP-NEXT: <INST_RET/>
980 ; DUMP-NEXT: <INST_STORE op0=4 op1=1 op2=1/>
981 ; DUMP-NEXT: <INST_STORE op0=4 op1=1 op2=1/>
982 ; DUMP-NEXT: <INST_RET/>
983 ; DUMP-NEXT: </FUNCTION_BLOCK>
984 ; DUMP-NEXT: <FUNCTION_BLOCK>
985 ; DUMP-NEXT: <DECLAREBLOCKS op0=6/>
986 ; DUMP-NEXT: <INST_SWITCH op0=0 op1=1 op2=2 op3=4 op4=1 op5=1
987 ; DUMP-NEXT: op6=2 op7=3 op8=1 op9=1 op10=4 op11=3
988 ; DUMP-NEXT: op12=1 op13=1 op14=8 op15=4 op16=1 op17=1
989 ; DUMP-NEXT: op18=10 op19=4/>
990 ; DUMP-NEXT: <INST_BR op0=5/>
991 ; DUMP-NEXT: <INST_BR op0=5/>
992 ; DUMP-NEXT: <INST_BR op0=5/>
993 ; DUMP-NEXT: <INST_BR op0=5/>
994 ; DUMP-NEXT: <INST_RET/>
995 ; DUMP-NEXT: </FUNCTION_BLOCK>
996 ; DUMP-NEXT:</MODULE_BLOCK>
997
998
OLDNEW
« no previous file with comments | « test/NaCl/Bitcode/bcanalyzer-width.ll ('k') | test/NaCl/Bitcode/bcdist.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698