Stackmap shadows should consider call returns a branch target.
[oota-llvm.git] / test / CodeGen / X86 / 2009-09-22-CoalescerBug.ll
1 ; RUN: llc < %s -mtriple=x86_64-apple-darwin10
2
3 define i32 @main(i32 %argc, i8** nocapture %argv) nounwind ssp {
4 entry:
5   br i1 undef, label %bb, label %bb1
6
7 bb:                                               ; preds = %entry
8   ret i32 3
9
10 bb1:                                              ; preds = %entry
11   br i1 undef, label %bb3, label %bb2
12
13 bb2:                                              ; preds = %bb1
14   ret i32 3
15
16 bb3:                                              ; preds = %bb1
17   br i1 undef, label %bb.i18, label %quantum_getwidth.exit
18
19 bb.i18:                                           ; preds = %bb.i18, %bb3
20   br i1 undef, label %bb.i18, label %quantum_getwidth.exit
21
22 quantum_getwidth.exit:                            ; preds = %bb.i18, %bb3
23   br i1 undef, label %bb4, label %bb6.preheader
24
25 bb4:                                              ; preds = %quantum_getwidth.exit
26   unreachable
27
28 bb6.preheader:                                    ; preds = %quantum_getwidth.exit
29   br i1 undef, label %bb.i1, label %bb1.i2
30
31 bb.i1:                                            ; preds = %bb6.preheader
32   unreachable
33
34 bb1.i2:                                           ; preds = %bb6.preheader
35   br i1 undef, label %bb2.i, label %bb3.i4
36
37 bb2.i:                                            ; preds = %bb1.i2
38   unreachable
39
40 bb3.i4:                                           ; preds = %bb1.i2
41   br i1 undef, label %quantum_new_qureg.exit, label %bb4.i
42
43 bb4.i:                                            ; preds = %bb3.i4
44   unreachable
45
46 quantum_new_qureg.exit:                           ; preds = %bb3.i4
47   br i1 undef, label %bb9, label %bb11.thread
48
49 bb11.thread:                                      ; preds = %quantum_new_qureg.exit
50   %.cast.i = zext i32 undef to i64                ; <i64> [#uses=1]
51   br label %bb.i37
52
53 bb9:                                              ; preds = %quantum_new_qureg.exit
54   unreachable
55
56 bb.i37:                                           ; preds = %bb.i37, %bb11.thread
57   %0 = load i64* undef, align 8                   ; <i64> [#uses=1]
58   %1 = shl i64 %0, %.cast.i                       ; <i64> [#uses=1]
59   store i64 %1, i64* undef, align 8
60   br i1 undef, label %bb.i37, label %quantum_addscratch.exit
61
62 quantum_addscratch.exit:                          ; preds = %bb.i37
63   br i1 undef, label %bb12.preheader, label %bb14
64
65 bb12.preheader:                                   ; preds = %quantum_addscratch.exit
66   unreachable
67
68 bb14:                                             ; preds = %quantum_addscratch.exit
69   br i1 undef, label %bb17, label %bb.nph
70
71 bb.nph:                                           ; preds = %bb14
72   unreachable
73
74 bb17:                                             ; preds = %bb14
75   br i1 undef, label %bb1.i7, label %quantum_measure.exit
76
77 bb1.i7:                                           ; preds = %bb17
78   br label %quantum_measure.exit
79
80 quantum_measure.exit:                             ; preds = %bb1.i7, %bb17
81   switch i32 undef, label %bb21 [
82     i32 -1, label %bb18
83     i32 0, label %bb20
84   ]
85
86 bb18:                                             ; preds = %quantum_measure.exit
87   unreachable
88
89 bb20:                                             ; preds = %quantum_measure.exit
90   unreachable
91
92 bb21:                                             ; preds = %quantum_measure.exit
93   br i1 undef, label %quantum_frac_approx.exit, label %bb1.i
94
95 bb1.i:                                            ; preds = %bb21
96   unreachable
97
98 quantum_frac_approx.exit:                         ; preds = %bb21
99   br i1 undef, label %bb25, label %bb26
100
101 bb25:                                             ; preds = %quantum_frac_approx.exit
102   unreachable
103
104 bb26:                                             ; preds = %quantum_frac_approx.exit
105   br i1 undef, label %quantum_gcd.exit, label %bb.i
106
107 bb.i:                                             ; preds = %bb.i, %bb26
108   br i1 undef, label %quantum_gcd.exit, label %bb.i
109
110 quantum_gcd.exit:                                 ; preds = %bb.i, %bb26
111   br i1 undef, label %bb32, label %bb33
112
113 bb32:                                             ; preds = %quantum_gcd.exit
114   br i1 undef, label %bb.i.i, label %quantum_delete_qureg.exit
115
116 bb.i.i:                                           ; preds = %bb32
117   ret i32 0
118
119 quantum_delete_qureg.exit:                        ; preds = %bb32
120   ret i32 0
121
122 bb33:                                             ; preds = %quantum_gcd.exit
123   unreachable
124 }