Merging r259740:
[oota-llvm.git] / test / CodeGen / PowerPC / 2010-04-01-MachineCSEBug.ll
1 ; RUN: llc < %s -mtriple=powerpc-apple-darwin10.0
2 ; rdar://7819990
3
4 %0 = type { i32 }
5 %1 = type { i64 }
6 %struct.Buffer = type { [1024 x i8], i64, i64, i64 }
7 %struct.InStream = type { %struct.Buffer, %0, %1, i32*, %struct.InStreamMethods* }
8 %struct.InStreamMethods = type { void (%struct.InStream*, i8*, i32)*, void (%struct.InStream*, i64)*, i64 (%struct.InStream*)*, void (%struct.InStream*)* }
9
10 define i64 @t(%struct.InStream* %is) nounwind optsize ssp {
11 entry:
12   br i1 undef, label %is_read_byte.exit, label %bb.i
13
14 bb.i:                                             ; preds = %entry
15   br label %is_read_byte.exit
16
17 is_read_byte.exit:                                ; preds = %bb.i, %entry
18   br i1 undef, label %is_read_byte.exit22, label %bb.i21
19
20 bb.i21:                                           ; preds = %is_read_byte.exit
21   unreachable
22
23 is_read_byte.exit22:                              ; preds = %is_read_byte.exit
24   br i1 undef, label %is_read_byte.exit19, label %bb.i18
25
26 bb.i18:                                           ; preds = %is_read_byte.exit22
27   br label %is_read_byte.exit19
28
29 is_read_byte.exit19:                              ; preds = %bb.i18, %is_read_byte.exit22
30   br i1 undef, label %is_read_byte.exit16, label %bb.i15
31
32 bb.i15:                                           ; preds = %is_read_byte.exit19
33   unreachable
34
35 is_read_byte.exit16:                              ; preds = %is_read_byte.exit19
36   %0 = shl i64 undef, 32                          ; <i64> [#uses=1]
37   br i1 undef, label %is_read_byte.exit13, label %bb.i12
38
39 bb.i12:                                           ; preds = %is_read_byte.exit16
40   unreachable
41
42 is_read_byte.exit13:                              ; preds = %is_read_byte.exit16
43   %1 = shl i64 undef, 24                          ; <i64> [#uses=1]
44   br i1 undef, label %is_read_byte.exit10, label %bb.i9
45
46 bb.i9:                                            ; preds = %is_read_byte.exit13
47   unreachable
48
49 is_read_byte.exit10:                              ; preds = %is_read_byte.exit13
50   %2 = shl i64 undef, 16                          ; <i64> [#uses=1]
51   br i1 undef, label %is_read_byte.exit7, label %bb.i6
52
53 bb.i6:                                            ; preds = %is_read_byte.exit10
54   br label %is_read_byte.exit7
55
56 is_read_byte.exit7:                               ; preds = %bb.i6, %is_read_byte.exit10
57   %3 = shl i64 undef, 8                           ; <i64> [#uses=1]
58   br i1 undef, label %is_read_byte.exit4, label %bb.i3
59
60 bb.i3:                                            ; preds = %is_read_byte.exit7
61   unreachable
62
63 is_read_byte.exit4:                               ; preds = %is_read_byte.exit7
64   %4 = or i64 0, %0                               ; <i64> [#uses=1]
65   %5 = or i64 %4, %1                              ; <i64> [#uses=1]
66   %6 = or i64 %5, %2                              ; <i64> [#uses=1]
67   %7 = or i64 %6, %3                              ; <i64> [#uses=1]
68   %8 = or i64 %7, 0                               ; <i64> [#uses=1]
69   ret i64 %8
70 }