1 ; RUN: opt -jump-threading -verify %s -disable-output
3 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"
4 target triple = "x86_64-unknown-linux-gnu"
6 %0 = type { i64, [12 x i32] }
8 %2 = type { i32, i32, i32, i32, i32, i32, %3 }
11 %5 = type { %6*, %84, %87, %89, %92, %95, %69, %79*, %102*, %69, %69, %69 }
13 %7 = type { %8, %10, %28, %34, %38, %40, %40, %40, %40, %40, %40, %40, %21*, %21*, %45, %46, %45, %45, %15, %15, %15, %15, %15, %15, %15, %15, %49, %49, %49, %49, %49, %9, %9, %51, %51, %51, %51, %51, %51, %53, %56 }
14 %8 = type { %9, i32, i32 }
16 %10 = type { i32, %11*, i32, i32 }
17 %11 = type { %12, %21* }
18 %12 = type { %13, %15* }
19 %13 = type { i32, %14 }
21 %15 = type { %16, i8, [3 x i8], i32, %6*, %15*, %17, i32, %20* }
22 %16 = type { i32 (...)** }
25 %19 = type { %16**, %16**, %16** }
26 %20 = type { %15*, %16* }
27 %21 = type { %22, %13 }
29 %23 = type { %24, %26*, i32 }
30 %24 = type { i32 (...)**, i8, i8, i8, i16, %25, %26*, %27* }
32 %26 = type { %24*, %26*, %14 }
33 %27 = type { %4, %24* }
34 %28 = type { i32, %29*, i32, i32 }
35 %29 = type { %30, %33* }
37 %31 = type { %32*, %14, i16, i16 }
38 %32 = type { i16, i16, i32, i32 }
39 %33 = type { %22, %31 }
40 %34 = type { %35, %37 }
41 %35 = type { %36*, i32, i32, i32, i32 }
42 %36 = type { i32, %4* }
45 %39 = type { i32 (...)**, i8**, i32, i32 }
46 %40 = type { %16, %41, %41, %41, %45 }
49 %43 = type { %37, %44, i64 }
50 %44 = type { i32, %44*, %44*, %44* }
51 %45 = type { %9, i32, i8 }
52 %46 = type { %47, %24*, i8* }
53 %47 = type { %48, [8 x i8*] }
54 %48 = type { i8**, i32, i32, i32, [1 x i8*] }
57 %51 = type { %52, %41 }
59 %53 = type { i32, %54*, i32, i32 }
60 %54 = type { %24*, %55* }
61 %55 = type { %14, %55*, %24* }
62 %56 = type { %57, %34 }
63 %57 = type { i32, %58*, i32, i32 }
64 %58 = type <{ %59*, [8 x i8], %83 }>
65 %59 = type { %23, %60, %62* }
66 %60 = type { %61, %59* }
68 %62 = type { %24, %63, %65, %67* }
69 %63 = type { %64, %62* }
71 %65 = type { %66, %59* }
73 %67 = type { %68, %70, %72, %74, %79*, %80 }
74 %68 = type { %22, %5*, i32, %69 }
76 %70 = type { %71, %67* }
78 %72 = type { %73, %62* }
80 %74 = type { %75, %77* }
83 %77 = type { %24, %78, %67* }
84 %78 = type { %76, %77* }
85 %79 = type { %34, i32 }
87 %81 = type <{ %9, i32, [4 x i8], %82 }>
88 %82 = type <{ [33 x i8], [31 x i8] }>
89 %83 = type <{ [33 x i8], [63 x i8] }>
91 %85 = type { %68, %86, i8 }
92 %86 = type { %84, %85* }
93 %87 = type { %88, %67* }
96 %90 = type { %68, %91 }
97 %91 = type { %89, %90* }
100 %94 = type { %69*, %69*, %69* }
101 %95 = type { %96, %99* }
103 %97 = type { %98, %99* }
105 %99 = type <{ %100, %97, %5*, %101 }>
106 %100 = type { [52 x i8], i32 }
107 %101 = type <{ [33 x i8], [95 x i8] }>
108 %102 = type { %16, %41, i32 }
110 @_ZL20__gthrw_pthread_oncePiPFvvE = alias weak i32 (i32*, void ()*)* @pthread_once ; <i32 (i32*, void ()*)*> [#uses=0]
111 @_ZL27__gthrw_pthread_getspecificj = alias weak i8* (i32)* @pthread_getspecific ; <i8* (i32)*> [#uses=0]
112 @_ZL27__gthrw_pthread_setspecificjPKv = alias weak i32 (i32, i8*)* @pthread_setspecific ; <i32 (i32, i8*)*> [#uses=0]
113 @_ZL22__gthrw_pthread_createPmPK14pthread_attr_tPFPvS3_ES3_ = alias weak i32 (i64*, %0*, i8* (i8*)*, i8*)* @pthread_create ; <i32 (i64*, %0*, i8* (i8*)*, i8*)*> [#uses=0]
114 @_ZL22__gthrw_pthread_cancelm = alias weak i32 (i64)* @pthread_cancel ; <i32 (i64)*> [#uses=0]
115 @_ZL26__gthrw_pthread_mutex_lockP15pthread_mutex_t = alias weak i32 (%1*)* @pthread_mutex_lock ; <i32 (%1*)*> [#uses=0]
116 @_ZL29__gthrw_pthread_mutex_trylockP15pthread_mutex_t = alias weak i32 (%1*)* @pthread_mutex_trylock ; <i32 (%1*)*> [#uses=0]
117 @_ZL28__gthrw_pthread_mutex_unlockP15pthread_mutex_t = alias weak i32 (%1*)* @pthread_mutex_unlock ; <i32 (%1*)*> [#uses=0]
118 @_ZL26__gthrw_pthread_mutex_initP15pthread_mutex_tPK19pthread_mutexattr_t = alias weak i32 (%1*, %4*)* @pthread_mutex_init ; <i32 (%1*, %4*)*> [#uses=0]
119 @_ZL26__gthrw_pthread_key_createPjPFvPvE = alias weak i32 (i32*, void (i8*)*)* @pthread_key_create ; <i32 (i32*, void (i8*)*)*> [#uses=0]
120 @_ZL26__gthrw_pthread_key_deletej = alias weak i32 (i32)* @pthread_key_delete ; <i32 (i32)*> [#uses=0]
121 @_ZL30__gthrw_pthread_mutexattr_initP19pthread_mutexattr_t = alias weak i32 (%4*)* @pthread_mutexattr_init ; <i32 (%4*)*> [#uses=0]
122 @_ZL33__gthrw_pthread_mutexattr_settypeP19pthread_mutexattr_ti = alias weak i32 (%4*, i32)* @pthread_mutexattr_settype ; <i32 (%4*, i32)*> [#uses=0]
123 @_ZL33__gthrw_pthread_mutexattr_destroyP19pthread_mutexattr_t = alias weak i32 (%4*)* @pthread_mutexattr_destroy ; <i32 (%4*)*> [#uses=0]
125 define fastcc zeroext i8 @_ZN4llvm6Linker11LinkModulesEPNS_6ModuleES2_PSs(%5*, %5*, %69*) nounwind align 2 {
126 br i1 false, label %4, label %5
128 ; <label>:4 ; preds = %3
131 ; <label>:5 ; preds = %3
132 br i1 false, label %6, label %7
134 ; <label>:6 ; preds = %5
137 ; <label>:7 ; preds = %5
138 br i1 false, label %8, label %11
140 ; <label>:8 ; preds = %7
141 br i1 undef, label %10, label %9
143 ; <label>:9 ; preds = %8
146 ; <label>:10 ; preds = %8
149 ; <label>:11 ; preds = %7
150 br i1 undef, label %13, label %12
152 ; <label>:12 ; preds = %11
155 ; <label>:13 ; preds = %11
156 br i1 undef, label %15, label %14
158 ; <label>:14 ; preds = %13
161 ; <label>:15 ; preds = %14, %13
162 br i1 undef, label %17, label %16
164 ; <label>:16 ; preds = %15
167 ; <label>:17 ; preds = %15
168 br i1 undef, label %19, label %18
170 ; <label>:18 ; preds = %17
173 ; <label>:19 ; preds = %17
174 br i1 false, label %20, label %21
176 ; <label>:20 ; preds = %19
179 ; <label>:21 ; preds = %19
180 br i1 undef, label %22, label %23
182 ; <label>:22 ; preds = %21
185 ; <label>:23 ; preds = %22, %21
186 br i1 false, label %24, label %25
188 ; <label>:24 ; preds = %23
191 ; <label>:25 ; preds = %23
192 br i1 undef, label %29, label %26
194 ; <label>:26 ; preds = %25
195 br i1 undef, label %28, label %27
197 ; <label>:27 ; preds = %26
200 ; <label>:28 ; preds = %26
203 ; <label>:29 ; preds = %25
204 br i1 undef, label %31, label %30
206 ; <label>:30 ; preds = %29
209 ; <label>:31 ; preds = %29
210 br i1 undef, label %32, label %33
212 ; <label>:32 ; preds = %31
215 ; <label>:33 ; preds = %32, %31
216 br i1 false, label %34, label %35
218 ; <label>:34 ; preds = %33
221 ; <label>:35 ; preds = %33
222 br i1 undef, label %36, label %37
224 ; <label>:36 ; preds = %35
227 ; <label>:37 ; preds = %36, %35
228 br i1 undef, label %39, label %38
230 ; <label>:38 ; preds = %37
231 br i1 false, label %39, label %40
233 ; <label>:39 ; preds = %38, %37
236 ; <label>:40 ; preds = %38
237 %41 = load i8* undef, align 8 ; <i8> [#uses=1]
238 switch i8 %41, label %42 [
244 ; <label>:42 ; preds = %40
247 ; <label>:43 ; preds = %40, %40, %40
248 %44 = trunc i32 undef to i5 ; <i5> [#uses=1]
249 switch i5 %44, label %45 [
254 ; <label>:45 ; preds = %43
255 br i1 undef, label %47, label %46
257 ; <label>:46 ; preds = %45
260 ; <label>:47 ; preds = %46, %45
261 %48 = icmp eq %85* null, null ; <i1> [#uses=1]
262 br i1 %48, label %50, label %49
264 ; <label>:49 ; preds = %47
267 ; <label>:50 ; preds = %47, %43, %43
268 %51 = phi %68* [ null, %43 ], [ undef, %47 ], [ null, %43 ] ; <%68*> [#uses=4]
269 %52 = phi %68* [ null, %43 ], [ undef, %47 ], [ null, %43 ] ; <%68*> [#uses=1]
270 %53 = icmp eq %68* %52, null ; <i1> [#uses=1]
271 br i1 %53, label %54, label %59
273 ; <label>:54 ; preds = %50
274 %55 = trunc i32 undef to i5 ; <i5> [#uses=1]
275 switch i5 %55, label %56 [
281 ; <label>:56 ; preds = %54
282 br i1 undef, label %58, label %57
284 ; <label>:57 ; preds = %56
287 ; <label>:58 ; preds = %57, %56
290 ; <label>:59 ; preds = %58, %54, %54, %54, %50
291 %60 = phi %68* [ %51, %50 ], [ %51, %54 ], [ %51, %54 ], [ %51, %54 ], [ undef, %58 ] ; <%68*> [#uses=0]
292 br i1 undef, label %62, label %61
294 ; <label>:61 ; preds = %59
297 ; <label>:62 ; preds = %61, %59
298 switch i8 undef, label %64 [
303 ; <label>:63 ; preds = %62
306 ; <label>:64 ; preds = %62
309 ; <label>:65 ; preds = %62
310 switch i8 undef, label %67 [
315 ; <label>:66 ; preds = %65, %65
318 ; <label>:67 ; preds = %65
322 declare i32 @pthread_mutex_trylock(%1*) nounwind
324 declare i32 @pthread_mutex_unlock(%1*) nounwind
326 declare i32 @pthread_mutex_lock(%1*) nounwind
328 declare i32 @pthread_mutexattr_init(%4*) nounwind
330 declare i32 @pthread_mutexattr_settype(%4*, i32) nounwind
332 declare i32 @pthread_mutex_init(%1*, %4*) nounwind
334 declare i32 @pthread_mutexattr_destroy(%4*) nounwind
336 declare i8* @pthread_getspecific(i32) nounwind
338 declare i32 @pthread_setspecific(i32, i8*) nounwind
340 declare i32 @pthread_key_delete(i32) nounwind
342 declare i32 @pthread_key_create(i32*, void (i8*)*) nounwind
344 declare i32 @pthread_once(i32*, void ()*)
346 declare i32 @pthread_create(i64*, %0*, i8* (i8*)*, i8*)
348 declare i32 @pthread_cancel(i64)