2012-07-18-LimitReassociate.ll 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518
  1. ; RUN: opt -loop-reduce -disable-output -debug-only=loop-reduce < %s 2>&1 | FileCheck %s
  2. ; REQUIRES: asserts
  3. ;
  4. ; PR13361: LSR + SCEV "hangs" on reasonably sized test with sequence of loops
  5. ;
  6. ; Without limits on CollectSubexpr, we have thousands of formulae for
  7. ; the use that crosses loops. With limits we have five.
  8. ; CHECK: LSR on loop %bb221:
  9. ; CHECK: After generating reuse formulae:
  10. ; CHECK: LSR is examining the following uses:
  11. ; CHECK: LSR Use: Kind=Special
  12. ; CHECK: {{.*reg\(\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{}}
  13. ; CHECK: {{.*reg\(\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{}}
  14. ; CHECK: {{.*reg\(\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{}}
  15. ; CHECK: {{.*reg\(\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{}}
  16. ; CHECK: {{.*reg\(\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{}}
  17. ; CHECK-NOT:reg
  18. ; CHECK: Filtering for use
  19. ; Provide legal integer types.
  20. target datalayout = "n8:16:32:64"
  21. %struct.snork = type { %struct.fuga, i32, i32, i32, i32, i32, i32 }
  22. %struct.fuga = type { %struct.gork, i64 }
  23. %struct.gork = type { i8*, i32, i32, %struct.noot* }
  24. %struct.noot = type opaque
  25. %struct.jim = type { [5120 x i8], i32, i32, [2048 x i8], i32, [256 x i8] }
  26. @global = external global %struct.snork, align 8
  27. @global1 = external hidden unnamed_addr constant [52 x i8], align 1
  28. @global2 = external hidden unnamed_addr constant [18 x i8], align 1
  29. @global3 = external hidden global %struct.jim, align 32
  30. @global4 = external hidden unnamed_addr constant [40 x i8], align 1
  31. declare void @snork(...) nounwind
  32. declare fastcc void @blarg() nounwind uwtable readonly
  33. define hidden fastcc void @boogle() nounwind uwtable {
  34. bb:
  35. %tmp = trunc i64 0 to i32
  36. %tmp1 = icmp slt i32 %tmp, 2047
  37. %tmp2 = add i32 0, -1
  38. %tmp3 = icmp ult i32 %tmp2, 255
  39. %tmp4 = and i1 %tmp1, %tmp3
  40. br i1 %tmp4, label %bb6, label %bb5
  41. bb5: ; preds = %bb
  42. tail call void (...) @snork(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @global1, i64 0, i64 0), i32 2021) nounwind
  43. tail call void (...) @snork(i8* getelementptr inbounds (%struct.jim, %struct.jim* @global3, i64 0, i32 3, i64 1), i32 -2146631418) nounwind
  44. unreachable
  45. bb6: ; preds = %bb
  46. tail call void @zot(i8* getelementptr inbounds (%struct.jim, %struct.jim* @global3, i64 0, i32 5, i64 0), i8* getelementptr inbounds (%struct.jim, %struct.jim* @global3, i64 0, i32 3, i64 1), i64 undef, i32 1, i1 false) nounwind
  47. %tmp7 = getelementptr inbounds %struct.jim, %struct.jim* @global3, i64 0, i32 5, i64 undef
  48. store i8 0, i8* %tmp7, align 1
  49. %tmp8 = add nsw i32 0, 1
  50. %tmp9 = sext i32 %tmp8 to i64
  51. %tmp10 = add i64 %tmp9, 1
  52. %tmp11 = getelementptr inbounds %struct.jim, %struct.jim* @global3, i64 0, i32 3, i64 %tmp10
  53. %tmp12 = sub i64 2047, %tmp9
  54. %tmp13 = icmp eq i32 undef, 1
  55. br i1 %tmp13, label %bb14, label %bb15
  56. bb14: ; preds = %bb6
  57. tail call fastcc void @blarg()
  58. unreachable
  59. bb15: ; preds = %bb6
  60. %tmp16 = trunc i64 %tmp12 to i32
  61. br label %bb17
  62. bb17: ; preds = %bb26, %bb15
  63. %tmp18 = phi i64 [ %tmp28, %bb26 ], [ 0, %bb15 ]
  64. %tmp19 = phi i32 [ %tmp29, %bb26 ], [ 0, %bb15 ]
  65. %tmp20 = trunc i64 %tmp18 to i32
  66. %tmp21 = icmp slt i32 %tmp20, %tmp16
  67. br i1 %tmp21, label %bb22, label %bb32
  68. bb22: ; preds = %bb17
  69. %tmp23 = getelementptr inbounds %struct.jim, %struct.jim* @global3, i64 0, i32 3, i64 0
  70. %tmp24 = load i8, i8* %tmp23, align 1
  71. %tmp25 = icmp eq i8 %tmp24, 58
  72. br i1 %tmp25, label %bb30, label %bb26
  73. bb26: ; preds = %bb22
  74. %tmp27 = icmp eq i8 %tmp24, 0
  75. %tmp28 = add i64 %tmp18, 1
  76. %tmp29 = add nsw i32 %tmp19, 1
  77. br i1 %tmp27, label %bb32, label %bb17
  78. bb30: ; preds = %bb22
  79. %tmp31 = icmp ult i32 undef, 255
  80. br i1 %tmp31, label %bb33, label %bb32
  81. bb32: ; preds = %bb30, %bb26, %bb17
  82. tail call void (...) @snork(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @global1, i64 0, i64 0), i32 2038) nounwind
  83. tail call void (...) @snork(i8* %tmp11, i32 -2146631418) nounwind
  84. unreachable
  85. bb33: ; preds = %bb30
  86. tail call void @zot(i8* getelementptr inbounds (%struct.jim, %struct.jim* @global3, i64 0, i32 5, i64 0), i8* %tmp11, i64 undef, i32 1, i1 false) nounwind
  87. %tmp34 = getelementptr inbounds %struct.jim, %struct.jim* @global3, i64 0, i32 5, i64 undef
  88. store i8 0, i8* %tmp34, align 1
  89. %tmp35 = add nsw i32 %tmp19, 1
  90. %tmp36 = sext i32 %tmp35 to i64
  91. %tmp37 = add i64 %tmp36, %tmp10
  92. %tmp38 = getelementptr inbounds %struct.jim, %struct.jim* @global3, i64 0, i32 3, i64 %tmp37
  93. %tmp39 = sub i64 %tmp12, %tmp36
  94. br i1 false, label %bb40, label %bb41
  95. bb40: ; preds = %bb33
  96. br label %bb41
  97. bb41: ; preds = %bb40, %bb33
  98. %tmp42 = trunc i64 %tmp39 to i32
  99. br label %bb43
  100. bb43: ; preds = %bb52, %bb41
  101. %tmp44 = phi i64 [ %tmp53, %bb52 ], [ 0, %bb41 ]
  102. %tmp45 = phi i32 [ %tmp54, %bb52 ], [ 0, %bb41 ]
  103. %tmp46 = trunc i64 %tmp44 to i32
  104. %tmp47 = icmp slt i32 %tmp46, %tmp42
  105. br i1 %tmp47, label %bb48, label %bb58
  106. bb48: ; preds = %bb43
  107. %tmp49 = add i64 %tmp44, %tmp37
  108. %tmp50 = load i8, i8* undef, align 1
  109. %tmp51 = icmp eq i8 %tmp50, 58
  110. br i1 %tmp51, label %bb55, label %bb52
  111. bb52: ; preds = %bb48
  112. %tmp53 = add i64 %tmp44, 1
  113. %tmp54 = add nsw i32 %tmp45, 1
  114. br i1 undef, label %bb58, label %bb43
  115. bb55: ; preds = %bb48
  116. %tmp56 = add i32 %tmp45, -1
  117. %tmp57 = icmp ult i32 %tmp56, 255
  118. br i1 %tmp57, label %bb59, label %bb58
  119. bb58: ; preds = %bb55, %bb52, %bb43
  120. tail call void (...) @snork(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @global1, i64 0, i64 0), i32 2055) nounwind
  121. tail call void (...) @snork(i8* %tmp38, i32 -2146631418) nounwind
  122. br label %bb247
  123. bb59: ; preds = %bb55
  124. %tmp60 = sext i32 %tmp45 to i64
  125. tail call void @zot(i8* getelementptr inbounds (%struct.jim, %struct.jim* @global3, i64 0, i32 5, i64 0), i8* %tmp38, i64 %tmp60, i32 1, i1 false) nounwind
  126. %tmp61 = getelementptr inbounds %struct.jim, %struct.jim* @global3, i64 0, i32 5, i64 %tmp60
  127. store i8 0, i8* %tmp61, align 1
  128. %tmp62 = add nsw i32 %tmp45, 1
  129. %tmp63 = sext i32 %tmp62 to i64
  130. %tmp64 = add i64 %tmp63, %tmp37
  131. %tmp65 = sub i64 %tmp39, %tmp63
  132. %tmp66 = icmp eq i32 undef, 2
  133. br i1 %tmp66, label %bb67, label %bb68
  134. bb67: ; preds = %bb59
  135. tail call fastcc void @blarg()
  136. unreachable
  137. bb68: ; preds = %bb59
  138. switch i32 undef, label %bb71 [
  139. i32 0, label %bb74
  140. i32 -1, label %bb69
  141. ]
  142. bb69: ; preds = %bb68
  143. tail call void (...) @snork(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @global1, i64 0, i64 0), i32 2071) nounwind
  144. %tmp70 = load i32, i32* getelementptr inbounds (%struct.snork, %struct.snork* @global, i64 0, i32 2), align 4
  145. unreachable
  146. bb71: ; preds = %bb68
  147. %tmp72 = load i32, i32* getelementptr inbounds (%struct.snork, %struct.snork* @global, i64 0, i32 4), align 4
  148. %tmp73 = icmp eq i32 undef, 0
  149. br i1 %tmp73, label %bb247, label %bb74
  150. bb74: ; preds = %bb71, %bb68
  151. %tmp75 = trunc i64 %tmp65 to i32
  152. br label %bb76
  153. bb76: ; preds = %bb82, %bb74
  154. %tmp77 = phi i64 [ %tmp84, %bb82 ], [ 0, %bb74 ]
  155. %tmp78 = phi i32 [ %tmp85, %bb82 ], [ 0, %bb74 ]
  156. %tmp79 = trunc i64 %tmp77 to i32
  157. %tmp80 = icmp slt i32 %tmp79, %tmp75
  158. br i1 %tmp80, label %bb81, label %bb87
  159. bb81: ; preds = %bb76
  160. br i1 false, label %bb86, label %bb82
  161. bb82: ; preds = %bb81
  162. %tmp83 = icmp eq i8 0, 0
  163. %tmp84 = add i64 %tmp77, 1
  164. %tmp85 = add nsw i32 %tmp78, 1
  165. br i1 %tmp83, label %bb87, label %bb76
  166. bb86: ; preds = %bb81
  167. br i1 undef, label %bb88, label %bb87
  168. bb87: ; preds = %bb86, %bb82, %bb76
  169. unreachable
  170. bb88: ; preds = %bb86
  171. %tmp89 = add nsw i32 %tmp78, 1
  172. %tmp90 = sext i32 %tmp89 to i64
  173. %tmp91 = add i64 %tmp90, %tmp64
  174. %tmp92 = sub i64 %tmp65, %tmp90
  175. br i1 false, label %bb93, label %bb94
  176. bb93: ; preds = %bb88
  177. unreachable
  178. bb94: ; preds = %bb88
  179. %tmp95 = trunc i64 %tmp92 to i32
  180. br label %bb96
  181. bb96: ; preds = %bb102, %bb94
  182. %tmp97 = phi i64 [ %tmp103, %bb102 ], [ 0, %bb94 ]
  183. %tmp98 = phi i32 [ %tmp104, %bb102 ], [ 0, %bb94 ]
  184. %tmp99 = trunc i64 %tmp97 to i32
  185. %tmp100 = icmp slt i32 %tmp99, %tmp95
  186. br i1 %tmp100, label %bb101, label %bb106
  187. bb101: ; preds = %bb96
  188. br i1 undef, label %bb105, label %bb102
  189. bb102: ; preds = %bb101
  190. %tmp103 = add i64 %tmp97, 1
  191. %tmp104 = add nsw i32 %tmp98, 1
  192. br i1 false, label %bb106, label %bb96
  193. bb105: ; preds = %bb101
  194. br i1 undef, label %bb107, label %bb106
  195. bb106: ; preds = %bb105, %bb102, %bb96
  196. br label %bb247
  197. bb107: ; preds = %bb105
  198. %tmp108 = add nsw i32 %tmp98, 1
  199. %tmp109 = sext i32 %tmp108 to i64
  200. %tmp110 = add i64 %tmp109, %tmp91
  201. %tmp111 = sub i64 %tmp92, %tmp109
  202. br i1 false, label %bb112, label %bb113
  203. bb112: ; preds = %bb107
  204. unreachable
  205. bb113: ; preds = %bb107
  206. %tmp114 = trunc i64 %tmp111 to i32
  207. br label %bb115
  208. bb115: ; preds = %bb121, %bb113
  209. %tmp116 = phi i64 [ %tmp122, %bb121 ], [ 0, %bb113 ]
  210. %tmp117 = phi i32 [ %tmp123, %bb121 ], [ 0, %bb113 ]
  211. %tmp118 = trunc i64 %tmp116 to i32
  212. %tmp119 = icmp slt i32 %tmp118, %tmp114
  213. br i1 %tmp119, label %bb120, label %bb125
  214. bb120: ; preds = %bb115
  215. br i1 undef, label %bb124, label %bb121
  216. bb121: ; preds = %bb120
  217. %tmp122 = add i64 %tmp116, 1
  218. %tmp123 = add nsw i32 %tmp117, 1
  219. br i1 false, label %bb125, label %bb115
  220. bb124: ; preds = %bb120
  221. br i1 false, label %bb126, label %bb125
  222. bb125: ; preds = %bb124, %bb121, %bb115
  223. unreachable
  224. bb126: ; preds = %bb124
  225. %tmp127 = add nsw i32 %tmp117, 1
  226. %tmp128 = sext i32 %tmp127 to i64
  227. %tmp129 = add i64 %tmp128, %tmp110
  228. %tmp130 = sub i64 %tmp111, %tmp128
  229. tail call fastcc void @blarg()
  230. br i1 false, label %bb132, label %bb131
  231. bb131: ; preds = %bb126
  232. unreachable
  233. bb132: ; preds = %bb126
  234. %tmp133 = trunc i64 %tmp130 to i32
  235. br label %bb134
  236. bb134: ; preds = %bb140, %bb132
  237. %tmp135 = phi i64 [ %tmp141, %bb140 ], [ 0, %bb132 ]
  238. %tmp136 = phi i32 [ %tmp142, %bb140 ], [ 0, %bb132 ]
  239. %tmp137 = trunc i64 %tmp135 to i32
  240. %tmp138 = icmp slt i32 %tmp137, %tmp133
  241. br i1 %tmp138, label %bb139, label %bb144
  242. bb139: ; preds = %bb134
  243. br i1 false, label %bb143, label %bb140
  244. bb140: ; preds = %bb139
  245. %tmp141 = add i64 %tmp135, 1
  246. %tmp142 = add nsw i32 %tmp136, 1
  247. br i1 false, label %bb144, label %bb134
  248. bb143: ; preds = %bb139
  249. br i1 false, label %bb145, label %bb144
  250. bb144: ; preds = %bb143, %bb140, %bb134
  251. br label %bb247
  252. bb145: ; preds = %bb143
  253. %tmp146 = add nsw i32 %tmp136, 1
  254. %tmp147 = sext i32 %tmp146 to i64
  255. %tmp148 = add i64 %tmp147, %tmp129
  256. %tmp149 = sub i64 %tmp130, %tmp147
  257. switch i32 0, label %bb152 [
  258. i32 0, label %bb150
  259. i32 16, label %bb150
  260. i32 32, label %bb150
  261. i32 48, label %bb150
  262. i32 64, label %bb150
  263. i32 256, label %bb150
  264. i32 4096, label %bb150
  265. ]
  266. bb150: ; preds = %bb145, %bb145, %bb145, %bb145, %bb145, %bb145, %bb145
  267. %tmp151 = trunc i64 %tmp149 to i32
  268. br label %bb153
  269. bb152: ; preds = %bb145
  270. unreachable
  271. bb153: ; preds = %bb160, %bb150
  272. %tmp154 = phi i64 [ %tmp161, %bb160 ], [ 0, %bb150 ]
  273. %tmp155 = phi i32 [ %tmp162, %bb160 ], [ 0, %bb150 ]
  274. %tmp156 = trunc i64 %tmp154 to i32
  275. %tmp157 = icmp slt i32 %tmp156, %tmp151
  276. br i1 %tmp157, label %bb158, label %bb166
  277. bb158: ; preds = %bb153
  278. %tmp159 = add i64 %tmp154, %tmp148
  279. br i1 false, label %bb163, label %bb160
  280. bb160: ; preds = %bb158
  281. %tmp161 = add i64 %tmp154, 1
  282. %tmp162 = add nsw i32 %tmp155, 1
  283. br i1 false, label %bb166, label %bb153
  284. bb163: ; preds = %bb158
  285. %tmp164 = add i32 %tmp155, -1
  286. %tmp165 = icmp ult i32 %tmp164, 255
  287. br i1 %tmp165, label %bb167, label %bb166
  288. bb166: ; preds = %bb163, %bb160, %bb153
  289. unreachable
  290. bb167: ; preds = %bb163
  291. %tmp168 = add nsw i32 %tmp155, 1
  292. %tmp169 = sext i32 %tmp168 to i64
  293. %tmp170 = add i64 %tmp169, %tmp148
  294. %tmp171 = sub i64 %tmp149, %tmp169
  295. br i1 false, label %bb173, label %bb172
  296. bb172: ; preds = %bb167
  297. unreachable
  298. bb173: ; preds = %bb167
  299. %tmp174 = trunc i64 %tmp171 to i32
  300. br label %bb175
  301. bb175: ; preds = %bb181, %bb173
  302. %tmp176 = phi i64 [ %tmp183, %bb181 ], [ 0, %bb173 ]
  303. %tmp177 = phi i32 [ %tmp184, %bb181 ], [ 0, %bb173 ]
  304. %tmp178 = trunc i64 %tmp176 to i32
  305. %tmp179 = icmp slt i32 %tmp178, %tmp174
  306. br i1 %tmp179, label %bb180, label %bb186
  307. bb180: ; preds = %bb175
  308. br i1 false, label %bb185, label %bb181
  309. bb181: ; preds = %bb180
  310. %tmp182 = icmp eq i8 0, 0
  311. %tmp183 = add i64 %tmp176, 1
  312. %tmp184 = add nsw i32 %tmp177, 1
  313. br i1 %tmp182, label %bb186, label %bb175
  314. bb185: ; preds = %bb180
  315. br i1 false, label %bb187, label %bb186
  316. bb186: ; preds = %bb185, %bb181, %bb175
  317. unreachable
  318. bb187: ; preds = %bb185
  319. %tmp188 = add nsw i32 %tmp177, 1
  320. %tmp189 = sext i32 %tmp188 to i64
  321. %tmp190 = sub i64 %tmp171, %tmp189
  322. br i1 false, label %bb192, label %bb191
  323. bb191: ; preds = %bb187
  324. unreachable
  325. bb192: ; preds = %bb187
  326. %tmp193 = trunc i64 %tmp190 to i32
  327. br label %bb194
  328. bb194: ; preds = %bb200, %bb192
  329. %tmp195 = phi i64 [ %tmp201, %bb200 ], [ 0, %bb192 ]
  330. %tmp196 = phi i32 [ %tmp202, %bb200 ], [ 0, %bb192 ]
  331. %tmp197 = trunc i64 %tmp195 to i32
  332. %tmp198 = icmp slt i32 %tmp197, %tmp193
  333. br i1 %tmp198, label %bb199, label %bb204
  334. bb199: ; preds = %bb194
  335. br i1 false, label %bb203, label %bb200
  336. bb200: ; preds = %bb199
  337. %tmp201 = add i64 %tmp195, 1
  338. %tmp202 = add nsw i32 %tmp196, 1
  339. br i1 false, label %bb204, label %bb194
  340. bb203: ; preds = %bb199
  341. br i1 undef, label %bb205, label %bb204
  342. bb204: ; preds = %bb203, %bb200, %bb194
  343. unreachable
  344. bb205: ; preds = %bb203
  345. %tmp206 = add nsw i32 %tmp196, 1
  346. %tmp207 = sext i32 %tmp206 to i64
  347. %tmp208 = add i64 %tmp207, 0
  348. %tmp209 = sub i64 %tmp190, %tmp207
  349. br i1 %tmp13, label %bb210, label %bb211
  350. bb210: ; preds = %bb205
  351. unreachable
  352. bb211: ; preds = %bb205
  353. %tmp212 = trunc i64 %tmp209 to i32
  354. %tmp213 = icmp slt i32 0, %tmp212
  355. br i1 false, label %bb215, label %bb214
  356. bb214: ; preds = %bb211
  357. unreachable
  358. bb215: ; preds = %bb211
  359. %tmp216 = add i64 undef, %tmp208
  360. %tmp217 = sub i64 %tmp209, undef
  361. br i1 false, label %bb218, label %bb219
  362. bb218: ; preds = %bb215
  363. br label %bb219
  364. bb219: ; preds = %bb218, %bb215
  365. %tmp220 = trunc i64 %tmp217 to i32
  366. br label %bb221
  367. bb221: ; preds = %bb230, %bb219
  368. %tmp222 = phi i64 [ %tmp231, %bb230 ], [ 0, %bb219 ]
  369. %tmp223 = phi i32 [ %tmp232, %bb230 ], [ 0, %bb219 ]
  370. %tmp224 = trunc i64 %tmp222 to i32
  371. %tmp225 = icmp slt i32 %tmp224, %tmp220
  372. br i1 %tmp225, label %bb226, label %bb234
  373. bb226: ; preds = %bb221
  374. %tmp227 = add i64 %tmp222, %tmp216
  375. %tmp228 = getelementptr inbounds %struct.jim, %struct.jim* @global3, i64 0, i32 3, i64 %tmp227
  376. %tmp229 = load i8, i8* %tmp228, align 1
  377. br i1 false, label %bb233, label %bb230
  378. bb230: ; preds = %bb226
  379. %tmp231 = add i64 %tmp222, 1
  380. %tmp232 = add nsw i32 %tmp223, 1
  381. br i1 undef, label %bb234, label %bb221
  382. bb233: ; preds = %bb226
  383. br i1 undef, label %bb235, label %bb234
  384. bb234: ; preds = %bb233, %bb230, %bb221
  385. br label %bb247
  386. bb235: ; preds = %bb233
  387. %tmp236 = add nsw i32 %tmp223, 1
  388. %tmp237 = sext i32 %tmp236 to i64
  389. %tmp238 = sub i64 %tmp217, %tmp237
  390. br i1 %tmp66, label %bb239, label %bb240
  391. bb239: ; preds = %bb235
  392. unreachable
  393. bb240: ; preds = %bb235
  394. switch i32 0, label %bb244 [
  395. i32 0, label %bb241
  396. i32 1, label %bb241
  397. i32 4, label %bb241
  398. i32 6, label %bb241
  399. i32 9, label %bb241
  400. ]
  401. bb241: ; preds = %bb240, %bb240, %bb240, %bb240, %bb240
  402. %tmp242 = trunc i64 %tmp238 to i32
  403. %tmp243 = icmp slt i32 0, %tmp242
  404. br i1 false, label %bb246, label %bb245
  405. bb244: ; preds = %bb240
  406. unreachable
  407. bb245: ; preds = %bb241
  408. unreachable
  409. bb246: ; preds = %bb241
  410. unreachable
  411. bb247: ; preds = %bb234, %bb144, %bb106, %bb71, %bb58
  412. ret void
  413. }
  414. declare void @zot(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind