[opaque pointer type] Add textual IR support for explicit type parameter to gep operator
[oota-llvm.git] / test / CodeGen / X86 / 2009-07-16-CoalescerBug.ll
1 ; RUN: llc < %s -mtriple=x86_64-apple-darwin10
2 ; rdar://7059496
3
4         %struct.brinfo = type <{ %struct.brinfo*, %struct.brinfo*, i8*, i32, i32, i32, i8, i8, i8, i8 }>
5         %struct.cadata = type <{ i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i32, i32, %struct.cmatcher*, i8*, i8*, i8*, i8*, i8*, i8*, i32, i8, i8, i8, i8 }>
6         %struct.cline = type <{ %struct.cline*, i32, i8, i8, i8, i8, i8*, i32, i8, i8, i8, i8, i8*, i32, i8, i8, i8, i8, i8*, i32, i32, %struct.cline*, %struct.cline*, i32, i32 }>
7         %struct.cmatch = type <{ i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i32, i8, i8, i8, i8, i32*, i32*, i8*, i8*, i32, i32, i32, i32, i16, i8, i8, i16, i8, i8 }>
8         %struct.cmatcher = type <{ i32, i8, i8, i8, i8, %struct.cmatcher*, i32, i8, i8, i8, i8, %struct.cpattern*, i32, i8, i8, i8, i8, %struct.cpattern*, i32, i8, i8, i8, i8, %struct.cpattern*, i32, i8, i8, i8, i8, %struct.cpattern*, i32, i8, i8, i8, i8 }>
9         %struct.cpattern = type <{ %struct.cpattern*, i32, i8, i8, i8, i8, %union.anon }>
10         %struct.patprog = type <{ i64, i64, i64, i64, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8 }>
11         %union.anon = type <{ [8 x i8] }>
12
13 define i32 @addmatches(%struct.cadata* %dat, i8** nocapture %argv) nounwind ssp {
14 entry:
15         br i1 undef, label %if.else, label %if.then91
16
17 if.then91:              ; preds = %entry
18         br label %if.end96
19
20 if.else:                ; preds = %entry
21         br label %if.end96
22
23 if.end96:               ; preds = %if.else, %if.then91
24         br i1 undef, label %lor.lhs.false, label %if.then105
25
26 lor.lhs.false:          ; preds = %if.end96
27         br i1 undef, label %if.else139, label %if.then105
28
29 if.then105:             ; preds = %lor.lhs.false, %if.end96
30         unreachable
31
32 if.else139:             ; preds = %lor.lhs.false
33         br i1 undef, label %land.end, label %land.rhs
34
35 land.rhs:               ; preds = %if.else139
36         unreachable
37
38 land.end:               ; preds = %if.else139
39         br i1 undef, label %land.lhs.true285, label %if.then315
40
41 land.lhs.true285:               ; preds = %land.end
42         br i1 undef, label %if.end324, label %if.then322
43
44 if.then315:             ; preds = %land.end
45         unreachable
46
47 if.then322:             ; preds = %land.lhs.true285
48         unreachable
49
50 if.end324:              ; preds = %land.lhs.true285
51         br i1 undef, label %if.end384, label %if.then358
52
53 if.then358:             ; preds = %if.end324
54         unreachable
55
56 if.end384:              ; preds = %if.end324
57         br i1 undef, label %if.end394, label %land.lhs.true387
58
59 land.lhs.true387:               ; preds = %if.end384
60         unreachable
61
62 if.end394:              ; preds = %if.end384
63         br i1 undef, label %if.end498, label %land.lhs.true399
64
65 land.lhs.true399:               ; preds = %if.end394
66         br i1 undef, label %if.end498, label %if.then406
67
68 if.then406:             ; preds = %land.lhs.true399
69         unreachable
70
71 if.end498:              ; preds = %land.lhs.true399, %if.end394
72         br i1 undef, label %if.end514, label %if.then503
73
74 if.then503:             ; preds = %if.end498
75         unreachable
76
77 if.end514:              ; preds = %if.end498
78         br i1 undef, label %if.end585, label %if.then520
79
80 if.then520:             ; preds = %if.end514
81         br i1 undef, label %lor.lhs.false547, label %if.then560
82
83 lor.lhs.false547:               ; preds = %if.then520
84         unreachable
85
86 if.then560:             ; preds = %if.then520
87         br i1 undef, label %if.end585, label %land.lhs.true566
88
89 land.lhs.true566:               ; preds = %if.then560
90         br i1 undef, label %if.end585, label %if.then573
91
92 if.then573:             ; preds = %land.lhs.true566
93         unreachable
94
95 if.end585:              ; preds = %land.lhs.true566, %if.then560, %if.end514
96         br i1 undef, label %cond.true593, label %cond.false599
97
98 cond.true593:           ; preds = %if.end585
99         unreachable
100
101 cond.false599:          ; preds = %if.end585
102         br i1 undef, label %if.end647, label %if.then621
103
104 if.then621:             ; preds = %cond.false599
105         br i1 undef, label %cond.true624, label %cond.false630
106
107 cond.true624:           ; preds = %if.then621
108         br label %if.end647
109
110 cond.false630:          ; preds = %if.then621
111         unreachable
112
113 if.end647:              ; preds = %cond.true624, %cond.false599
114         br i1 undef, label %if.end723, label %if.then701
115
116 if.then701:             ; preds = %if.end647
117         br label %if.end723
118
119 if.end723:              ; preds = %if.then701, %if.end647
120         br i1 undef, label %if.else1090, label %if.then729
121
122 if.then729:             ; preds = %if.end723
123         br i1 undef, label %if.end887, label %if.then812
124
125 if.then812:             ; preds = %if.then729
126         unreachable
127
128 if.end887:              ; preds = %if.then729
129         br i1 undef, label %if.end972, label %if.then893
130
131 if.then893:             ; preds = %if.end887
132         br i1 undef, label %if.end919, label %if.then903
133
134 if.then903:             ; preds = %if.then893
135         unreachable
136
137 if.end919:              ; preds = %if.then893
138         br label %if.end972
139
140 if.end972:              ; preds = %if.end919, %if.end887
141         %sline.0 = phi %struct.cline* [ undef, %if.end919 ], [ null, %if.end887 ]               ; <%struct.cline*> [#uses=5]
142         %bcs.0 = phi i32 [ undef, %if.end919 ], [ 0, %if.end887 ]               ; <i32> [#uses=5]
143         br i1 undef, label %if.end1146, label %land.lhs.true975
144
145 land.lhs.true975:               ; preds = %if.end972
146         br i1 undef, label %if.end1146, label %if.then980
147
148 if.then980:             ; preds = %land.lhs.true975
149         br i1 undef, label %cond.false1025, label %cond.false1004
150
151 cond.false1004:         ; preds = %if.then980
152         unreachable
153
154 cond.false1025:         ; preds = %if.then980
155         br i1 undef, label %if.end1146, label %if.then1071
156
157 if.then1071:            ; preds = %cond.false1025
158         br i1 undef, label %if.then1074, label %if.end1081
159
160 if.then1074:            ; preds = %if.then1071
161         br label %if.end1081
162
163 if.end1081:             ; preds = %if.then1074, %if.then1071
164         %call1083 = call %struct.patprog* @patcompile(i8* undef, i32 0, i8** null) nounwind ssp         ; <%struct.patprog*> [#uses=2]
165         br i1 undef, label %if.end1146, label %if.then1086
166
167 if.then1086:            ; preds = %if.end1081
168         br label %if.end1146
169
170 if.else1090:            ; preds = %if.end723
171         br i1 undef, label %if.end1146, label %land.lhs.true1093
172
173 land.lhs.true1093:              ; preds = %if.else1090
174         br i1 undef, label %if.end1146, label %if.then1098
175
176 if.then1098:            ; preds = %land.lhs.true1093
177         unreachable
178
179 if.end1146:             ; preds = %land.lhs.true1093, %if.else1090, %if.then1086, %if.end1081, %cond.false1025, %land.lhs.true975, %if.end972
180         %cp.0 = phi %struct.patprog* [ %call1083, %if.then1086 ], [ null, %if.end972 ], [ null, %land.lhs.true975 ], [ null, %cond.false1025 ], [ %call1083, %if.end1081 ], [ null, %if.else1090 ], [ null, %land.lhs.true1093 ]                ; <%struct.patprog*> [#uses=1]
181         %sline.1 = phi %struct.cline* [ %sline.0, %if.then1086 ], [ %sline.0, %if.end972 ], [ %sline.0, %land.lhs.true975 ], [ %sline.0, %cond.false1025 ], [ %sline.0, %if.end1081 ], [ null, %if.else1090 ], [ null, %land.lhs.true1093 ]             ; <%struct.cline*> [#uses=1]
182         %bcs.1 = phi i32 [ %bcs.0, %if.then1086 ], [ %bcs.0, %if.end972 ], [ %bcs.0, %land.lhs.true975 ], [ %bcs.0, %cond.false1025 ], [ %bcs.0, %if.end1081 ], [ 0, %if.else1090 ], [ 0, %land.lhs.true1093 ]          ; <i32> [#uses=1]
183         br i1 undef, label %if.end1307, label %do.body1270
184
185 do.body1270:            ; preds = %if.end1146
186         unreachable
187
188 if.end1307:             ; preds = %if.end1146
189         br i1 undef, label %if.end1318, label %if.then1312
190
191 if.then1312:            ; preds = %if.end1307
192         unreachable
193
194 if.end1318:             ; preds = %if.end1307
195         br i1 undef, label %for.cond1330.preheader, label %if.then1323
196
197 if.then1323:            ; preds = %if.end1318
198         unreachable
199
200 for.cond1330.preheader:         ; preds = %if.end1318
201         %call1587 = call i8* @comp_match(i8* undef, i8* undef, i8* undef, %struct.patprog* %cp.0, %struct.cline** undef, i32 0, %struct.brinfo** undef, i32 0, %struct.brinfo** undef, i32 %bcs.1, i32* undef) nounwind ssp             ; <i8*> [#uses=0]
202         %call1667 = call %struct.cmatch* @add_match_data(i32 0, i8* undef, i8* undef, %struct.cline* undef, i8* undef, i8* null, i8* undef, i8* undef, i8* undef, i8* undef, %struct.cline* null, i8* undef, %struct.cline* %sline.1, i8* undef, i32 undef, i32 undef) ssp              ; <%struct.cmatch*> [#uses=0]
203         unreachable
204 }
205
206 declare %struct.patprog* @patcompile(i8*, i32, i8**) ssp
207
208 declare i8* @comp_match(i8*, i8*, i8*, %struct.patprog*, %struct.cline**, i32, %struct.brinfo**, i32, %struct.brinfo**, i32, i32*) ssp
209
210 declare %struct.cmatch* @add_match_data(i32, i8*, i8*, %struct.cline*, i8*, i8*, i8*, i8*, i8*, i8*, %struct.cline*, i8*, %struct.cline*, i8*, i32, i32) nounwind ssp