merge two tests and convert to filecheck.
[oota-llvm.git] / test / Transforms / SCCP / 2009-06-03-sccp-structret-undef.ll
1 ; RUN: opt -ipsccp <%s -S | FileCheck %s
2 ; PR4313
3 ; the return value of a multiple-return value invoke must not be left undefined
4 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
5 target triple = "x86_64-unknown-linux-gnu"
6
7 %0 = type <{ %1, %2, [4 x i8], %3 }>
8 %1 = type { i32 (...)**, i32, i32, i32, i32, %1*, i8*, i8*, i8* }
9 %2 = type { i32 }
10 %3 = type <{ %4, %5 }>
11 %4 = type { i32 (...)**, i8 }
12 %5 = type <{ [33 x i8], [191 x i8] }>
13 %6 = type { %1, %7, %10 }
14 %7 = type { %8 }
15 %8 = type { %9 }
16 %9 = type { i8* }
17 %10 = type { %11 }
18 %11 = type { %12 }
19 %12 = type { i32 (...)** }
20 %13 = type { %1, %14, %18, %10 }
21 %14 = type { %15 }
22 %15 = type { %16 }
23 %16 = type { %17 }
24 %17 = type { %8*, %8*, %8* }
25 %18 = type { %19 }
26 %19 = type { %20 }
27 %20 = type { i32*, i32*, i32* }
28 %21 = type { %22, %22 }
29 %22 = type { %23 }
30 %23 = type { %24 }
31 %24 = type { %25, %26, i64 }
32 %25 = type <{ i8 }>
33 %26 = type { i32, %26*, %26*, %26* }
34 %27 = type { %28, %15, i8* }
35 %28 = type { %29 }
36 %29 = type { %30 }
37 %30 = type { %31*, %31*, %31* }
38 %31 = type { %32*, %9 }
39 %32 = type { i32 (...)**, i8*, i8*, i8 }
40 %33 = type { i64, [12 x i32] }
41 %34 = type { %35 }
42 %35 = type { i32, i32, i32, i32, i32, i32, %36 }
43 %36 = type { %36*, %36* }
44 %37 = type { i32, %8, %9, %15, %38, %42 }
45 %38 = type { %39 }
46 %39 = type { %40 }
47 %40 = type { %41*, %41*, %41* }
48 %41 = type { %8, %12*, i32, %12* }
49 %42 = type { %43 }
50 %43 = type { %44 }
51 %44 = type { %37**, %37**, %37** }
52 %45 = type { i32 (...)**, i8*, i8*, i8*, i32, i8 }
53 %46 = type { %47, %37*, %12*, %8, %15, %37*, %50 }
54 %47 = type { %48 }
55 %48 = type { %49 }
56 %49 = type { i8*, i8*, i8* }
57 %50 = type { %51 }
58 %51 = type { %52 }
59 %52 = type { %46**, %46**, %46** }
60 %53 = type { %21*, %54, %63, %63, %22, %22, %22, %22, %22, %22, %37*, %37*, %37*, %72 }
61 %54 = type { %37*, %22, %55, %59, %18 }
62 %55 = type { %56 }
63 %56 = type { %57 }
64 %57 = type { %58*, %58*, %58* }
65 %58 = type { %37*, i32, i32 }
66 %59 = type { %60 }
67 %60 = type { %61 }
68 %61 = type { %62*, %62*, %62* }
69 %62 = type { %37*, %8, %42, %18, i32, i32, i32, %42, %8, %8 }
70 %63 = type { %64 }
71 %64 = type { %65 }
72 %65 = type { %66*, %66*, %66* }
73 %66 = type { %37*, %8, %8, %8, %8, %67, i32, i8, i8, %68 }
74 %67 = type { %18, %42, %18, %42 }
75 %68 = type { %69 }
76 %69 = type { %70 }
77 %70 = type { %71*, %71*, %71* }
78 %71 = type { i32, i32 }
79 %72 = type { %73 }
80 %73 = type { %74 }
81 %74 = type { %75*, %75*, %75* }
82 %75 = type { %76*, %46*, %46*, %42, i32 }
83 %76 = type { %77, %78 }
84 %77 = type { %12, %12* }
85 %78 = type { %79 }
86 %79 = type { %80 }
87 %80 = type { %12**, %12**, %12** }
88 %81 = type { %12, %21*, %53 }
89 %82 = type { %22, %8 }
90 %83 = type { %26, %84 }
91 %84 = type { i32, %22 }
92 %s2i64 = type { i64, i64 }
93 %85 = type { %26* }
94 %86 = type { %27*, i8*, %32*, i8*, i32, %8, i64, i32 }
95 %87 = type { %86, %88, %22, %95* }
96 %88 = type { %89 }
97 %89 = type { %90 }
98 %90 = type { %91*, %91*, %91* }
99 %91 = type { %92 }
100 %92 = type { %93 }
101 %93 = type { %94*, %94*, %94* }
102 %94 = type { %8, %18, %12*, %9 }
103 %95 = type { %37, %42 }
104
105 @_ZNSs4_Rep20_S_empty_rep_storageE = external global [4 x i64] ; <[4 x i64]*> [#uses=1]
106 @.str111723 = external constant [1 x i8], align 1 ; <[1 x i8]*> [#uses=1]
107 @.str181730 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=1]
108 @.str721784 = external constant [37 x i8], align 8 ; <[37 x i8]*> [#uses=1]
109 @_ZN12_GLOBAL__N_16ActionE = external global %0, align 32 ; <%0*> [#uses=1]
110 @_ZN12_GLOBAL__N_114OutputFilenameE = external global %6, align 32 ; <%6*> [#uses=1]
111 @_ZN12_GLOBAL__N_111IncludeDirsE = external global %13, align 32 ; <%13*> [#uses=1]
112 @.str533653 = external constant [2 x i8], align 1 ; <[2 x i8]*> [#uses=1]
113 @_ZN4llvm7RecordsE = external global %21, align 32 ; <%21*> [#uses=2]
114 @_ZL6SrcMgr = external global %27, align 32       ; <%27*> [#uses=2]
115 @.str3723 = external constant [88 x i8], align 8  ; <[88 x i8]*> [#uses=1]
116 @.str13724 = external constant [136 x i8], align 8 ; <[136 x i8]*> [#uses=1]
117
118 @_ZL20__gthrw_pthread_oncePiPFvvE = alias weak i32 (i32*, void ()*)* @pthread_once ; <i32 (i32*, void ()*)*> [#uses=0]
119 @_ZL27__gthrw_pthread_getspecificj = alias weak i8* (i32)* @pthread_getspecific ; <i8* (i32)*> [#uses=0]
120 @_ZL27__gthrw_pthread_setspecificjPKv = alias weak i32 (i32, i8*)* @pthread_setspecific ; <i32 (i32, i8*)*> [#uses=0]
121 @_ZL22__gthrw_pthread_createPmPK14pthread_attr_tPFPvS3_ES3_ = alias weak i32 (i64*, %33*, i8* (i8*)*, i8*)* @pthread_create ; <i32 (i64*, %33*, i8* (i8*)*, i8*)*> [#uses=0]
122 @_ZL22__gthrw_pthread_cancelm = alias weak i32 (i64)* @pthread_cancel ; <i32 (i64)*> [#uses=0]
123 @_ZL26__gthrw_pthread_mutex_lockP15pthread_mutex_t = alias weak i32 (%34*)* @pthread_mutex_lock ; <i32 (%34*)*> [#uses=0]
124 @_ZL29__gthrw_pthread_mutex_trylockP15pthread_mutex_t = alias weak i32 (%34*)* @pthread_mutex_trylock ; <i32 (%34*)*> [#uses=0]
125 @_ZL28__gthrw_pthread_mutex_unlockP15pthread_mutex_t = alias weak i32 (%34*)* @pthread_mutex_unlock ; <i32 (%34*)*> [#uses=0]
126 @_ZL26__gthrw_pthread_mutex_initP15pthread_mutex_tPK19pthread_mutexattr_t = alias weak i32 (%34*, %2*)* @pthread_mutex_init ; <i32 (%34*, %2*)*> [#uses=0]
127 @_ZL26__gthrw_pthread_key_createPjPFvPvE = alias weak i32 (i32*, void (i8*)*)* @pthread_key_create ; <i32 (i32*, void (i8*)*)*> [#uses=0]
128 @_ZL26__gthrw_pthread_key_deletej = alias weak i32 (i32)* @pthread_key_delete ; <i32 (i32)*> [#uses=0]
129 @_ZL30__gthrw_pthread_mutexattr_initP19pthread_mutexattr_t = alias weak i32 (%2*)* @pthread_mutexattr_init ; <i32 (%2*)*> [#uses=0]
130 @_ZL33__gthrw_pthread_mutexattr_settypeP19pthread_mutexattr_ti = alias weak i32 (%2*, i32)* @pthread_mutexattr_settype ; <i32 (%2*, i32)*> [#uses=0]
131 @_ZL33__gthrw_pthread_mutexattr_destroyP19pthread_mutexattr_t = alias weak i32 (%2*)* @pthread_mutexattr_destroy ; <i32 (%2*)*> [#uses=0]
132
133 declare void @_ZNSsC1EPKcRKSaIcE(%8*, i8*, %25*)
134
135 declare i8* @_Znwm(i64)
136
137 declare zeroext i8 @_ZNK4llvm6Record12isSubClassOfENS_9StringRefE(%37*, i64, i64) align 2
138
139 declare i32 @_ZNKSs7compareEPKc(%8*, i8*)
140
141 declare %45* @_ZN4llvm11raw_ostreamlsEPKc(%45*, i8*) align 2
142
143 declare void @_ZNSsC1ERKSs(%8*, %8*)
144
145 declare %26* @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(%26*)
146
147 declare void @_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_(%8* noalias sret, i8*, %8*)
148
149 declare %15* @_ZNSt6vectorISsSaISsEEaSERKS1_(%15*, %15*) align 2
150
151 declare void @_ZNSt6vectorISsSaISsEE9push_backERKSs(%15*, %8*) align 2
152
153 declare i32 @_ZNK4llvm15TreePatternNode10getTypeNumEj(%46*, i32) align 2
154
155 declare void @_ZN4llvm18CodeGenDAGPatternsD1Ev(%53*) align 2
156
157 declare void @_ZN4llvm18CodeGenDAGPatternsC1ERNS_12RecordKeeperE(%53*, %21*) align 2
158
159 declare void @_ZNK4llvm14PatternToMatch17getPredicateCheckEv(%8* noalias sret, %75*) align 2
160
161 define internal void @0(%81*, %45*) align 2 {
162   invoke void @_ZNSsC1ERKSs(%8* undef, %8* null)
163           to label %3 unwind label %28
164
165 ; <label>:3                                       ; preds = %2
166   %4 = getelementptr inbounds i8* null, i64 -24   ; <i8*> [#uses=1]
167   %5 = icmp eq i8* %4, bitcast ([4 x i64]* @_ZNSs4_Rep20_S_empty_rep_storageE to i8*) ; <i1> [#uses=1]
168   br i1 %5, label %7, label %6
169
170 ; <label>:6                                       ; preds = %3
171   unreachable
172
173 ; <label>:7                                       ; preds = %3
174   br i1 undef, label %9, label %8
175
176 ; <label>:8                                       ; preds = %7
177   invoke void @_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_(%8* noalias sret null, i8* getelementptr inbounds ([37 x i8]* @.str721784, i64 0, i64 0), %8* undef)
178           to label %10 unwind label %29
179
180 ; <label>:9                                       ; preds = %7
181   unreachable
182
183 ; <label>:10                                      ; preds = %8
184   invoke void @_ZNSsC1ERKSs(%8* null, %8* null)
185           to label %11 unwind label %30
186
187 ; <label>:11                                      ; preds = %10
188   %12 = invoke %45* @_ZN4llvm11raw_ostreamlsEPKc(%45* %1, i8* getelementptr inbounds ([88 x i8]* @.str3723, i64 0, i64 0))
189           to label %13 unwind label %31           ; <%45*> [#uses=1]
190
191 ; <label>:13                                      ; preds = %11
192   %14 = invoke %45* @_ZN4llvm11raw_ostreamlsEPKc(%45* %12, i8* getelementptr inbounds ([136 x i8]* @.str13724, i64 0, i64 0))
193           to label %15 unwind label %31           ; <%45*> [#uses=0]
194
195 ; <label>:15                                      ; preds = %13
196   %16 = getelementptr inbounds i8* null, i64 -24  ; <i8*> [#uses=1]
197   %17 = icmp eq i8* %16, bitcast ([4 x i64]* @_ZNSs4_Rep20_S_empty_rep_storageE to i8*) ; <i1> [#uses=1]
198   br i1 %17, label %19, label %18
199
200 ; <label>:18                                      ; preds = %15
201   unreachable
202
203 ; <label>:19                                      ; preds = %15
204   %20 = getelementptr inbounds i8* null, i64 -24  ; <i8*> [#uses=1]
205   %21 = icmp eq i8* %20, bitcast ([4 x i64]* @_ZNSs4_Rep20_S_empty_rep_storageE to i8*) ; <i1> [#uses=1]
206   br i1 %21, label %23, label %22
207
208 ; <label>:22                                      ; preds = %19
209   unreachable
210
211 ; <label>:23                                      ; preds = %19
212   invoke void @_ZNSsC1ERKSs(%8* undef, %8* undef)
213           to label %24 unwind label %29
214
215 ; <label>:24                                      ; preds = %23
216   invoke void @_ZNSsC1ERKSs(%8* undef, %8* undef)
217           to label %26 unwind label %25
218
219 ; <label>:25                                      ; preds = %24
220   unreachable
221
222 ; <label>:26                                      ; preds = %24
223   invoke void @f4(%82* undef, %53* undef)
224           to label %27 unwind label %32
225
226 ; <label>:27                                      ; preds = %26
227   unreachable
228
229 ; <label>:28                                      ; preds = %2
230   unreachable
231
232 ; <label>:29                                      ; preds = %23, %8
233   unreachable
234
235 ; <label>:30                                      ; preds = %10
236   unreachable
237
238 ; <label>:31                                      ; preds = %13, %11
239   unreachable
240
241 ; <label>:32                                      ; preds = %26
242   unreachable
243 }
244
245 declare void @_ZNSt3mapISsN12_GLOBAL__N_115InstructionMemoESt4lessISsESaISt4pairIKSsS1_EEED1Ev(%22*) align 2
246
247 declare void @_ZNSt3mapISsN12_GLOBAL__N_115InstructionMemoESt4lessISsESaISt4pairIKSsS1_EEEC1ERKS8_(%22*, %22*) align 2
248
249 declare %83* @_ZNSt8_Rb_treeIN4llvm3MVT15SimpleValueTypeESt4pairIKS2_St3mapISsN12_GLOBAL__N_115InstructionMemoESt4lessISsESaIS3_IKSsS7_EEEESt10_Select1stISE_ES8_IS2_ESaISE_EE14_M_create_nodeERKSE_(%23*, %84*) align 2
250
251 declare %22* @_ZNSt3mapIN12_GLOBAL__N_117OperandsSignatureES_ISsS_IN4llvm3MVT15SimpleValueTypeES_IS4_S_ISsNS0_15InstructionMemoESt4lessISsESaISt4pairIKSsS5_EEES6_IS4_ESaIS8_IKS4_SC_EEESD_SaIS8_ISE_SH_EEES7_SaIS8_IS9_SK_EEES6_IS1_ESaIS8_IKS1_SN_EEEixERSP_(%22*, %14*) align 2
252
253 define internal %22* @1(%22*, i32*) align 2 {
254   unreachable
255 }
256
257 declare void @test(i64);
258
259 define internal %22* @f3(%22*, i32*) align 2 {
260   %3 = alloca %85, align 8                        ; <%85*> [#uses=1]
261   %4 = alloca %84, align 8                        ; <%84*> [#uses=5]
262   invoke void @_ZNSt3mapISsN12_GLOBAL__N_115InstructionMemoESt4lessISsESaISt4pairIKSsS1_EEEC1ERKS8_(%22* undef, %22* undef)
263           to label %5 unwind label %30
264
265 ; <label>:5                                       ; preds = %2
266   %6 = getelementptr inbounds %26* null, i64 1, i32 0 ; <i32*> [#uses=1]
267   %7 = load i32* %6, align 4                      ; <i32> [#uses=0]
268   br i1 false, label %8, label %11
269
270 ; <label>:8                                       ; preds = %5
271   %9 = invoke %83* @_ZNSt8_Rb_treeIN4llvm3MVT15SimpleValueTypeESt4pairIKS2_St3mapISsN12_GLOBAL__N_115InstructionMemoESt4lessISsESaIS3_IKSsS7_EEEESt10_Select1stISE_ES8_IS2_ESaISE_EE14_M_create_nodeERKSE_(%23* undef, %84* %4)
272           to label %10 unwind label %31           ; <%83*> [#uses=0]
273
274 ; <label>:10                                      ; preds = %8
275   unreachable
276
277 ; <label>:11                                      ; preds = %5
278   %12 = getelementptr inbounds %85* %3, i64 0, i32 0 ; <%26**> [#uses=1]
279   %13 = load %26** %12, align 8                   ; <%26*> [#uses=0]
280   br i1 false, label %14, label %17
281
282 ; <label>:14                                      ; preds = %11
283   %15 = invoke %83* @_ZNSt8_Rb_treeIN4llvm3MVT15SimpleValueTypeESt4pairIKS2_St3mapISsN12_GLOBAL__N_115InstructionMemoESt4lessISsESaIS3_IKSsS7_EEEESt10_Select1stISE_ES8_IS2_ESaISE_EE14_M_create_nodeERKSE_(%23* undef, %84* %4)
284           to label %16 unwind label %31           ; <%83*> [#uses=0]
285
286 ; <label>:16                                      ; preds = %14
287   unreachable
288
289 ; <label>:17                                      ; preds = %11
290   %18 = invoke %26* @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(%26* undef)
291           to label %19 unwind label %31           ; <%26*> [#uses=0]
292
293 ; <label>:19                                      ; preds = %17
294   %20 = getelementptr inbounds %84* %4, i64 0, i32 0 ; <i32*> [#uses=1]
295   %21 = load i32* %20, align 8                    ; <i32> [#uses=0]
296   br i1 false, label %22, label %25
297
298 ; <label>:22                                      ; preds = %19
299   %23 = invoke %83* @_ZNSt8_Rb_treeIN4llvm3MVT15SimpleValueTypeESt4pairIKS2_St3mapISsN12_GLOBAL__N_115InstructionMemoESt4lessISsESaIS3_IKSsS7_EEEESt10_Select1stISE_ES8_IS2_ESaISE_EE14_M_create_nodeERKSE_(%23* undef, %84* %4)
300           to label %24 unwind label %31           ; <%83*> [#uses=0]
301
302 ; <label>:24                                      ; preds = %22
303   unreachable
304
305 ; <label>:25                                      ; preds = %19
306   %26 = invoke %s2i64 @f_3(%23* undef, %84* %4)
307           to label %l1 unwind label %31
308
309 ; <label>:27                                      ; preds = %25
310   %eval = extractvalue %s2i64 %inv, 0                   ; <i64> [#uses=0]
311   call void @test(i64 %eval)
312 ; CHECK: = invoke %s2i64 @f_3
313 ; CHECK: %eval = extractvalue %s2i64 %inv, 0
314 ; CHECK-NEXT: call void @test(i64 %eval)
315   invoke void @_ZNSt3mapISsN12_GLOBAL__N_115InstructionMemoESt4lessISsESaISt4pairIKSsS1_EEED1Ev(%22* undef)
316           to label %29 unwind label %30
317
318 l1:
319   %28 = extractvalue %s2i64 %26, 0
320   call void @test(i64 %28)
321 ;CHECK: call void @test(i64 5)
322 ;CHECK-NEXT: %inv = invoke %s2i64 @f2
323   %inv = invoke %s2i64 @f2(%23* undef, %84* %4)
324           to label %27 unwind label %31           ; <%s2i64> [#uses=1]
325
326
327 ; <label>:29                                      ; preds = %27
328   unreachable
329
330 ; <label>:30                                      ; preds = %27, %2
331   unreachable
332
333 ; <label>:31                                      ; preds = %25, %22, %17, %14, %8
334   unreachable
335 }
336 define internal %s2i64 @f2(%23*, %84*) align 2 {
337   br i1 undef, label %3, label %4
338
339 ; <label>:3                                       ; preds = %2
340   br label %4
341
342 ; <label>:4                                       ; preds = %3, %2
343   %5 = insertvalue %s2i64 undef, i64 4, 1        ; <%s2i64> [#uses=1]
344   %6 = ptrtoint %84* %1 to i64
345   %7 = insertvalue %s2i64 %5, i64 %6, 0        ; <%s2i64> [#uses=1]
346   ret %s2i64 %7
347 }
348 define internal %s2i64 @f_3(%23*, %84*) align 2 {
349   br i1 undef, label %3, label %4
350
351 ; <label>:3                                       ; preds = %2
352   br label %4
353
354 ; <label>:4                                       ; preds = %3, %2
355   %5 = insertvalue %s2i64 undef, i64 4, 1        ; <%s2i64> [#uses=1]
356   %6 = insertvalue %s2i64 %5, i64 5, 0        ; <%s2i64> [#uses=1]
357   ret %s2i64 %6
358 }
359
360
361 declare %22* @_ZNSt3mapISsS_IN4llvm3MVT15SimpleValueTypeES_IS2_S_ISsN12_GLOBAL__N_115InstructionMemoESt4lessISsESaISt4pairIKSsS4_EEES5_IS2_ESaIS7_IKS2_SB_EEESC_SaIS7_ISD_SG_EEES6_SaIS7_IS8_SJ_EEEixERS8_(%22*, %8*) align 2
362
363 define internal void @f4(%82*, %53*) align 2 {
364   invoke void @_ZNSsC1ERKSs(%8* undef, %8* undef)
365           to label %3 unwind label %57
366
367 ; <label>:3                                       ; preds = %2
368   br i1 undef, label %6, label %4
369
370 ; <label>:4                                       ; preds = %3
371   br i1 undef, label %5, label %6
372
373 ; <label>:5                                       ; preds = %4
374   br label %6
375
376 ; <label>:6                                       ; preds = %5, %4, %3
377   br i1 undef, label %8, label %7
378
379 ; <label>:7                                       ; preds = %6
380   br i1 undef, label %56, label %9
381
382 ; <label>:8                                       ; preds = %6
383   unreachable
384
385 ; <label>:9                                       ; preds = %7
386   %10 = icmp eq %12* null, null                   ; <i1> [#uses=1]
387   br i1 %10, label %12, label %11
388
389 ; <label>:11                                      ; preds = %9
390   unreachable
391
392 ; <label>:12                                      ; preds = %9
393   %13 = getelementptr inbounds %46* null, i64 0, i32 6, i32 0, i32 0, i32 0 ; <%46***> [#uses=0]
394   %14 = icmp eq i32 0, 0                          ; <i1> [#uses=1]
395   br i1 %14, label %16, label %15
396
397 ; <label>:15                                      ; preds = %12
398   unreachable
399
400 ; <label>:16                                      ; preds = %12
401   br i1 undef, label %19, label %17
402
403 ; <label>:17                                      ; preds = %16
404   %18 = icmp eq %12* null, null                   ; <i1> [#uses=1]
405   br i1 %18, label %21, label %20
406
407 ; <label>:19                                      ; preds = %16
408   unreachable
409
410 ; <label>:20                                      ; preds = %17
411   unreachable
412
413 ; <label>:21                                      ; preds = %17
414   %22 = invoke i32 @_ZNK4llvm15TreePatternNode10getTypeNumEj(%46* null, i32 0)
415           to label %23 unwind label %58           ; <i32> [#uses=0]
416
417 ; <label>:23                                      ; preds = %21
418   %24 = invoke zeroext i8 @_ZNK4llvm6Record12isSubClassOfENS_9StringRefE(%37* undef, i64 undef, i64 undef)
419           to label %25 unwind label %58           ; <i8> [#uses=0]
420
421 ; <label>:25                                      ; preds = %23
422   br i1 undef, label %26, label %27
423
424 ; <label>:26                                      ; preds = %25
425   unreachable
426
427 ; <label>:27                                      ; preds = %25
428   %28 = invoke i8* @_Znwm(i64 24)
429           to label %29 unwind label %59           ; <i8*> [#uses=0]
430
431 ; <label>:29                                      ; preds = %27
432   %30 = icmp eq %12* null, null                   ; <i1> [#uses=1]
433   br i1 %30, label %32, label %31
434
435 ; <label>:31                                      ; preds = %29
436   unreachable
437
438 ; <label>:32                                      ; preds = %29
439   %33 = invoke i32 @_ZNKSs7compareEPKc(%8* undef, i8* getelementptr inbounds ([4 x i8]* @.str181730, i64 0, i64 0))
440           to label %34 unwind label %59           ; <i32> [#uses=1]
441
442 ; <label>:34                                      ; preds = %32
443   %35 = icmp eq i32 %33, 0                        ; <i1> [#uses=1]
444   br i1 %35, label %37, label %36
445
446 ; <label>:36                                      ; preds = %34
447   unreachable
448
449 ; <label>:37                                      ; preds = %34
450   invoke void @_ZNSsC1EPKcRKSaIcE(%8* undef, i8* getelementptr inbounds ([1 x i8]* @.str111723, i64 0, i64 0), %25* undef)
451           to label %38 unwind label %60
452
453 ; <label>:38                                      ; preds = %37
454   invoke void @_ZNSt6vectorISsSaISsEE9push_backERKSs(%15* undef, %8* undef)
455           to label %39 unwind label %61
456
457 ; <label>:39                                      ; preds = %38
458   br i1 undef, label %42, label %40
459
460 ; <label>:40                                      ; preds = %39
461   br i1 undef, label %41, label %42
462
463 ; <label>:41                                      ; preds = %40
464   unreachable
465
466 ; <label>:42                                      ; preds = %40, %39
467   invoke void @_ZNK4llvm14PatternToMatch17getPredicateCheckEv(%8* noalias sret undef, %75* null)
468           to label %43 unwind label %59
469
470 ; <label>:43                                      ; preds = %42
471   %44 = icmp eq %12* null, null                   ; <i1> [#uses=1]
472   br i1 %44, label %46, label %45
473
474 ; <label>:45                                      ; preds = %43
475   unreachable
476
477 ; <label>:46                                      ; preds = %43
478   invoke void @_ZNSsC1ERKSs(%8* undef, %8* undef)
479           to label %47 unwind label %62
480
481 ; <label>:47                                      ; preds = %46
482   %48 = invoke %22* @_ZNSt3mapIN12_GLOBAL__N_117OperandsSignatureES_ISsS_IN4llvm3MVT15SimpleValueTypeES_IS4_S_ISsNS0_15InstructionMemoESt4lessISsESaISt4pairIKSsS5_EEES6_IS4_ESaIS8_IKS4_SC_EEESD_SaIS8_ISE_SH_EEES7_SaIS8_IS9_SK_EEES6_IS1_ESaIS8_IKS1_SN_EEEixERSP_(%22* undef, %14* undef)
483           to label %49 unwind label %63           ; <%22*> [#uses=1]
484
485 ; <label>:49                                      ; preds = %47
486   %50 = invoke %22* @_ZNSt3mapISsS_IN4llvm3MVT15SimpleValueTypeES_IS2_S_ISsN12_GLOBAL__N_115InstructionMemoESt4lessISsESaISt4pairIKSsS4_EEES5_IS2_ESaIS7_IKS2_SB_EEESC_SaIS7_ISD_SG_EEES6_SaIS7_IS8_SJ_EEEixERS8_(%22* %48, %8* undef)
487           to label %51 unwind label %63           ; <%22*> [#uses=1]
488
489 ; <label>:51                                      ; preds = %49
490   %52 = invoke %22* @1(%22* %50, i32* undef)
491           to label %53 unwind label %63           ; <%22*> [#uses=1]
492
493 ; <label>:53                                      ; preds = %51
494   %54 = invoke %22* @f3(%22* %52, i32* undef)
495           to label %55 unwind label %63           ; <%22*> [#uses=0]
496
497 ; <label>:55                                      ; preds = %53
498   unreachable
499
500 ; <label>:56                                      ; preds = %7
501   ret void
502
503 ; <label>:57                                      ; preds = %2
504   unreachable
505
506 ; <label>:58                                      ; preds = %23, %21
507   unreachable
508
509 ; <label>:59                                      ; preds = %42, %32, %27
510   unreachable
511
512 ; <label>:60                                      ; preds = %37
513   unreachable
514
515 ; <label>:61                                      ; preds = %38
516   unreachable
517
518 ; <label>:62                                      ; preds = %46
519   unreachable
520
521 ; <label>:63                                      ; preds = %53, %51, %49, %47
522   unreachable
523 }
524
525 declare i32 @_ZN4llvm7TGLexer8LexTokenEv(%86*) align 2
526
527 declare void @_ZN4llvm8TGParserD1Ev(%87*) align 2
528
529 declare i32 @_ZN4llvm9SourceMgr18AddNewSourceBufferEPNS_12MemoryBufferENS_5SMLocE(%27*, %32*, %9* noalias) align 2
530
531 define i32 @main(i32, i8**) {
532   br i1 undef, label %3, label %4
533
534 ; <label>:3                                       ; preds = %2
535   unreachable
536
537 ; <label>:4                                       ; preds = %2
538   %5 = icmp eq i32 0, 0                           ; <i1> [#uses=1]
539   br i1 %5, label %7, label %6
540
541 ; <label>:6                                       ; preds = %4
542   unreachable
543
544 ; <label>:7                                       ; preds = %4
545   br i1 undef, label %8, label %9
546
547 ; <label>:8                                       ; preds = %7
548   br i1 undef, label %10, label %9
549
550 ; <label>:9                                       ; preds = %8, %7
551   br i1 undef, label %14, label %18
552
553 ; <label>:10                                      ; preds = %8
554   br label %11
555
556 ; <label>:11                                      ; preds = %12, %10
557   br i1 undef, label %12, label %13
558
559 ; <label>:12                                      ; preds = %11
560   br label %11
561
562 ; <label>:13                                      ; preds = %11
563   unreachable
564
565 ; <label>:14                                      ; preds = %9
566   br i1 undef, label %15, label %17
567
568 ; <label>:15                                      ; preds = %14
569   br i1 undef, label %17, label %16
570
571 ; <label>:16                                      ; preds = %15
572   unreachable
573
574 ; <label>:17                                      ; preds = %15, %14
575   unreachable
576
577 ; <label>:18                                      ; preds = %9
578   %19 = invoke i32 @_ZN4llvm9SourceMgr18AddNewSourceBufferEPNS_12MemoryBufferENS_5SMLocE(%27* @_ZL6SrcMgr, %32* undef, %9* noalias undef)
579           to label %20 unwind label %34           ; <i32> [#uses=0]
580
581 ; <label>:20                                      ; preds = %18
582   %21 = invoke %15* @_ZNSt6vectorISsSaISsEEaSERKS1_(%15* getelementptr inbounds (%27* @_ZL6SrcMgr, i64 0, i32 1), %15* getelementptr inbounds (%13* @_ZN12_GLOBAL__N_111IncludeDirsE, i64 0, i32 1, i32 0))
583           to label %22 unwind label %34           ; <%15*> [#uses=0]
584
585 ; <label>:22                                      ; preds = %20
586   %23 = getelementptr inbounds %27* null, i64 0, i32 0, i32 0, i32 0, i32 1 ; <%31**> [#uses=1]
587   %24 = load %31** %23, align 8                   ; <%31*> [#uses=1]
588   %25 = ptrtoint %31* %24 to i64                  ; <i64> [#uses=1]
589   %26 = sub i64 %25, 0                            ; <i64> [#uses=1]
590   %27 = icmp ugt i64 %26, 15                      ; <i1> [#uses=1]
591   br i1 %27, label %29, label %28
592
593 ; <label>:28                                      ; preds = %22
594   unreachable
595
596 ; <label>:29                                      ; preds = %22
597   %30 = invoke i32 @_ZN4llvm7TGLexer8LexTokenEv(%86* undef)
598           to label %31 unwind label %35           ; <i32> [#uses=0]
599
600 ; <label>:31                                      ; preds = %29
601   invoke void @_ZN4llvm8TGParserD1Ev(%87* null)
602           to label %32 unwind label %34
603
604 ; <label>:32                                      ; preds = %31
605   %33 = icmp eq i8 0, 0                           ; <i1> [#uses=1]
606   br i1 %33, label %36, label %56
607
608 ; <label>:34                                      ; preds = %31, %20, %18
609   unreachable
610
611 ; <label>:35                                      ; preds = %29
612   unreachable
613
614 ; <label>:36                                      ; preds = %32
615   %37 = invoke i32 @_ZNKSs7compareEPKc(%8* getelementptr inbounds (%6* @_ZN12_GLOBAL__N_114OutputFilenameE, i64 0, i32 1, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str533653, i64 0, i64 0))
616           to label %38 unwind label %57           ; <i32> [#uses=1]
617
618 ; <label>:38                                      ; preds = %36
619   %39 = icmp eq i32 %37, 0                        ; <i1> [#uses=1]
620   br i1 %39, label %43, label %40
621
622 ; <label>:40                                      ; preds = %38
623   %41 = invoke i8* @_Znwm(i64 56)
624           to label %42 unwind label %58           ; <i8*> [#uses=0]
625
626 ; <label>:42                                      ; preds = %40
627   unreachable
628
629 ; <label>:43                                      ; preds = %38
630   %44 = load i32* getelementptr inbounds (%0* @_ZN12_GLOBAL__N_16ActionE, i64 0, i32 1, i32 0), align 8 ; <i32> [#uses=1]
631   switch i32 %44, label %56 [
632     i32 0, label %45
633     i32 12, label %48
634     i32 13, label %51
635   ]
636
637 ; <label>:45                                      ; preds = %43
638   br i1 undef, label %46, label %47
639
640 ; <label>:46                                      ; preds = %45
641   unreachable
642
643 ; <label>:47                                      ; preds = %45
644   unreachable
645
646 ; <label>:48                                      ; preds = %43
647   invoke void @_ZN4llvm18CodeGenDAGPatternsC1ERNS_12RecordKeeperE(%53* undef, %21* @_ZN4llvm7RecordsE)
648           to label %50 unwind label %49
649
650 ; <label>:49                                      ; preds = %48
651   unreachable
652
653 ; <label>:50                                      ; preds = %48
654   unreachable
655
656 ; <label>:51                                      ; preds = %43
657   invoke void @_ZN4llvm18CodeGenDAGPatternsC1ERNS_12RecordKeeperE(%53* undef, %21* @_ZN4llvm7RecordsE)
658           to label %53 unwind label %52
659
660 ; <label>:52                                      ; preds = %51
661   unreachable
662
663 ; <label>:53                                      ; preds = %51
664   invoke void @0(%81* undef, %45* null)
665           to label %54 unwind label %60
666
667 ; <label>:54                                      ; preds = %53
668   invoke void @_ZN4llvm18CodeGenDAGPatternsD1Ev(%53* undef)
669           to label %55 unwind label %59
670
671 ; <label>:55                                      ; preds = %54
672   unreachable
673
674 ; <label>:56                                      ; preds = %43, %32
675   ret i32 1
676
677 ; <label>:57                                      ; preds = %36
678   unreachable
679
680 ; <label>:58                                      ; preds = %40
681   unreachable
682
683 ; <label>:59                                      ; preds = %54
684   unreachable
685
686 ; <label>:60                                      ; preds = %53
687   unreachable
688 }
689
690 declare i8* @pthread_getspecific(i32) nounwind
691
692 declare i32 @pthread_setspecific(i32, i8*) nounwind
693
694 declare i32 @pthread_key_delete(i32) nounwind
695
696 declare i32 @pthread_key_create(i32*, void (i8*)*) nounwind
697
698 declare i32 @pthread_mutex_trylock(%34*) nounwind
699
700 declare i32 @pthread_mutex_unlock(%34*) nounwind
701
702 declare i32 @pthread_mutex_lock(%34*) nounwind
703
704 declare i32 @pthread_mutexattr_init(%2*) nounwind
705
706 declare i32 @pthread_mutexattr_settype(%2*, i32) nounwind
707
708 declare i32 @pthread_mutex_init(%34*, %2*) nounwind
709
710 declare i32 @pthread_mutexattr_destroy(%2*) nounwind
711
712 declare extern_weak i32 @pthread_once(i32*, void ()*)
713
714 declare extern_weak i32 @pthread_create(i64*, %33*, i8* (i8*)*, i8*)
715
716 declare extern_weak i32 @pthread_cancel(i64)