Guest User

Untitled

a guest
Feb 25th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 114.46 KB | None | 0 0
  1. ; ModuleID = 'bad-position-simple.bad_position_simple3.rcgu.no-opt.bc'
  2. source_filename = "bad_position_simple3-317d481089b8c8fe83113de504472633.rs"
  3. target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
  4. target triple = "x86_64-unknown-linux-gnu"
  5.  
  6. %"core::option::Option<usize>" = type { [0 x i64], i64, [1 x i64] }
  7. %"core::option::Option<usize>::Some" = type { [1 x i64], i64, [0 x i64] }
  8. %"core::result::Result<usize, usize>" = type { [0 x i64], i64, [1 x i64] }
  9. %"core::result::Result<usize, usize>::Err" = type { [1 x i64], i64, [0 x i64] }
  10. %"core::fmt::Arguments" = type { [0 x i64], { [0 x { [0 x i8]*, i64 }]*, i64 }, [0 x i64], %"core::option::Option<&[core::fmt::rt::v1::Argument]>", [0 x i64], { [0 x { i8*, i8* }]*, i64 }, [0 x i64] }
  11. %"core::option::Option<&[core::fmt::rt::v1::Argument]>" = type { [0 x i64], {}*, [1 x i64] }
  12. %"core::fmt::rt::v1::Argument" = type { [0 x i64], %"core::fmt::rt::v1::Position", [0 x i64], %"core::fmt::rt::v1::FormatSpec", [0 x i64] }
  13. %"core::fmt::rt::v1::Position" = type { [0 x i64], i64, [1 x i64] }
  14. %"core::fmt::rt::v1::FormatSpec" = type { [0 x i64], %"core::fmt::rt::v1::Count", [0 x i64], %"core::fmt::rt::v1::Count", [0 x i32], i32, [0 x i32], i32, [0 x i8], i8, [7 x i8] }
  15. %"core::fmt::rt::v1::Count" = type { [0 x i64], i64, [1 x i64] }
  16. %"core::option::Option<isize>" = type { [0 x i64], i64, [1 x i64] }
  17. %"core::option::Option<isize>::Some" = type { [1 x i64], i64, [0 x i64] }
  18. %"core::marker::PhantomData<&u32>" = type {}
  19. %"core::slice::{{impl}}::position::{{closure}}<u32, import_path_to_string::{{closure}}>" = type { [0 x i8], %"import_path_to_string::{{closure}}", [0 x i8] }
  20. %"import_path_to_string::{{closure}}" = type {}
  21. %"core::result::Result<usize, usize>::Ok" = type { [1 x i64], i64, [0 x i64] }
  22. %"unwind::libunwind::_Unwind_Exception" = type { [0 x i64], i64, [0 x i64], void (i32, %"unwind::libunwind::_Unwind_Exception"*)*, [0 x i64], [6 x i64], [0 x i64] }
  23. %"unwind::libunwind::_Unwind_Context" = type { [0 x i8] }
  24. %"core::fmt::Formatter" = type { [0 x i64], %"core::option::Option<usize>", [0 x i64], %"core::option::Option<usize>", [0 x i64], { {}*, {}* }, [0 x i64], { i64*, i64* }, [0 x i64], { [0 x { i8*, i8* }]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i8], i8, [7 x i8] }
  25.  
  26. @str.0 = internal constant [40 x i8] c"/home/alex/code/rust4/src/libcore/ptr.rs"
  27. @str.1 = internal constant [25 x i8] c"attempt to divide by zero"
  28. @panic_loc.2 = private unnamed_addr constant { { [0 x i8]*, i64 }, { [0 x i8]*, i64 }, i32, i32 } { { [0 x i8]*, i64 } { [0 x i8]* bitcast ([25 x i8]* @str.1 to [0 x i8]*), i64 25 }, { [0 x i8]*, i64 } { [0 x i8]* bitcast ([40 x i8]* @str.0 to [0 x i8]*), i64 40 }, i32 699, i32 18 }, align 8
  29. @str.3 = internal constant [31 x i8] c"attempt to divide with overflow"
  30. @panic_loc.4 = private unnamed_addr constant { { [0 x i8]*, i64 }, { [0 x i8]*, i64 }, i32, i32 } { { [0 x i8]*, i64 } { [0 x i8]* bitcast ([31 x i8]* @str.3 to [0 x i8]*), i64 31 }, { [0 x i8]*, i64 } { [0 x i8]* bitcast ([40 x i8]* @str.0 to [0 x i8]*), i64 40 }, i32 699, i32 18 }, align 8
  31. @str.5 = internal constant [46 x i8] c"/home/alex/code/rust4/src/libcore/slice/mod.rs"
  32. @panic_loc.6 = private unnamed_addr constant { { [0 x i8]*, i64 }, { [0 x i8]*, i64 }, i32, i32 } { { [0 x i8]*, i64 } { [0 x i8]* bitcast ([25 x i8]* @str.1 to [0 x i8]*), i64 25 }, { [0 x i8]*, i64 } { [0 x i8]* bitcast ([46 x i8]* @str.5 to [0 x i8]*), i64 46 }, i32 1343, i32 23 }, align 8
  33. @str.7 = internal constant [28 x i8] c"attempt to add with overflow"
  34. @panic_loc.8 = private unnamed_addr constant { { [0 x i8]*, i64 }, { [0 x i8]*, i64 }, i32, i32 } { { [0 x i8]*, i64 } { [0 x i8]* bitcast ([28 x i8]* @str.7 to [0 x i8]*), i64 28 }, { [0 x i8]*, i64 } { [0 x i8]* bitcast ([46 x i8]* @str.5 to [0 x i8]*), i64 46 }, i32 1252, i32 31 }, align 8
  35. @str.9 = internal constant [33 x i8] c"attempt to subtract with overflow"
  36. @panic_loc.a = private unnamed_addr constant { { [0 x i8]*, i64 }, { [0 x i8]*, i64 }, i32, i32 } { { [0 x i8]*, i64 } { [0 x i8]* bitcast ([33 x i8]* @str.9 to [0 x i8]*), i64 33 }, { [0 x i8]*, i64 } { [0 x i8]* bitcast ([46 x i8]* @str.5 to [0 x i8]*), i64 46 }, i32 903, i32 68 }, align 8
  37. @ref.b = private unnamed_addr constant [1 x i32] [i32 1], align 4
  38. @ref.c = private unnamed_addr constant [0 x i32] zeroinitializer, align 4
  39. @str.d = internal constant [22 x i8] c"bad-position-simple.rs"
  40. @panic_bounds_check_loc.e = private unnamed_addr constant { { [0 x i8]*, i64 }, i32, i32 } { { [0 x i8]*, i64 } { [0 x i8]* bitcast ([22 x i8]* @str.d to [0 x i8]*), i64 22 }, i32 8, i32 39 }, align 8
  41. @str.f = internal constant [0 x i8] zeroinitializer
  42. @ref.g = private unnamed_addr constant [1 x { [0 x i8]*, i64 }] [{ [0 x i8]*, i64 } { [0 x i8]* @str.f, i64 0 }], align 8
  43. @ref.h = private unnamed_addr constant { { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], { [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] }, [0 x i8] } } { { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], { [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] }, [0 x i8] } { [0 x i8] undef, { i64, [0 x i8], i64, [0 x i8] } { i64 1, [0 x i8] undef, i64 0, [0 x i8] undef }, [0 x i8] undef, { [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] } { [0 x i8] undef, <{ i64, [8 x i8] }> <{ i64 3, [8 x i8] undef }>, [0 x i8] undef, <{ i64, [8 x i8] }> <{ i64 3, [8 x i8] undef }>, [0 x i8] undef, i32 32, [0 x i8] undef, i32 0, [0 x i8] undef, i8 3, [7 x i8] undef }, [0 x i8] undef } }, align 8
  44. @const.i = private unnamed_addr constant { { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], { [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] }, [0 x i8] } }* @ref.h, align 8
  45. @ref.j = private unnamed_addr constant { [0 x i8], { [0 x i8]*, i64 }, [0 x i8], i32, [0 x i8], i32, [0 x i8] } { [0 x i8] undef, { [0 x i8]*, i64 } { [0 x i8]* bitcast ([22 x i8]* @str.d to [0 x i8]*), i64 22 }, [0 x i8] undef, i32 14, [0 x i8] undef, i32 13, [0 x i8] undef }, align 8
  46. @const.k = private unnamed_addr constant { [0 x i8], { [0 x i8]*, i64 }, [0 x i8], i32, [0 x i8], i32, [0 x i8] }* @ref.j, align 8
  47. @panic_loc.l = private unnamed_addr constant { { [0 x i8]*, i64 }, { [0 x i8]*, i64 }, i32, i32 } { { [0 x i8]*, i64 } { [0 x i8]* bitcast ([28 x i8]* @str.7 to [0 x i8]*), i64 28 }, { [0 x i8]*, i64 } { [0 x i8]* bitcast ([22 x i8]* @str.d to [0 x i8]*), i64 22 }, i32 10, i32 43 }, align 8
  48. @panic_loc.m = private unnamed_addr constant { { [0 x i8]*, i64 }, { [0 x i8]*, i64 }, i32, i32 } { { [0 x i8]*, i64 } { [0 x i8]* bitcast ([28 x i8]* @str.7 to [0 x i8]*), i64 28 }, { [0 x i8]*, i64 } { [0 x i8]* bitcast ([22 x i8]* @str.d to [0 x i8]*), i64 22 }, i32 10, i32 70 }, align 8
  49.  
  50. ; Function Attrs: inlinehint uwtable
  51. define internal { [0 x i32]*, i64 } @"_ZN101_$LT$core..ops..range..RangeTo$LT$usize$GT$$u20$as$u20$core..slice..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h078f68a8309cb374E"(i64, [0 x i32]* noalias nonnull readonly, i64) unnamed_addr #0 {
  52. %4 = alloca { i64, i64 }, align 8
  53. %5 = bitcast { i64, i64 }* %4 to i8*
  54. call void @llvm.lifetime.start.p0i8(i64 16, i8* %5)
  55. %6 = bitcast { i64, i64 }* %4 to i64*
  56. store i64 0, i64* %6, align 8
  57. %7 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %4, i32 0, i32 1
  58. store i64 %0, i64* %7, align 8
  59. %8 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %4, i32 0, i32 0
  60. %9 = load i64, i64* %8, align 8
  61. %10 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %4, i32 0, i32 1
  62. %11 = load i64, i64* %10, align 8
  63. %12 = call { [0 x i32]*, i64 } @"_ZN99_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5697259416355b17E"(i64 %9, i64 %11, [0 x i32]* noalias nonnull readonly %1, i64 %2)
  64. %13 = extractvalue { [0 x i32]*, i64 } %12, 0
  65. %14 = extractvalue { [0 x i32]*, i64 } %12, 1
  66. br label %15
  67.  
  68. ; <label>:15: ; preds = %3
  69. %16 = bitcast { i64, i64 }* %4 to i8*
  70. call void @llvm.lifetime.end.p0i8(i64 16, i8* %16)
  71. %17 = insertvalue { [0 x i32]*, i64 } undef, [0 x i32]* %13, 0
  72. %18 = insertvalue { [0 x i32]*, i64 } %17, i64 %14, 1
  73. ret { [0 x i32]*, i64 } %18
  74. }
  75.  
  76. ; Function Attrs: inlinehint uwtable
  77. define internal { [0 x i32]*, i64 } @"_ZN103_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h10a46beecb6fa85fE"(i64, [0 x i32]* noalias nonnull readonly, i64) unnamed_addr #0 {
  78. %4 = alloca { i64, i64 }, align 8
  79. %5 = bitcast { i64, i64 }* %4 to i8*
  80. call void @llvm.lifetime.start.p0i8(i64 16, i8* %5)
  81. %6 = call i64 @"_ZN53_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..SliceExt$GT$3len17he70cfd9d37ed05efE"([0 x i32]* noalias nonnull readonly %1, i64 %2)
  82. br label %7
  83.  
  84. ; <label>:7: ; preds = %3
  85. %8 = bitcast { i64, i64 }* %4 to i64*
  86. store i64 %0, i64* %8, align 8
  87. %9 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %4, i32 0, i32 1
  88. store i64 %6, i64* %9, align 8
  89. %10 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %4, i32 0, i32 0
  90. %11 = load i64, i64* %10, align 8
  91. %12 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %4, i32 0, i32 1
  92. %13 = load i64, i64* %12, align 8
  93. %14 = call { [0 x i32]*, i64 } @"_ZN99_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5697259416355b17E"(i64 %11, i64 %13, [0 x i32]* noalias nonnull readonly %1, i64 %2)
  94. %15 = extractvalue { [0 x i32]*, i64 } %14, 0
  95. %16 = extractvalue { [0 x i32]*, i64 } %14, 1
  96. br label %17
  97.  
  98. ; <label>:17: ; preds = %7
  99. %18 = bitcast { i64, i64 }* %4 to i8*
  100. call void @llvm.lifetime.end.p0i8(i64 16, i8* %18)
  101. %19 = insertvalue { [0 x i32]*, i64 } undef, [0 x i32]* %15, 0
  102. %20 = insertvalue { [0 x i32]*, i64 } %19, i64 %16, 1
  103. ret { [0 x i32]*, i64 } %20
  104. }
  105.  
  106. ; Function Attrs: inlinehint uwtable
  107. define internal void @"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$3map17hac95c6f09e5eb2e1E"(%"core::option::Option<usize>"* noalias nocapture sret dereferenceable(16), %"core::option::Option<usize>"* noalias nocapture dereferenceable(16), i64* noalias readonly dereferenceable(8)) unnamed_addr #0 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality {
  108. %4 = alloca { i8*, i32 }, align 8
  109. %5 = alloca i8, align 1
  110. %6 = alloca i8, align 1
  111. %7 = alloca i64, align 8
  112. store i8 0, i8* %6, align 1
  113. store i8 0, i8* %5, align 1
  114. store i8 1, i8* %6, align 1
  115. store i8 1, i8* %5, align 1
  116. %8 = bitcast %"core::option::Option<usize>"* %1 to i64*
  117. %9 = load i64, i64* %8, align 8, !range !1
  118. %10 = bitcast %"core::option::Option<usize>"* %1 to i64*
  119. %11 = load i64, i64* %10, align 8, !range !1
  120. switch i64 %11, label %22 [
  121. i64 0, label %20
  122. i64 1, label %23
  123. ]
  124.  
  125. ; <label>:12: ; preds = %45, %44, %41
  126. %13 = bitcast { i8*, i32 }* %4 to i8**
  127. %14 = load i8*, i8** %13, align 8
  128. %15 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 1
  129. %16 = load i32, i32* %15, align 4
  130. %17 = bitcast { i8*, i32 }* %4 to i8*
  131. call void @llvm.lifetime.end.p0i8(i64 16, i8* %17)
  132. %18 = insertvalue { i8*, i32 } undef, i8* %14, 0
  133. %19 = insertvalue { i8*, i32 } %18, i32 %16, 1
  134. resume { i8*, i32 } %19
  135.  
  136. ; <label>:20: ; preds = %3
  137. %21 = bitcast %"core::option::Option<usize>"* %0 to i64*
  138. store i64 0, i64* %21, align 8
  139. br label %35
  140.  
  141. ; <label>:22: ; preds = %3
  142. unreachable
  143.  
  144. ; <label>:23: ; preds = %3
  145. store i8 0, i8* %6, align 1
  146. %24 = bitcast %"core::option::Option<usize>"* %1 to %"core::option::Option<usize>::Some"*
  147. %25 = getelementptr inbounds %"core::option::Option<usize>::Some", %"core::option::Option<usize>::Some"* %24, i32 0, i32 1
  148. %26 = load i64, i64* %25, align 8
  149. store i8 0, i8* %5, align 1
  150. %27 = bitcast i64* %7 to i8*
  151. call void @llvm.lifetime.start.p0i8(i64 8, i8* %27)
  152. store i64 %26, i64* %7, align 8
  153. %28 = load i64, i64* %7, align 8
  154. %29 = invoke i64 @"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17hab0db5dfbde4de17E"(i64* noalias readonly dereferenceable(8) %2, i64 %28)
  155. to label %30 unwind label %56
  156.  
  157. ; <label>:30: ; preds = %23
  158. %31 = bitcast i64* %7 to i8*
  159. call void @llvm.lifetime.end.p0i8(i64 8, i8* %31)
  160. %32 = bitcast %"core::option::Option<usize>"* %0 to %"core::option::Option<usize>::Some"*
  161. %33 = getelementptr inbounds %"core::option::Option<usize>::Some", %"core::option::Option<usize>::Some"* %32, i32 0, i32 1
  162. store i64 %29, i64* %33, align 8
  163. %34 = bitcast %"core::option::Option<usize>"* %0 to i64*
  164. store i64 1, i64* %34, align 8
  165. br label %35
  166.  
  167. ; <label>:35: ; preds = %30, %20
  168. %36 = load i8, i8* %5, align 1, !range !2
  169. %37 = trunc i8 %36 to i1
  170. br i1 %37, label %49, label %38
  171.  
  172. ; <label>:38: ; preds = %49, %35
  173. %39 = bitcast %"core::option::Option<usize>"* %1 to i64*
  174. %40 = load i64, i64* %39, align 8, !range !1
  175. switch i64 %40, label %55 [
  176. i64 1, label %51
  177. ]
  178.  
  179. ; <label>:41: ; preds = %46
  180. %42 = load i8, i8* %6, align 1, !range !2
  181. %43 = trunc i8 %42 to i1
  182. br i1 %43, label %44, label %12
  183.  
  184. ; <label>:44: ; preds = %41
  185. store i8 0, i8* %6, align 1
  186. br label %12
  187.  
  188. ; <label>:45: ; preds = %46
  189. br label %12
  190.  
  191. ; <label>:46: ; preds = %56
  192. %47 = bitcast %"core::option::Option<usize>"* %1 to i64*
  193. %48 = load i64, i64* %47, align 8, !range !1
  194. switch i64 %48, label %45 [
  195. i64 1, label %41
  196. ]
  197.  
  198. ; <label>:49: ; preds = %35
  199. store i8 0, i8* %5, align 1
  200. br label %38
  201.  
  202. ; <label>:50: ; preds = %55, %54, %51
  203. ret void
  204.  
  205. ; <label>:51: ; preds = %38
  206. %52 = load i8, i8* %6, align 1, !range !2
  207. %53 = trunc i8 %52 to i1
  208. br i1 %53, label %54, label %50
  209.  
  210. ; <label>:54: ; preds = %51
  211. store i8 0, i8* %6, align 1
  212. br label %50
  213.  
  214. ; <label>:55: ; preds = %38
  215. br label %50
  216.  
  217. ; <label>:56: ; preds = %23
  218. %57 = landingpad { i8*, i32 }
  219. cleanup
  220. %58 = bitcast { i8*, i32 }* %4 to i8*
  221. call void @llvm.lifetime.start.p0i8(i64 16, i8* %58)
  222. %59 = extractvalue { i8*, i32 } %57, 0
  223. %60 = extractvalue { i8*, i32 } %57, 1
  224. %61 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 0
  225. store i8* %59, i8** %61, align 8
  226. %62 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 1
  227. store i32 %60, i32* %62, align 8
  228. br label %46
  229. }
  230.  
  231. ; Function Attrs: inlinehint uwtable
  232. define internal void @"_ZN47_$LT$core..result..Result$LT$T$C$$u20$E$GT$$GT$3err17h7575ad3e8a4fc754E"(%"core::option::Option<usize>"* noalias nocapture sret dereferenceable(16), %"core::result::Result<usize, usize>"* noalias nocapture dereferenceable(16)) unnamed_addr #0 {
  233. %3 = alloca i8, align 1
  234. store i8 0, i8* %3, align 1
  235. store i8 1, i8* %3, align 1
  236. %4 = bitcast %"core::result::Result<usize, usize>"* %1 to i64*
  237. %5 = load i64, i64* %4, align 8, !range !1
  238. %6 = bitcast %"core::result::Result<usize, usize>"* %1 to i64*
  239. %7 = load i64, i64* %6, align 8, !range !1
  240. switch i64 %7, label %10 [
  241. i64 0, label %8
  242. i64 1, label %11
  243. ]
  244.  
  245. ; <label>:8: ; preds = %2
  246. %9 = bitcast %"core::option::Option<usize>"* %0 to i64*
  247. store i64 0, i64* %9, align 8
  248. br label %18
  249.  
  250. ; <label>:10: ; preds = %2
  251. unreachable
  252.  
  253. ; <label>:11: ; preds = %2
  254. store i8 0, i8* %3, align 1
  255. %12 = bitcast %"core::result::Result<usize, usize>"* %1 to %"core::result::Result<usize, usize>::Err"*
  256. %13 = getelementptr inbounds %"core::result::Result<usize, usize>::Err", %"core::result::Result<usize, usize>::Err"* %12, i32 0, i32 1
  257. %14 = load i64, i64* %13, align 8
  258. %15 = bitcast %"core::option::Option<usize>"* %0 to %"core::option::Option<usize>::Some"*
  259. %16 = getelementptr inbounds %"core::option::Option<usize>::Some", %"core::option::Option<usize>::Some"* %15, i32 0, i32 1
  260. store i64 %14, i64* %16, align 8
  261. %17 = bitcast %"core::option::Option<usize>"* %0 to i64*
  262. store i64 1, i64* %17, align 8
  263. br label %18
  264.  
  265. ; <label>:18: ; preds = %11, %8
  266. %19 = bitcast %"core::result::Result<usize, usize>"* %1 to i64*
  267. %20 = load i64, i64* %19, align 8, !range !1
  268. switch i64 %20, label %26 [
  269. i64 1, label %22
  270. ]
  271.  
  272. ; <label>:21: ; preds = %26, %25, %22
  273. ret void
  274.  
  275. ; <label>:22: ; preds = %18
  276. %23 = load i8, i8* %3, align 1, !range !2
  277. %24 = trunc i8 %23 to i1
  278. br i1 %24, label %25, label %21
  279.  
  280. ; <label>:25: ; preds = %22
  281. store i8 0, i8* %3, align 1
  282. br label %21
  283.  
  284. ; <label>:26: ; preds = %18
  285. br label %21
  286. }
  287.  
  288. ; Function Attrs: inlinehint uwtable
  289. define internal void @_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E(%"core::fmt::Arguments"* noalias nocapture sret dereferenceable(48), [0 x { [0 x i8]*, i64 }]* noalias nonnull readonly, i64, [0 x { i8*, i8* }]* noalias nonnull readonly, i64, [0 x %"core::fmt::rt::v1::Argument"]* noalias nonnull readonly, i64) unnamed_addr #0 {
  290. %8 = alloca %"core::option::Option<&[core::fmt::rt::v1::Argument]>", align 8
  291. %9 = bitcast %"core::option::Option<&[core::fmt::rt::v1::Argument]>"* %8 to i8*
  292. call void @llvm.lifetime.start.p0i8(i64 16, i8* %9)
  293. %10 = bitcast %"core::option::Option<&[core::fmt::rt::v1::Argument]>"* %8 to { i64*, i64 }*
  294. %11 = bitcast { i64*, i64 }* %10 to { [0 x %"core::fmt::rt::v1::Argument"]*, i64 }*
  295. %12 = getelementptr inbounds { [0 x %"core::fmt::rt::v1::Argument"]*, i64 }, { [0 x %"core::fmt::rt::v1::Argument"]*, i64 }* %11, i32 0, i32 0
  296. store [0 x %"core::fmt::rt::v1::Argument"]* %5, [0 x %"core::fmt::rt::v1::Argument"]** %12, align 8
  297. %13 = getelementptr inbounds { [0 x %"core::fmt::rt::v1::Argument"]*, i64 }, { [0 x %"core::fmt::rt::v1::Argument"]*, i64 }* %11, i32 0, i32 1
  298. store i64 %6, i64* %13, align 8
  299. %14 = bitcast %"core::fmt::Arguments"* %0 to { [0 x { [0 x i8]*, i64 }]*, i64 }*
  300. %15 = getelementptr inbounds { [0 x { [0 x i8]*, i64 }]*, i64 }, { [0 x { [0 x i8]*, i64 }]*, i64 }* %14, i32 0, i32 0
  301. store [0 x { [0 x i8]*, i64 }]* %1, [0 x { [0 x i8]*, i64 }]** %15, align 8
  302. %16 = getelementptr inbounds { [0 x { [0 x i8]*, i64 }]*, i64 }, { [0 x { [0 x i8]*, i64 }]*, i64 }* %14, i32 0, i32 1
  303. store i64 %2, i64* %16, align 8
  304. %17 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %0, i32 0, i32 3
  305. %18 = bitcast %"core::option::Option<&[core::fmt::rt::v1::Argument]>"* %8 to i8*
  306. %19 = bitcast %"core::option::Option<&[core::fmt::rt::v1::Argument]>"* %17 to i8*
  307. call void @llvm.memcpy.p0i8.p0i8.i64(i8* %19, i8* %18, i64 16, i32 8, i1 false)
  308. %20 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %0, i32 0, i32 5
  309. %21 = getelementptr inbounds { [0 x { i8*, i8* }]*, i64 }, { [0 x { i8*, i8* }]*, i64 }* %20, i32 0, i32 0
  310. store [0 x { i8*, i8* }]* %3, [0 x { i8*, i8* }]** %21, align 8
  311. %22 = getelementptr inbounds { [0 x { i8*, i8* }]*, i64 }, { [0 x { i8*, i8* }]*, i64 }* %20, i32 0, i32 1
  312. store i64 %4, i64* %22, align 8
  313. %23 = bitcast %"core::option::Option<&[core::fmt::rt::v1::Argument]>"* %8 to i8*
  314. call void @llvm.lifetime.end.p0i8(i64 16, i8* %23)
  315. ret void
  316. }
  317.  
  318. ; Function Attrs: inlinehint uwtable
  319. define internal i64 @_ZN4core3mem7size_of17h1d6b4cc7f7420375E() unnamed_addr #0 {
  320. %1 = alloca i64, align 8
  321. %2 = bitcast i64* %1 to i8*
  322. call void @llvm.lifetime.start.p0i8(i64 8, i8* %2)
  323. store i64 4, i64* %1, align 8
  324. %3 = load i64, i64* %1, align 8
  325. %4 = bitcast i64* %1 to i8*
  326. call void @llvm.lifetime.end.p0i8(i64 8, i8* %4)
  327. br label %5
  328.  
  329. ; <label>:5: ; preds = %0
  330. ret i64 %3
  331. }
  332.  
  333. ; Function Attrs: inlinehint uwtable
  334. define internal i64 @"_ZN4core3num23_$LT$impl$u20$isize$GT$12wrapping_sub17h0d8b1ee1946e0e7eE"(i64, i64) unnamed_addr #0 {
  335. %3 = alloca i64, align 8
  336. %4 = bitcast i64* %3 to i8*
  337. call void @llvm.lifetime.start.p0i8(i64 8, i8* %4)
  338. %5 = sub i64 %0, %1
  339. store i64 %5, i64* %3, align 8
  340. %6 = load i64, i64* %3, align 8
  341. %7 = bitcast i64* %3 to i8*
  342. call void @llvm.lifetime.end.p0i8(i64 8, i8* %7)
  343. br label %8
  344.  
  345. ; <label>:8: ; preds = %2
  346. ret i64 %6
  347. }
  348.  
  349. ; Function Attrs: inlinehint uwtable
  350. define internal i64 @"_ZN4core3num23_$LT$impl$u20$usize$GT$12wrapping_sub17h25b775332ef31d00E"(i64, i64) unnamed_addr #0 {
  351. %3 = alloca i64, align 8
  352. %4 = bitcast i64* %3 to i8*
  353. call void @llvm.lifetime.start.p0i8(i64 8, i8* %4)
  354. %5 = sub i64 %0, %1
  355. store i64 %5, i64* %3, align 8
  356. %6 = load i64, i64* %3, align 8
  357. %7 = bitcast i64* %3 to i8*
  358. call void @llvm.lifetime.end.p0i8(i64 8, i8* %7)
  359. br label %8
  360.  
  361. ; <label>:8: ; preds = %2
  362. ret i64 %6
  363. }
  364.  
  365. ; Function Attrs: inlinehint uwtable
  366. define internal i8* @"_ZN4core3ptr31_$LT$impl$u20$$BP$mut$u20$T$GT$15wrapping_offset17ha2ba679b8b637d52E"(i8*, i64) unnamed_addr #0 {
  367. %3 = alloca i8*, align 8
  368. %4 = bitcast i8** %3 to i8*
  369. call void @llvm.lifetime.start.p0i8(i64 8, i8* %4)
  370. %5 = getelementptr i8, i8* %0, i64 %1
  371. store i8* %5, i8** %3, align 8
  372. %6 = load i8*, i8** %3, align 8
  373. %7 = bitcast i8** %3 to i8*
  374. call void @llvm.lifetime.end.p0i8(i64 8, i8* %7)
  375. br label %8
  376.  
  377. ; <label>:8: ; preds = %2
  378. ret i8* %6
  379. }
  380.  
  381. ; Function Attrs: inlinehint uwtable
  382. define internal i32* @"_ZN4core3ptr33_$LT$impl$u20$$BP$const$u20$T$GT$6offset17h2db78cc51ca12da6E"(i32*, i64) unnamed_addr #0 {
  383. %3 = alloca i32*, align 8
  384. %4 = bitcast i32** %3 to i8*
  385. call void @llvm.lifetime.start.p0i8(i64 8, i8* %4)
  386. %5 = getelementptr inbounds i32, i32* %0, i64 %1
  387. store i32* %5, i32** %3, align 8
  388. %6 = load i32*, i32** %3, align 8
  389. %7 = bitcast i32** %3 to i8*
  390. call void @llvm.lifetime.end.p0i8(i64 8, i8* %7)
  391. br label %8
  392.  
  393. ; <label>:8: ; preds = %2
  394. ret i32* %6
  395. }
  396.  
  397. ; Function Attrs: inlinehint uwtable
  398. define internal zeroext i1 @"_ZN4core3ptr33_$LT$impl$u20$$BP$const$u20$T$GT$7is_null17h364a758ace70a8a3E"(i32*) unnamed_addr #0 {
  399. %2 = bitcast i32* %0 to i8*
  400. %3 = call i8* @_ZN4core3ptr4null17h78c18f9f5259760aE()
  401. br label %4
  402.  
  403. ; <label>:4: ; preds = %1
  404. %5 = icmp eq i8* %2, %3
  405. ret i1 %5
  406. }
  407.  
  408. ; Function Attrs: inlinehint uwtable
  409. define internal void @"_ZN4core3ptr33_$LT$impl$u20$$BP$const$u20$T$GT$9offset_to17h84ef24894944509aE"(%"core::option::Option<isize>"* noalias nocapture sret dereferenceable(16), i32*, i32*) unnamed_addr #0 {
  410. %4 = call i64 @_ZN4core3mem7size_of17h1d6b4cc7f7420375E()
  411. br label %5
  412.  
  413. ; <label>:5: ; preds = %3
  414. %6 = icmp eq i64 %4, 0
  415. br i1 %6, label %7, label %9
  416.  
  417. ; <label>:7: ; preds = %5
  418. %8 = bitcast %"core::option::Option<isize>"* %0 to i64*
  419. store i64 0, i64* %8, align 8
  420. br label %27
  421.  
  422. ; <label>:9: ; preds = %5
  423. %10 = ptrtoint i32* %2 to i64
  424. %11 = ptrtoint i32* %1 to i64
  425. %12 = call i64 @"_ZN4core3num23_$LT$impl$u20$isize$GT$12wrapping_sub17h0d8b1ee1946e0e7eE"(i64 %10, i64 %11)
  426. br label %13
  427.  
  428. ; <label>:13: ; preds = %9
  429. %14 = icmp ule i64 %4, -1
  430. call void @llvm.assume(i1 %14)
  431. %15 = icmp eq i64 %4, 0
  432. %16 = call i1 @llvm.expect.i1(i1 %15, i1 false)
  433. br i1 %16, label %28, label %17
  434.  
  435. ; <label>:17: ; preds = %13
  436. %18 = icmp eq i64 %4, -1
  437. %19 = icmp eq i64 %12, -9223372036854775808
  438. %20 = and i1 %18, %19
  439. %21 = call i1 @llvm.expect.i1(i1 %20, i1 false)
  440. br i1 %21, label %29, label %22
  441.  
  442. ; <label>:22: ; preds = %17
  443. %23 = sdiv i64 %12, %4
  444. %24 = bitcast %"core::option::Option<isize>"* %0 to %"core::option::Option<isize>::Some"*
  445. %25 = getelementptr inbounds %"core::option::Option<isize>::Some", %"core::option::Option<isize>::Some"* %24, i32 0, i32 1
  446. store i64 %23, i64* %25, align 8
  447. %26 = bitcast %"core::option::Option<isize>"* %0 to i64*
  448. store i64 1, i64* %26, align 8
  449. br label %27
  450.  
  451. ; <label>:27: ; preds = %22, %7
  452. ret void
  453.  
  454. ; <label>:28: ; preds = %13
  455. call void @_ZN4core9panicking5panic17hfefa0158f97fa77bE({ [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(40) bitcast ({ { [0 x i8]*, i64 }, { [0 x i8]*, i64 }, i32, i32 }* @panic_loc.2 to { [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*))
  456. unreachable
  457.  
  458. ; <label>:29: ; preds = %17
  459. call void @_ZN4core9panicking5panic17hfefa0158f97fa77bE({ [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(40) bitcast ({ { [0 x i8]*, i64 }, { [0 x i8]*, i64 }, i32, i32 }* @panic_loc.4 to { [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*))
  460. unreachable
  461. }
  462.  
  463. ; Function Attrs: inlinehint uwtable
  464. define internal i8* @_ZN4core3ptr4null17h78c18f9f5259760aE() unnamed_addr #0 {
  465. call void @llvm.assume(i1 true)
  466. ret i8* null
  467. }
  468.  
  469. ; Function Attrs: alwaysinline uwtable
  470. define internal i32* @_ZN4core5slice10PointerExt8post_inc17hc9f8b6822179ed09E(i32** dereferenceable(8)) unnamed_addr #1 {
  471. %2 = load i32*, i32** %0, align 8
  472. %3 = load i32*, i32** %0, align 8
  473. %4 = call i32* @"_ZN59_$LT$$BP$const$u20$T$u20$as$u20$core..slice..PointerExt$GT$12slice_offset17h7aa1452c7557c220E"(i32* %3, i64 1)
  474. br label %5
  475.  
  476. ; <label>:5: ; preds = %1
  477. store i32* %4, i32** %0, align 8
  478. ret i32* %2
  479. }
  480.  
  481. ; Function Attrs: alwaysinline uwtable
  482. define internal i64 @_ZN4core5slice11ptrdistance17h036ab170e59738e1E(i32*, i32*) unnamed_addr #1 {
  483. %3 = alloca %"core::option::Option<isize>", align 8
  484. %4 = alloca i64, align 8
  485. %5 = bitcast %"core::option::Option<isize>"* %3 to i8*
  486. call void @llvm.lifetime.start.p0i8(i64 16, i8* %5)
  487. call void @"_ZN4core3ptr33_$LT$impl$u20$$BP$const$u20$T$GT$9offset_to17h84ef24894944509aE"(%"core::option::Option<isize>"* noalias nocapture sret dereferenceable(16) %3, i32* %0, i32* %1)
  488. br label %6
  489.  
  490. ; <label>:6: ; preds = %2
  491. %7 = bitcast %"core::option::Option<isize>"* %3 to i64*
  492. %8 = load i64, i64* %7, align 8, !range !1
  493. %9 = bitcast %"core::option::Option<isize>"* %3 to i64*
  494. %10 = load i64, i64* %9, align 8, !range !1
  495. switch i64 %10, label %15 [
  496. i64 0, label %11
  497. i64 1, label %16
  498. ]
  499.  
  500. ; <label>:11: ; preds = %6
  501. %12 = ptrtoint i32* %1 to i64
  502. %13 = ptrtoint i32* %0 to i64
  503. %14 = call i64 @"_ZN4core3num23_$LT$impl$u20$usize$GT$12wrapping_sub17h25b775332ef31d00E"(i64 %12, i64 %13)
  504. store i64 %14, i64* %4, align 8
  505. br label %24
  506.  
  507. ; <label>:15: ; preds = %6
  508. unreachable
  509.  
  510. ; <label>:16: ; preds = %6
  511. %17 = bitcast %"core::option::Option<isize>"* %3 to %"core::option::Option<isize>::Some"*
  512. %18 = getelementptr inbounds %"core::option::Option<isize>::Some", %"core::option::Option<isize>::Some"* %17, i32 0, i32 1
  513. %19 = load i64, i64* %18, align 8
  514. %20 = icmp ule i64 %19, -1
  515. call void @llvm.assume(i1 %20)
  516. store i64 %19, i64* %4, align 8
  517. br label %21
  518.  
  519. ; <label>:21: ; preds = %24, %16
  520. %22 = bitcast %"core::option::Option<isize>"* %3 to i8*
  521. call void @llvm.lifetime.end.p0i8(i64 16, i8* %22)
  522. %23 = load i64, i64* %4, align 8
  523. ret i64 %23
  524.  
  525. ; <label>:24: ; preds = %11
  526. br label %21
  527. }
  528.  
  529. ; Function Attrs: inlinehint uwtable
  530. define internal i64 @_ZN4core5slice13size_from_ptr17h73637563565851c6E(i32*) unnamed_addr #0 {
  531. %2 = call i64 @_ZN4core3mem7size_of17h1d6b4cc7f7420375E()
  532. br label %3
  533.  
  534. ; <label>:3: ; preds = %1
  535. ret i64 %2
  536. }
  537.  
  538. ; Function Attrs: inlinehint uwtable
  539. define internal { [0 x i32]*, i64 } @_ZN4core5slice14from_raw_parts17hacb157bb9f25ba37E(i32*, i64) unnamed_addr #0 {
  540. %3 = alloca { [0 x i32]*, i64 }, align 8
  541. %4 = alloca { i32*, i64 }, align 8
  542. %5 = bitcast { i32*, i64 }* %4 to i8*
  543. call void @llvm.lifetime.start.p0i8(i64 16, i8* %5)
  544. %6 = bitcast { i32*, i64 }* %4 to i32**
  545. store i32* %0, i32** %6, align 8
  546. %7 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %4, i32 0, i32 1
  547. store i64 %1, i64* %7, align 8
  548. %8 = bitcast { [0 x i32]*, i64 }* %3 to i8*
  549. call void @llvm.lifetime.start.p0i8(i64 16, i8* %8)
  550. %9 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %4, i32 0, i32 0
  551. %10 = load i32*, i32** %9, align 8
  552. %11 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %4, i32 0, i32 1
  553. %12 = load i64, i64* %11, align 8
  554. %13 = bitcast { [0 x i32]*, i64 }* %3 to { i32*, i64 }*
  555. %14 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %13, i32 0, i32 0
  556. store i32* %10, i32** %14, align 8
  557. %15 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %13, i32 0, i32 1
  558. store i64 %12, i64* %15, align 8
  559. %16 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %3, i32 0, i32 0
  560. %17 = load [0 x i32]*, [0 x i32]** %16, align 8, !nonnull !3
  561. %18 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %3, i32 0, i32 1
  562. %19 = load i64, i64* %18, align 8
  563. %20 = bitcast { [0 x i32]*, i64 }* %3 to i8*
  564. call void @llvm.lifetime.end.p0i8(i64 16, i8* %20)
  565. br label %21
  566.  
  567. ; <label>:21: ; preds = %2
  568. %22 = bitcast { i32*, i64 }* %4 to i8*
  569. call void @llvm.lifetime.end.p0i8(i64 16, i8* %22)
  570. %23 = insertvalue { [0 x i32]*, i64 } undef, [0 x i32]* %17, 0
  571. %24 = insertvalue { [0 x i32]*, i64 } %23, i64 %19, 1
  572. ret { [0 x i32]*, i64 } %24
  573. }
  574.  
  575. ; Function Attrs: inlinehint uwtable
  576. define internal { [0 x i32]*, i64 } @"_ZN4core5slice74_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h0fe7e803fce1e20aE"([0 x i32]* noalias nonnull readonly, i64, i64, i64) unnamed_addr #0 {
  577. %5 = call { [0 x i32]*, i64 } @"_ZN99_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5697259416355b17E"(i64 %2, i64 %3, [0 x i32]* noalias nonnull readonly %0, i64 %1)
  578. %6 = extractvalue { [0 x i32]*, i64 } %5, 0
  579. %7 = extractvalue { [0 x i32]*, i64 } %5, 1
  580. br label %8
  581.  
  582. ; <label>:8: ; preds = %4
  583. %9 = insertvalue { [0 x i32]*, i64 } undef, [0 x i32]* %6, 0
  584. %10 = insertvalue { [0 x i32]*, i64 } %9, i64 %7, 1
  585. ret { [0 x i32]*, i64 } %10
  586. }
  587.  
  588. ; Function Attrs: inlinehint uwtable
  589. define internal { [0 x i32]*, i64 } @"_ZN4core5slice74_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h41f64f54e8d1b7d6E"([0 x i32]* noalias nonnull readonly, i64, i64) unnamed_addr #0 {
  590. %4 = call { [0 x i32]*, i64 } @"_ZN101_$LT$core..ops..range..RangeTo$LT$usize$GT$$u20$as$u20$core..slice..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h078f68a8309cb374E"(i64 %2, [0 x i32]* noalias nonnull readonly %0, i64 %1)
  591. %5 = extractvalue { [0 x i32]*, i64 } %4, 0
  592. %6 = extractvalue { [0 x i32]*, i64 } %4, 1
  593. br label %7
  594.  
  595. ; <label>:7: ; preds = %3
  596. %8 = insertvalue { [0 x i32]*, i64 } undef, [0 x i32]* %5, 0
  597. %9 = insertvalue { [0 x i32]*, i64 } %8, i64 %6, 1
  598. ret { [0 x i32]*, i64 } %9
  599. }
  600.  
  601. ; Function Attrs: inlinehint uwtable
  602. define internal { [0 x i32]*, i64 } @"_ZN4core5slice74_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17hd2e2694457d96551E"([0 x i32]* noalias nonnull readonly, i64, i64) unnamed_addr #0 {
  603. %4 = call { [0 x i32]*, i64 } @"_ZN103_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h10a46beecb6fa85fE"(i64 %2, [0 x i32]* noalias nonnull readonly %0, i64 %1)
  604. %5 = extractvalue { [0 x i32]*, i64 } %4, 0
  605. %6 = extractvalue { [0 x i32]*, i64 } %4, 1
  606. br label %7
  607.  
  608. ; <label>:7: ; preds = %3
  609. %8 = insertvalue { [0 x i32]*, i64 } undef, [0 x i32]* %5, 0
  610. %9 = insertvalue { [0 x i32]*, i64 } %8, i64 %6, 1
  611. ret { [0 x i32]*, i64 } %9
  612. }
  613.  
  614. ; Function Attrs: inlinehint uwtable
  615. define internal i64 @"_ZN53_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..SliceExt$GT$3len17he70cfd9d37ed05efE"([0 x i32]* noalias nonnull readonly, i64) unnamed_addr #0 {
  616. %3 = alloca { i32*, i64 }, align 8
  617. %4 = bitcast { i32*, i64 }* %3 to i8*
  618. call void @llvm.lifetime.start.p0i8(i64 16, i8* %4)
  619. %5 = bitcast { i32*, i64 }* %3 to { [0 x i32]*, i64 }*
  620. %6 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %5, i32 0, i32 0
  621. store [0 x i32]* %0, [0 x i32]** %6, align 8
  622. %7 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %5, i32 0, i32 1
  623. store i64 %1, i64* %7, align 8
  624. %8 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %3, i32 0, i32 0
  625. %9 = load i32*, i32** %8, align 8
  626. %10 = getelementptr inbounds { i32*, i64 }, { i32*, i64 }* %3, i32 0, i32 1
  627. %11 = load i64, i64* %10, align 8
  628. %12 = bitcast { i32*, i64 }* %3 to i8*
  629. call void @llvm.lifetime.end.p0i8(i64 16, i8* %12)
  630. br label %13
  631.  
  632. ; <label>:13: ; preds = %2
  633. ret i64 %11
  634. }
  635.  
  636. ; Function Attrs: inlinehint uwtable
  637. define internal { i32*, i32* } @"_ZN53_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..SliceExt$GT$4iter17h7c6ea9d74db5e50cE"([0 x i32]* noalias nonnull readonly, i64) unnamed_addr #0 {
  638. %3 = alloca i32*, align 8
  639. %4 = alloca i32*, align 8
  640. %5 = alloca { i32*, i32* }, align 8
  641. %6 = bitcast i32** %4 to i8*
  642. call void @llvm.lifetime.start.p0i8(i64 8, i8* %6)
  643. %7 = call i64 @_ZN4core3mem7size_of17h1d6b4cc7f7420375E()
  644. br label %8
  645.  
  646. ; <label>:8: ; preds = %2
  647. %9 = icmp eq i64 %7, 0
  648. br i1 %9, label %10, label %11
  649.  
  650. ; <label>:10: ; preds = %8
  651. call void @llvm.assume(i1 true)
  652. store i32* inttoptr (i64 1 to i32*), i32** %4, align 8
  653. br label %18
  654.  
  655. ; <label>:11: ; preds = %8
  656. %12 = call i32* @"_ZN53_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..SliceExt$GT$6as_ptr17h32215ff12a098383E"([0 x i32]* noalias nonnull readonly %0, i64 %1)
  657. br label %13
  658.  
  659. ; <label>:13: ; preds = %11
  660. %14 = call zeroext i1 @"_ZN4core3ptr33_$LT$impl$u20$$BP$const$u20$T$GT$7is_null17h364a758ace70a8a3E"(i32* %12)
  661. br label %15
  662.  
  663. ; <label>:15: ; preds = %13
  664. %16 = xor i1 %14, true
  665. call void @llvm.assume(i1 %16)
  666. br label %17
  667.  
  668. ; <label>:17: ; preds = %15
  669. store i32* %12, i32** %4, align 8
  670. br label %18
  671.  
  672. ; <label>:18: ; preds = %17, %10
  673. %19 = load i32*, i32** %4, align 8
  674. %20 = bitcast i32** %3 to i8*
  675. call void @llvm.lifetime.start.p0i8(i64 8, i8* %20)
  676. %21 = load i32*, i32** %4, align 8
  677. %22 = call i64 @_ZN4core5slice13size_from_ptr17h73637563565851c6E(i32* %21)
  678. br label %23
  679.  
  680. ; <label>:23: ; preds = %18
  681. %24 = icmp eq i64 %22, 0
  682. br i1 %24, label %25, label %28
  683.  
  684. ; <label>:25: ; preds = %23
  685. %26 = bitcast i32* %21 to i8*
  686. %27 = call i64 @"_ZN53_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..SliceExt$GT$3len17he70cfd9d37ed05efE"([0 x i32]* noalias nonnull readonly %0, i64 %1)
  687. br label %30
  688.  
  689. ; <label>:28: ; preds = %23
  690. %29 = call i64 @"_ZN53_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..SliceExt$GT$3len17he70cfd9d37ed05efE"([0 x i32]* noalias nonnull readonly %0, i64 %1)
  691. br label %35
  692.  
  693. ; <label>:30: ; preds = %25
  694. %31 = icmp ule i64 %27, -1
  695. call void @llvm.assume(i1 %31)
  696. %32 = call i8* @"_ZN4core3ptr31_$LT$impl$u20$$BP$mut$u20$T$GT$15wrapping_offset17ha2ba679b8b637d52E"(i8* %26, i64 %27)
  697. br label %33
  698.  
  699. ; <label>:33: ; preds = %30
  700. %34 = bitcast i8* %32 to i32*
  701. store i32* %34, i32** %3, align 8
  702. br label %39
  703.  
  704. ; <label>:35: ; preds = %28
  705. %36 = icmp ule i64 %29, -1
  706. call void @llvm.assume(i1 %36)
  707. %37 = call i32* @"_ZN4core3ptr33_$LT$impl$u20$$BP$const$u20$T$GT$6offset17h2db78cc51ca12da6E"(i32* %21, i64 %29)
  708. store i32* %37, i32** %3, align 8
  709. br label %38
  710.  
  711. ; <label>:38: ; preds = %35
  712. br label %39
  713.  
  714. ; <label>:39: ; preds = %38, %33
  715. %40 = bitcast { i32*, i32* }* %5 to i32**
  716. store i32* %19, i32** %40, align 8
  717. %41 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1
  718. %42 = load i32*, i32** %3, align 8
  719. store i32* %42, i32** %41, align 8
  720. %43 = bitcast { i32*, i32* }* %5 to %"core::marker::PhantomData<&u32>"*
  721. %44 = bitcast i32** %3 to i8*
  722. call void @llvm.lifetime.end.p0i8(i64 8, i8* %44)
  723. %45 = bitcast i32** %4 to i8*
  724. call void @llvm.lifetime.end.p0i8(i64 8, i8* %45)
  725. %46 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 0
  726. %47 = load i32*, i32** %46, align 8
  727. %48 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %5, i32 0, i32 1
  728. %49 = load i32*, i32** %48, align 8
  729. %50 = insertvalue { i32*, i32* } undef, i32* %47, 0
  730. %51 = insertvalue { i32*, i32* } %50, i32* %49, 1
  731. ret { i32*, i32* } %51
  732. }
  733.  
  734. ; Function Attrs: inlinehint uwtable
  735. define internal i32* @"_ZN53_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..SliceExt$GT$6as_ptr17h32215ff12a098383E"([0 x i32]* noalias nonnull readonly, i64) unnamed_addr #0 {
  736. %3 = bitcast [0 x i32]* %0 to i32*
  737. ret i32* %3
  738. }
  739.  
  740. ; Function Attrs: alwaysinline uwtable
  741. define internal i32* @"_ZN59_$LT$$BP$const$u20$T$u20$as$u20$core..slice..PointerExt$GT$12slice_offset17h7aa1452c7557c220E"(i32*, i64) unnamed_addr #1 {
  742. %3 = alloca i32*, align 8
  743. %4 = call i64 @_ZN4core5slice13size_from_ptr17h73637563565851c6E(i32* %0)
  744. br label %5
  745.  
  746. ; <label>:5: ; preds = %2
  747. %6 = icmp eq i64 %4, 0
  748. br i1 %6, label %7, label %10
  749.  
  750. ; <label>:7: ; preds = %5
  751. %8 = bitcast i32* %0 to i8*
  752. %9 = call i8* @"_ZN4core3ptr31_$LT$impl$u20$$BP$mut$u20$T$GT$15wrapping_offset17ha2ba679b8b637d52E"(i8* %8, i64 %1)
  753. br label %12
  754.  
  755. ; <label>:10: ; preds = %5
  756. %11 = call i32* @"_ZN4core3ptr33_$LT$impl$u20$$BP$const$u20$T$GT$6offset17h2db78cc51ca12da6E"(i32* %0, i64 %1)
  757. store i32* %11, i32** %3, align 8
  758. br label %14
  759.  
  760. ; <label>:12: ; preds = %7
  761. %13 = bitcast i8* %9 to i32*
  762. store i32* %13, i32** %3, align 8
  763. br label %15
  764.  
  765. ; <label>:14: ; preds = %10
  766. br label %15
  767.  
  768. ; <label>:15: ; preds = %14, %12
  769. %16 = load i32*, i32** %3, align 8
  770. ret i32* %16
  771. }
  772.  
  773. ; Function Attrs: inlinehint uwtable
  774. define internal i64 @"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$3len17hab82a3a5ee843773E"([0 x i32]* noalias nonnull readonly, i64) unnamed_addr #0 {
  775. %3 = call i64 @"_ZN53_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..SliceExt$GT$3len17he70cfd9d37ed05efE"([0 x i32]* noalias nonnull readonly %0, i64 %1)
  776. br label %4
  777.  
  778. ; <label>:4: ; preds = %2
  779. ret i64 %3
  780. }
  781.  
  782. ; Function Attrs: inlinehint uwtable
  783. define internal { i32*, i32* } @"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4iter17h08ec6eec9d3c8166E"([0 x i32]* noalias nonnull readonly, i64) unnamed_addr #0 {
  784. %3 = call { i32*, i32* } @"_ZN53_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..SliceExt$GT$4iter17h7c6ea9d74db5e50cE"([0 x i32]* noalias nonnull readonly %0, i64 %1)
  785. %4 = extractvalue { i32*, i32* } %3, 0
  786. %5 = extractvalue { i32*, i32* } %3, 1
  787. br label %6
  788.  
  789. ; <label>:6: ; preds = %2
  790. %7 = insertvalue { i32*, i32* } undef, i32* %4, 0
  791. %8 = insertvalue { i32*, i32* } %7, i32* %5, 1
  792. ret { i32*, i32* } %8
  793. }
  794.  
  795. ; Function Attrs: inlinehint uwtable
  796. define internal zeroext i1 @"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8is_empty17h7069f18437424c5eE"([0 x i32]* noalias nonnull readonly, i64) unnamed_addr #0 {
  797. %3 = call zeroext i1 @_ZN4core5slice8SliceExt8is_empty17h5df57ca3a59651deE([0 x i32]* noalias nonnull readonly %0, i64 %1)
  798. br label %4
  799.  
  800. ; <label>:4: ; preds = %2
  801. ret i1 %3
  802. }
  803.  
  804. ; Function Attrs: inlinehint uwtable
  805. define internal void @"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position17hf1a29b42059163daE"(%"core::option::Option<usize>"* noalias nocapture sret dereferenceable(16), { i32*, i32* }* dereferenceable(16)) unnamed_addr #0 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality {
  806. %3 = alloca { i8*, i32 }, align 8
  807. %4 = alloca i8, align 1
  808. %5 = alloca i64*, align 8
  809. %6 = alloca %"core::slice::{{impl}}::position::{{closure}}<u32, import_path_to_string::{{closure}}>", align 1
  810. %7 = alloca %"core::result::Result<usize, usize>", align 8
  811. %8 = alloca %"core::option::Option<usize>", align 8
  812. %9 = alloca { [0 x i32]*, i64 }, align 8
  813. %10 = alloca i64, align 8
  814. store i8 0, i8* %4, align 1
  815. store i8 1, i8* %4, align 1
  816. %11 = bitcast i64* %10 to i8*
  817. call void @llvm.lifetime.start.p0i8(i64 8, i8* %11)
  818. %12 = bitcast { [0 x i32]*, i64 }* %9 to i8*
  819. call void @llvm.lifetime.start.p0i8(i64 16, i8* %12)
  820. %13 = bitcast { i32*, i32* }* %1 to i32**
  821. %14 = load i32*, i32** %13, align 8
  822. %15 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %1, i32 0, i32 1
  823. %16 = load i32*, i32** %15, align 8
  824. %17 = ptrtoint i32* %16 to i64
  825. %18 = ptrtoint i32* %14 to i64
  826. %19 = invoke i64 @"_ZN4core3num23_$LT$impl$u20$usize$GT$12wrapping_sub17h25b775332ef31d00E"(i64 %17, i64 %18)
  827. to label %28 unwind label %72
  828.  
  829. ; <label>:20: ; preds = %69, %68
  830. %21 = bitcast { i8*, i32 }* %3 to i8**
  831. %22 = load i8*, i8** %21, align 8
  832. %23 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %3, i32 0, i32 1
  833. %24 = load i32, i32* %23, align 4
  834. %25 = bitcast { i8*, i32 }* %3 to i8*
  835. call void @llvm.lifetime.end.p0i8(i64 16, i8* %25)
  836. %26 = insertvalue { i8*, i32 } undef, i8* %22, 0
  837. %27 = insertvalue { i8*, i32 } %26, i32 %24, 1
  838. resume { i8*, i32 } %27
  839.  
  840. ; <label>:28: ; preds = %2
  841. %29 = invoke i64 @_ZN4core5slice13size_from_ptr17h73637563565851c6E(i32* %14)
  842. to label %30 unwind label %72
  843.  
  844. ; <label>:30: ; preds = %28
  845. %31 = icmp eq i64 %29, 0
  846. br i1 %31, label %32, label %34
  847.  
  848. ; <label>:32: ; preds = %30
  849. call void @llvm.assume(i1 true)
  850. %33 = invoke { [0 x i32]*, i64 } @_ZN4core5slice14from_raw_parts17hacb157bb9f25ba37E(i32* inttoptr (i64 1 to i32*), i64 %19)
  851. to label %36 unwind label %72
  852.  
  853. ; <label>:34: ; preds = %30
  854. %35 = invoke i64 @_ZN4core5slice13size_from_ptr17h73637563565851c6E(i32* %14)
  855. to label %37 unwind label %72
  856.  
  857. ; <label>:36: ; preds = %32
  858. store { [0 x i32]*, i64 } %33, { [0 x i32]*, i64 }* %9, align 8
  859. br label %48
  860.  
  861. ; <label>:37: ; preds = %34
  862. %38 = icmp eq i64 %35, 0
  863. %39 = call i1 @llvm.expect.i1(i1 %38, i1 false)
  864. br i1 %39, label %79, label %40
  865.  
  866. ; <label>:40: ; preds = %37
  867. %41 = udiv i64 %19, %35
  868. %42 = invoke { [0 x i32]*, i64 } @_ZN4core5slice14from_raw_parts17hacb157bb9f25ba37E(i32* %14, i64 %41)
  869. to label %43 unwind label %72
  870.  
  871. ; <label>:43: ; preds = %40
  872. %44 = extractvalue { [0 x i32]*, i64 } %42, 0
  873. %45 = extractvalue { [0 x i32]*, i64 } %42, 1
  874. %46 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %9, i32 0, i32 0
  875. store [0 x i32]* %44, [0 x i32]** %46, align 8
  876. %47 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %9, i32 0, i32 1
  877. store i64 %45, i64* %47, align 8
  878. br label %48
  879.  
  880. ; <label>:48: ; preds = %43, %36
  881. %49 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %9, i32 0, i32 0
  882. %50 = load [0 x i32]*, [0 x i32]** %49, align 8, !nonnull !3
  883. %51 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %9, i32 0, i32 1
  884. %52 = load i64, i64* %51, align 8
  885. %53 = invoke i64 @"_ZN53_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..SliceExt$GT$3len17he70cfd9d37ed05efE"([0 x i32]* noalias nonnull readonly %50, i64 %52)
  886. to label %54 unwind label %72
  887.  
  888. ; <label>:54: ; preds = %48
  889. store i64 %53, i64* %10, align 8
  890. %55 = bitcast { [0 x i32]*, i64 }* %9 to i8*
  891. call void @llvm.lifetime.end.p0i8(i64 16, i8* %55)
  892. %56 = bitcast %"core::option::Option<usize>"* %8 to i8*
  893. call void @llvm.lifetime.start.p0i8(i64 16, i8* %56)
  894. %57 = bitcast %"core::result::Result<usize, usize>"* %7 to i8*
  895. call void @llvm.lifetime.start.p0i8(i64 16, i8* %57)
  896. store i8 0, i8* %4, align 1
  897. %58 = bitcast %"core::slice::{{impl}}::position::{{closure}}<u32, import_path_to_string::{{closure}}>"* %6 to %"import_path_to_string::{{closure}}"*
  898. invoke void @"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8try_fold17h67c1a77f983d137aE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16) %7, { i32*, i32* }* dereferenceable(16) %1, i64 0)
  899. to label %59 unwind label %72
  900.  
  901. ; <label>:59: ; preds = %54
  902. invoke void @"_ZN47_$LT$core..result..Result$LT$T$C$$u20$E$GT$$GT$3err17h7575ad3e8a4fc754E"(%"core::option::Option<usize>"* noalias nocapture sret dereferenceable(16) %8, %"core::result::Result<usize, usize>"* noalias nocapture dereferenceable(16) %7)
  903. to label %60 unwind label %72
  904.  
  905. ; <label>:60: ; preds = %59
  906. %61 = bitcast %"core::result::Result<usize, usize>"* %7 to i8*
  907. call void @llvm.lifetime.end.p0i8(i64 16, i8* %61)
  908. %62 = bitcast i64** %5 to i8*
  909. call void @llvm.lifetime.start.p0i8(i64 8, i8* %62)
  910. store i64* %10, i64** %5, align 8
  911. %63 = load i64*, i64** %5, align 8, !nonnull !3
  912. invoke void @"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$3map17hac95c6f09e5eb2e1E"(%"core::option::Option<usize>"* noalias nocapture sret dereferenceable(16) %0, %"core::option::Option<usize>"* noalias nocapture dereferenceable(16) %8, i64* noalias readonly dereferenceable(8) %63)
  913. to label %64 unwind label %72
  914.  
  915. ; <label>:64: ; preds = %60
  916. %65 = bitcast i64** %5 to i8*
  917. call void @llvm.lifetime.end.p0i8(i64 8, i8* %65)
  918. %66 = bitcast %"core::option::Option<usize>"* %8 to i8*
  919. call void @llvm.lifetime.end.p0i8(i64 16, i8* %66)
  920. %67 = bitcast i64* %10 to i8*
  921. call void @llvm.lifetime.end.p0i8(i64 8, i8* %67)
  922. ret void
  923.  
  924. ; <label>:68: ; preds = %69
  925. store i8 0, i8* %4, align 1
  926. br label %20
  927.  
  928. ; <label>:69: ; preds = %72
  929. %70 = load i8, i8* %4, align 1, !range !2
  930. %71 = trunc i8 %70 to i1
  931. br i1 %71, label %68, label %20
  932.  
  933. ; <label>:72: ; preds = %79, %60, %59, %54, %48, %40, %34, %32, %28, %2
  934. %73 = landingpad { i8*, i32 }
  935. cleanup
  936. %74 = bitcast { i8*, i32 }* %3 to i8*
  937. call void @llvm.lifetime.start.p0i8(i64 16, i8* %74)
  938. %75 = extractvalue { i8*, i32 } %73, 0
  939. %76 = extractvalue { i8*, i32 } %73, 1
  940. %77 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %3, i32 0, i32 0
  941. store i8* %75, i8** %77, align 8
  942. %78 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %3, i32 0, i32 1
  943. store i32 %76, i32* %78, align 8
  944. br label %69
  945.  
  946. ; <label>:79: ; preds = %37
  947. invoke void @_ZN4core9panicking5panic17hfefa0158f97fa77bE({ [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(40) bitcast ({ { [0 x i8]*, i64 }, { [0 x i8]*, i64 }, i32, i32 }* @panic_loc.6 to { [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*))
  948. to label %80 unwind label %72
  949.  
  950. ; <label>:80: ; preds = %79
  951. unreachable
  952. }
  953.  
  954. ; Function Attrs: uwtable
  955. define internal i64 @"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17hab0db5dfbde4de17E"(i64* noalias readonly dereferenceable(8), i64) unnamed_addr #2 {
  956. %3 = load i64, i64* %0, align 8
  957. %4 = icmp ult i64 %1, %3
  958. call void @llvm.assume(i1 %4)
  959. br label %5
  960.  
  961. ; <label>:5: ; preds = %2
  962. ret i64 %1
  963. }
  964.  
  965. ; Function Attrs: uwtable
  966. define internal void @"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17hbb59cc67849b96ddE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16), %"core::slice::{{impl}}::position::{{closure}}<u32, import_path_to_string::{{closure}}>"* nonnull, i64, i32* noalias readonly dereferenceable(4)) unnamed_addr #2 {
  967. %5 = alloca i32*, align 8
  968. %6 = bitcast %"core::slice::{{impl}}::position::{{closure}}<u32, import_path_to_string::{{closure}}>"* %1 to %"import_path_to_string::{{closure}}"*
  969. %7 = bitcast i32** %5 to i8*
  970. call void @llvm.lifetime.start.p0i8(i64 8, i8* %7)
  971. store i32* %3, i32** %5, align 8
  972. %8 = load i32*, i32** %5, align 8, !nonnull !3
  973. %9 = call zeroext i1 @"_ZN19bad_position_simple21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17h6e8857c45441a25dE"(%"import_path_to_string::{{closure}}"* nonnull %6, i32* noalias readonly dereferenceable(4) %8)
  974. br label %10
  975.  
  976. ; <label>:10: ; preds = %4
  977. %11 = bitcast i32** %5 to i8*
  978. call void @llvm.lifetime.end.p0i8(i64 8, i8* %11)
  979. br i1 %9, label %12, label %16
  980.  
  981. ; <label>:12: ; preds = %10
  982. %13 = bitcast %"core::result::Result<usize, usize>"* %0 to %"core::result::Result<usize, usize>::Err"*
  983. %14 = getelementptr inbounds %"core::result::Result<usize, usize>::Err", %"core::result::Result<usize, usize>::Err"* %13, i32 0, i32 1
  984. store i64 %2, i64* %14, align 8
  985. %15 = bitcast %"core::result::Result<usize, usize>"* %0 to i64*
  986. store i64 1, i64* %15, align 8
  987. br label %25
  988.  
  989. ; <label>:16: ; preds = %10
  990. %17 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %2, i64 1)
  991. %18 = extractvalue { i64, i1 } %17, 0
  992. %19 = extractvalue { i64, i1 } %17, 1
  993. %20 = call i1 @llvm.expect.i1(i1 %19, i1 false)
  994. br i1 %20, label %26, label %21
  995.  
  996. ; <label>:21: ; preds = %16
  997. %22 = bitcast %"core::result::Result<usize, usize>"* %0 to %"core::result::Result<usize, usize>::Ok"*
  998. %23 = getelementptr inbounds %"core::result::Result<usize, usize>::Ok", %"core::result::Result<usize, usize>::Ok"* %22, i32 0, i32 1
  999. store i64 %18, i64* %23, align 8
  1000. %24 = bitcast %"core::result::Result<usize, usize>"* %0 to i64*
  1001. store i64 0, i64* %24, align 8
  1002. br label %25
  1003.  
  1004. ; <label>:25: ; preds = %21, %12
  1005. ret void
  1006.  
  1007. ; <label>:26: ; preds = %16
  1008. call void @_ZN4core9panicking5panic17hfefa0158f97fa77bE({ [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(40) bitcast ({ { [0 x i8]*, i64 }, { [0 x i8]*, i64 }, i32, i32 }* @panic_loc.8 to { [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*))
  1009. unreachable
  1010. }
  1011.  
  1012. ; Function Attrs: inlinehint uwtable
  1013. define internal void @"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8try_fold17h67c1a77f983d137aE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16), { i32*, i32* }* dereferenceable(16), i64) unnamed_addr #0 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality {
  1014. %4 = alloca { i8*, i32 }, align 8
  1015. %5 = alloca i8, align 1
  1016. %6 = alloca i8, align 1
  1017. %7 = alloca i8, align 1
  1018. %8 = alloca i8, align 1
  1019. %9 = alloca i8, align 1
  1020. %10 = alloca i8, align 1
  1021. %11 = alloca i32*, align 8
  1022. %12 = alloca { i64, i32* }, align 8
  1023. %13 = alloca %"core::result::Result<usize, usize>", align 8
  1024. %14 = alloca %"core::result::Result<usize, usize>", align 8
  1025. %15 = alloca i32*, align 8
  1026. %16 = alloca { i64, i32* }, align 8
  1027. %17 = alloca %"core::result::Result<usize, usize>", align 8
  1028. %18 = alloca %"core::result::Result<usize, usize>", align 8
  1029. %19 = alloca i32*, align 8
  1030. %20 = alloca { i64, i32* }, align 8
  1031. %21 = alloca %"core::result::Result<usize, usize>", align 8
  1032. %22 = alloca %"core::result::Result<usize, usize>", align 8
  1033. %23 = alloca i32*, align 8
  1034. %24 = alloca { i64, i32* }, align 8
  1035. %25 = alloca %"core::result::Result<usize, usize>", align 8
  1036. %26 = alloca %"core::result::Result<usize, usize>", align 8
  1037. %27 = alloca i32*, align 8
  1038. %28 = alloca { i64, i32* }, align 8
  1039. %29 = alloca %"core::result::Result<usize, usize>", align 8
  1040. %30 = alloca %"core::result::Result<usize, usize>", align 8
  1041. %31 = alloca i64, align 8
  1042. %32 = alloca %"core::slice::{{impl}}::position::{{closure}}<u32, import_path_to_string::{{closure}}>", align 1
  1043. store i8 0, i8* %10, align 1
  1044. store i8 0, i8* %9, align 1
  1045. store i8 0, i8* %8, align 1
  1046. store i8 0, i8* %7, align 1
  1047. store i8 0, i8* %6, align 1
  1048. store i8 0, i8* %5, align 1
  1049. %33 = bitcast i64* %31 to i8*
  1050. call void @llvm.lifetime.start.p0i8(i64 8, i8* %33)
  1051. store i8 1, i8* %10, align 1
  1052. store i64 %2, i64* %31, align 8
  1053. br label %43
  1054.  
  1055. ; <label>:34: ; preds = %42
  1056. %35 = bitcast { i8*, i32 }* %4 to i8**
  1057. %36 = load i8*, i8** %35, align 8
  1058. %37 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 1
  1059. %38 = load i32, i32* %37, align 4
  1060. %39 = bitcast { i8*, i32 }* %4 to i8*
  1061. call void @llvm.lifetime.end.p0i8(i64 16, i8* %39)
  1062. %40 = insertvalue { i8*, i32 } undef, i8* %36, 0
  1063. %41 = insertvalue { i8*, i32 } %40, i32 %38, 1
  1064. resume { i8*, i32 } %41
  1065.  
  1066. ; <label>:42: ; preds = %289, %288
  1067. br label %34
  1068.  
  1069. ; <label>:43: ; preds = %354, %3
  1070. %44 = bitcast { i32*, i32* }* %1 to i32**
  1071. %45 = load i32*, i32** %44, align 8
  1072. %46 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %1, i32 0, i32 1
  1073. %47 = load i32*, i32** %46, align 8
  1074. %48 = invoke i64 @_ZN4core5slice11ptrdistance17h036ab170e59738e1E(i32* %45, i32* %47)
  1075. to label %50 unwind label %368
  1076.  
  1077. ; <label>:49: ; preds = %50
  1078. br label %229
  1079.  
  1080. ; <label>:50: ; preds = %43
  1081. %51 = icmp uge i64 %48, 4
  1082. br i1 %51, label %52, label %49
  1083.  
  1084. ; <label>:52: ; preds = %50
  1085. %53 = bitcast %"core::result::Result<usize, usize>"* %30 to i8*
  1086. call void @llvm.lifetime.start.p0i8(i64 16, i8* %53)
  1087. %54 = bitcast %"core::result::Result<usize, usize>"* %29 to i8*
  1088. call void @llvm.lifetime.start.p0i8(i64 16, i8* %54)
  1089. %55 = bitcast { i64, i32* }* %28 to i8*
  1090. call void @llvm.lifetime.start.p0i8(i64 16, i8* %55)
  1091. store i8 0, i8* %10, align 1
  1092. store i8 1, i8* %9, align 1
  1093. %56 = load i64, i64* %31, align 8
  1094. %57 = bitcast i32** %27 to i8*
  1095. call void @llvm.lifetime.start.p0i8(i64 8, i8* %57)
  1096. %58 = bitcast { i32*, i32* }* %1 to i32**
  1097. %59 = invoke i32* @_ZN4core5slice10PointerExt8post_inc17hc9f8b6822179ed09E(i32** dereferenceable(8) %58)
  1098. to label %60 unwind label %375
  1099.  
  1100. ; <label>:60: ; preds = %52
  1101. %61 = invoke i64 @_ZN4core5slice13size_from_ptr17h73637563565851c6E(i32* %59)
  1102. to label %62 unwind label %375
  1103.  
  1104. ; <label>:62: ; preds = %60
  1105. %63 = icmp eq i64 %61, 0
  1106. br i1 %63, label %64, label %65
  1107.  
  1108. ; <label>:64: ; preds = %62
  1109. call void @llvm.assume(i1 true)
  1110. store i32* inttoptr (i64 1 to i32*), i32** %27, align 8
  1111. br label %66
  1112.  
  1113. ; <label>:65: ; preds = %62
  1114. store i32* %59, i32** %27, align 8
  1115. br label %66
  1116.  
  1117. ; <label>:66: ; preds = %65, %64
  1118. store i8 0, i8* %9, align 1
  1119. %67 = bitcast { i64, i32* }* %28 to i64*
  1120. store i64 %56, i64* %67, align 8
  1121. %68 = getelementptr inbounds { i64, i32* }, { i64, i32* }* %28, i32 0, i32 1
  1122. %69 = load i32*, i32** %27, align 8, !nonnull !3
  1123. store i32* %69, i32** %68, align 8
  1124. %70 = getelementptr inbounds { i64, i32* }, { i64, i32* }* %28, i32 0, i32 0
  1125. %71 = load i64, i64* %70, align 8
  1126. %72 = getelementptr inbounds { i64, i32* }, { i64, i32* }* %28, i32 0, i32 1
  1127. %73 = load i32*, i32** %72, align 8, !nonnull !3
  1128. invoke void @"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17hbb59cc67849b96ddE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16) %29, %"core::slice::{{impl}}::position::{{closure}}<u32, import_path_to_string::{{closure}}>"* nonnull %32, i64 %71, i32* noalias readonly dereferenceable(4) %73)
  1129. to label %74 unwind label %375
  1130.  
  1131. ; <label>:74: ; preds = %66
  1132. %75 = bitcast { i64, i32* }* %28 to i8*
  1133. call void @llvm.lifetime.end.p0i8(i64 16, i8* %75)
  1134. %76 = bitcast i32** %27 to i8*
  1135. call void @llvm.lifetime.end.p0i8(i64 8, i8* %76)
  1136. store i8 0, i8* %9, align 1
  1137. invoke void @"_ZN78_$LT$core..result..Result$LT$T$C$$u20$E$GT$$u20$as$u20$core..ops..try..Try$GT$11into_result17h20c389a4d040cb5eE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16) %30, %"core::result::Result<usize, usize>"* noalias nocapture dereferenceable(16) %29)
  1138. to label %77 unwind label %368
  1139.  
  1140. ; <label>:77: ; preds = %74
  1141. %78 = bitcast %"core::result::Result<usize, usize>"* %29 to i8*
  1142. call void @llvm.lifetime.end.p0i8(i64 16, i8* %78)
  1143. %79 = bitcast %"core::result::Result<usize, usize>"* %30 to i64*
  1144. %80 = load i64, i64* %79, align 8, !range !1
  1145. %81 = bitcast %"core::result::Result<usize, usize>"* %30 to i64*
  1146. %82 = load i64, i64* %81, align 8, !range !1
  1147. switch i64 %82, label %86 [
  1148. i64 0, label %87
  1149. i64 1, label %93
  1150. ]
  1151.  
  1152. ; <label>:83: ; preds = %382
  1153. %84 = bitcast %"core::result::Result<usize, usize>"* %30 to i64*
  1154. %85 = load i64, i64* %84, align 8, !range !1
  1155. switch i64 %85, label %289 [
  1156. i64 0, label %296
  1157. ]
  1158.  
  1159. ; <label>:86: ; preds = %262, %205, %164, %123, %77
  1160. unreachable
  1161.  
  1162. ; <label>:87: ; preds = %77
  1163. %88 = bitcast %"core::result::Result<usize, usize>"* %30 to %"core::result::Result<usize, usize>::Ok"*
  1164. %89 = getelementptr inbounds %"core::result::Result<usize, usize>::Ok", %"core::result::Result<usize, usize>::Ok"* %88, i32 0, i32 1
  1165. %90 = load i64, i64* %89, align 8
  1166. store i8 1, i8* %10, align 1
  1167. store i64 %90, i64* %31, align 8
  1168. %91 = bitcast %"core::result::Result<usize, usize>"* %30 to i64*
  1169. %92 = load i64, i64* %91, align 8, !range !1
  1170. switch i64 %92, label %309 [
  1171. i64 0, label %300
  1172. ]
  1173.  
  1174. ; <label>:93: ; preds = %77
  1175. %94 = bitcast %"core::result::Result<usize, usize>"* %30 to %"core::result::Result<usize, usize>::Err"*
  1176. %95 = getelementptr inbounds %"core::result::Result<usize, usize>::Err", %"core::result::Result<usize, usize>::Err"* %94, i32 0, i32 1
  1177. %96 = load i64, i64* %95, align 8
  1178. %97 = invoke i64 @"_ZN50_$LT$T$u20$as$u20$core..convert..From$LT$T$GT$$GT$4from17h514ffbaf3bb75a3eE"(i64 %96)
  1179. to label %98 unwind label %382
  1180.  
  1181. ; <label>:98: ; preds = %93
  1182. invoke void @"_ZN78_$LT$core..result..Result$LT$T$C$$u20$E$GT$$u20$as$u20$core..ops..try..Try$GT$10from_error17h222e7515b9cde0afE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16) %0, i64 %97)
  1183. to label %99 unwind label %382
  1184.  
  1185. ; <label>:99: ; preds = %98
  1186. %100 = bitcast %"core::result::Result<usize, usize>"* %30 to i64*
  1187. %101 = load i64, i64* %100, align 8, !range !1
  1188. switch i64 %101, label %297 [
  1189. i64 0, label %299
  1190. ]
  1191.  
  1192. ; <label>:102: ; preds = %286, %104
  1193. ret void
  1194.  
  1195. ; <label>:103: ; preds = %351, %333, %315, %297
  1196. br label %104
  1197.  
  1198. ; <label>:104: ; preds = %362, %103
  1199. store i8 0, i8* %10, align 1
  1200. %105 = bitcast i64* %31 to i8*
  1201. call void @llvm.lifetime.end.p0i8(i64 8, i8* %105)
  1202. br label %102
  1203.  
  1204. ; <label>:106: ; preds = %300
  1205. %107 = invoke i64 @_ZN4core5slice13size_from_ptr17h73637563565851c6E(i32* %308)
  1206. to label %108 unwind label %389
  1207.  
  1208. ; <label>:108: ; preds = %106
  1209. %109 = icmp eq i64 %107, 0
  1210. br i1 %109, label %110, label %111
  1211.  
  1212. ; <label>:110: ; preds = %108
  1213. call void @llvm.assume(i1 true)
  1214. store i32* inttoptr (i64 1 to i32*), i32** %23, align 8
  1215. br label %112
  1216.  
  1217. ; <label>:111: ; preds = %108
  1218. store i32* %308, i32** %23, align 8
  1219. br label %112
  1220.  
  1221. ; <label>:112: ; preds = %111, %110
  1222. store i8 0, i8* %8, align 1
  1223. %113 = bitcast { i64, i32* }* %24 to i64*
  1224. store i64 %305, i64* %113, align 8
  1225. %114 = getelementptr inbounds { i64, i32* }, { i64, i32* }* %24, i32 0, i32 1
  1226. %115 = load i32*, i32** %23, align 8, !nonnull !3
  1227. store i32* %115, i32** %114, align 8
  1228. %116 = getelementptr inbounds { i64, i32* }, { i64, i32* }* %24, i32 0, i32 0
  1229. %117 = load i64, i64* %116, align 8
  1230. %118 = getelementptr inbounds { i64, i32* }, { i64, i32* }* %24, i32 0, i32 1
  1231. %119 = load i32*, i32** %118, align 8, !nonnull !3
  1232. invoke void @"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17hbb59cc67849b96ddE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16) %25, %"core::slice::{{impl}}::position::{{closure}}<u32, import_path_to_string::{{closure}}>"* nonnull %32, i64 %117, i32* noalias readonly dereferenceable(4) %119)
  1233. to label %120 unwind label %389
  1234.  
  1235. ; <label>:120: ; preds = %112
  1236. %121 = bitcast { i64, i32* }* %24 to i8*
  1237. call void @llvm.lifetime.end.p0i8(i64 16, i8* %121)
  1238. %122 = bitcast i32** %23 to i8*
  1239. call void @llvm.lifetime.end.p0i8(i64 8, i8* %122)
  1240. store i8 0, i8* %8, align 1
  1241. invoke void @"_ZN78_$LT$core..result..Result$LT$T$C$$u20$E$GT$$u20$as$u20$core..ops..try..Try$GT$11into_result17h20c389a4d040cb5eE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16) %26, %"core::result::Result<usize, usize>"* noalias nocapture dereferenceable(16) %25)
  1242. to label %123 unwind label %368
  1243.  
  1244. ; <label>:123: ; preds = %120
  1245. %124 = bitcast %"core::result::Result<usize, usize>"* %25 to i8*
  1246. call void @llvm.lifetime.end.p0i8(i64 16, i8* %124)
  1247. %125 = bitcast %"core::result::Result<usize, usize>"* %26 to i64*
  1248. %126 = load i64, i64* %125, align 8, !range !1
  1249. %127 = bitcast %"core::result::Result<usize, usize>"* %26 to i64*
  1250. %128 = load i64, i64* %127, align 8, !range !1
  1251. switch i64 %128, label %86 [
  1252. i64 0, label %132
  1253. i64 1, label %138
  1254. ]
  1255.  
  1256. ; <label>:129: ; preds = %396
  1257. %130 = bitcast %"core::result::Result<usize, usize>"* %26 to i64*
  1258. %131 = load i64, i64* %130, align 8, !range !1
  1259. switch i64 %131, label %289 [
  1260. i64 0, label %314
  1261. ]
  1262.  
  1263. ; <label>:132: ; preds = %123
  1264. %133 = bitcast %"core::result::Result<usize, usize>"* %26 to %"core::result::Result<usize, usize>::Ok"*
  1265. %134 = getelementptr inbounds %"core::result::Result<usize, usize>::Ok", %"core::result::Result<usize, usize>::Ok"* %133, i32 0, i32 1
  1266. %135 = load i64, i64* %134, align 8
  1267. store i8 1, i8* %10, align 1
  1268. store i64 %135, i64* %31, align 8
  1269. %136 = bitcast %"core::result::Result<usize, usize>"* %26 to i64*
  1270. %137 = load i64, i64* %136, align 8, !range !1
  1271. switch i64 %137, label %327 [
  1272. i64 0, label %318
  1273. ]
  1274.  
  1275. ; <label>:138: ; preds = %123
  1276. %139 = bitcast %"core::result::Result<usize, usize>"* %26 to %"core::result::Result<usize, usize>::Err"*
  1277. %140 = getelementptr inbounds %"core::result::Result<usize, usize>::Err", %"core::result::Result<usize, usize>::Err"* %139, i32 0, i32 1
  1278. %141 = load i64, i64* %140, align 8
  1279. %142 = invoke i64 @"_ZN50_$LT$T$u20$as$u20$core..convert..From$LT$T$GT$$GT$4from17h514ffbaf3bb75a3eE"(i64 %141)
  1280. to label %143 unwind label %396
  1281.  
  1282. ; <label>:143: ; preds = %138
  1283. invoke void @"_ZN78_$LT$core..result..Result$LT$T$C$$u20$E$GT$$u20$as$u20$core..ops..try..Try$GT$10from_error17h222e7515b9cde0afE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16) %0, i64 %142)
  1284. to label %144 unwind label %396
  1285.  
  1286. ; <label>:144: ; preds = %143
  1287. %145 = bitcast %"core::result::Result<usize, usize>"* %26 to i64*
  1288. %146 = load i64, i64* %145, align 8, !range !1
  1289. switch i64 %146, label %315 [
  1290. i64 0, label %317
  1291. ]
  1292.  
  1293. ; <label>:147: ; preds = %318
  1294. %148 = invoke i64 @_ZN4core5slice13size_from_ptr17h73637563565851c6E(i32* %326)
  1295. to label %149 unwind label %403
  1296.  
  1297. ; <label>:149: ; preds = %147
  1298. %150 = icmp eq i64 %148, 0
  1299. br i1 %150, label %151, label %152
  1300.  
  1301. ; <label>:151: ; preds = %149
  1302. call void @llvm.assume(i1 true)
  1303. store i32* inttoptr (i64 1 to i32*), i32** %19, align 8
  1304. br label %153
  1305.  
  1306. ; <label>:152: ; preds = %149
  1307. store i32* %326, i32** %19, align 8
  1308. br label %153
  1309.  
  1310. ; <label>:153: ; preds = %152, %151
  1311. store i8 0, i8* %7, align 1
  1312. %154 = bitcast { i64, i32* }* %20 to i64*
  1313. store i64 %323, i64* %154, align 8
  1314. %155 = getelementptr inbounds { i64, i32* }, { i64, i32* }* %20, i32 0, i32 1
  1315. %156 = load i32*, i32** %19, align 8, !nonnull !3
  1316. store i32* %156, i32** %155, align 8
  1317. %157 = getelementptr inbounds { i64, i32* }, { i64, i32* }* %20, i32 0, i32 0
  1318. %158 = load i64, i64* %157, align 8
  1319. %159 = getelementptr inbounds { i64, i32* }, { i64, i32* }* %20, i32 0, i32 1
  1320. %160 = load i32*, i32** %159, align 8, !nonnull !3
  1321. invoke void @"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17hbb59cc67849b96ddE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16) %21, %"core::slice::{{impl}}::position::{{closure}}<u32, import_path_to_string::{{closure}}>"* nonnull %32, i64 %158, i32* noalias readonly dereferenceable(4) %160)
  1322. to label %161 unwind label %403
  1323.  
  1324. ; <label>:161: ; preds = %153
  1325. %162 = bitcast { i64, i32* }* %20 to i8*
  1326. call void @llvm.lifetime.end.p0i8(i64 16, i8* %162)
  1327. %163 = bitcast i32** %19 to i8*
  1328. call void @llvm.lifetime.end.p0i8(i64 8, i8* %163)
  1329. store i8 0, i8* %7, align 1
  1330. invoke void @"_ZN78_$LT$core..result..Result$LT$T$C$$u20$E$GT$$u20$as$u20$core..ops..try..Try$GT$11into_result17h20c389a4d040cb5eE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16) %22, %"core::result::Result<usize, usize>"* noalias nocapture dereferenceable(16) %21)
  1331. to label %164 unwind label %368
  1332.  
  1333. ; <label>:164: ; preds = %161
  1334. %165 = bitcast %"core::result::Result<usize, usize>"* %21 to i8*
  1335. call void @llvm.lifetime.end.p0i8(i64 16, i8* %165)
  1336. %166 = bitcast %"core::result::Result<usize, usize>"* %22 to i64*
  1337. %167 = load i64, i64* %166, align 8, !range !1
  1338. %168 = bitcast %"core::result::Result<usize, usize>"* %22 to i64*
  1339. %169 = load i64, i64* %168, align 8, !range !1
  1340. switch i64 %169, label %86 [
  1341. i64 0, label %173
  1342. i64 1, label %179
  1343. ]
  1344.  
  1345. ; <label>:170: ; preds = %410
  1346. %171 = bitcast %"core::result::Result<usize, usize>"* %22 to i64*
  1347. %172 = load i64, i64* %171, align 8, !range !1
  1348. switch i64 %172, label %289 [
  1349. i64 0, label %332
  1350. ]
  1351.  
  1352. ; <label>:173: ; preds = %164
  1353. %174 = bitcast %"core::result::Result<usize, usize>"* %22 to %"core::result::Result<usize, usize>::Ok"*
  1354. %175 = getelementptr inbounds %"core::result::Result<usize, usize>::Ok", %"core::result::Result<usize, usize>::Ok"* %174, i32 0, i32 1
  1355. %176 = load i64, i64* %175, align 8
  1356. store i8 1, i8* %10, align 1
  1357. store i64 %176, i64* %31, align 8
  1358. %177 = bitcast %"core::result::Result<usize, usize>"* %22 to i64*
  1359. %178 = load i64, i64* %177, align 8, !range !1
  1360. switch i64 %178, label %345 [
  1361. i64 0, label %336
  1362. ]
  1363.  
  1364. ; <label>:179: ; preds = %164
  1365. %180 = bitcast %"core::result::Result<usize, usize>"* %22 to %"core::result::Result<usize, usize>::Err"*
  1366. %181 = getelementptr inbounds %"core::result::Result<usize, usize>::Err", %"core::result::Result<usize, usize>::Err"* %180, i32 0, i32 1
  1367. %182 = load i64, i64* %181, align 8
  1368. %183 = invoke i64 @"_ZN50_$LT$T$u20$as$u20$core..convert..From$LT$T$GT$$GT$4from17h514ffbaf3bb75a3eE"(i64 %182)
  1369. to label %184 unwind label %410
  1370.  
  1371. ; <label>:184: ; preds = %179
  1372. invoke void @"_ZN78_$LT$core..result..Result$LT$T$C$$u20$E$GT$$u20$as$u20$core..ops..try..Try$GT$10from_error17h222e7515b9cde0afE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16) %0, i64 %183)
  1373. to label %185 unwind label %410
  1374.  
  1375. ; <label>:185: ; preds = %184
  1376. %186 = bitcast %"core::result::Result<usize, usize>"* %22 to i64*
  1377. %187 = load i64, i64* %186, align 8, !range !1
  1378. switch i64 %187, label %333 [
  1379. i64 0, label %335
  1380. ]
  1381.  
  1382. ; <label>:188: ; preds = %336
  1383. %189 = invoke i64 @_ZN4core5slice13size_from_ptr17h73637563565851c6E(i32* %344)
  1384. to label %190 unwind label %417
  1385.  
  1386. ; <label>:190: ; preds = %188
  1387. %191 = icmp eq i64 %189, 0
  1388. br i1 %191, label %192, label %193
  1389.  
  1390. ; <label>:192: ; preds = %190
  1391. call void @llvm.assume(i1 true)
  1392. store i32* inttoptr (i64 1 to i32*), i32** %15, align 8
  1393. br label %194
  1394.  
  1395. ; <label>:193: ; preds = %190
  1396. store i32* %344, i32** %15, align 8
  1397. br label %194
  1398.  
  1399. ; <label>:194: ; preds = %193, %192
  1400. store i8 0, i8* %6, align 1
  1401. %195 = bitcast { i64, i32* }* %16 to i64*
  1402. store i64 %341, i64* %195, align 8
  1403. %196 = getelementptr inbounds { i64, i32* }, { i64, i32* }* %16, i32 0, i32 1
  1404. %197 = load i32*, i32** %15, align 8, !nonnull !3
  1405. store i32* %197, i32** %196, align 8
  1406. %198 = getelementptr inbounds { i64, i32* }, { i64, i32* }* %16, i32 0, i32 0
  1407. %199 = load i64, i64* %198, align 8
  1408. %200 = getelementptr inbounds { i64, i32* }, { i64, i32* }* %16, i32 0, i32 1
  1409. %201 = load i32*, i32** %200, align 8, !nonnull !3
  1410. invoke void @"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17hbb59cc67849b96ddE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16) %17, %"core::slice::{{impl}}::position::{{closure}}<u32, import_path_to_string::{{closure}}>"* nonnull %32, i64 %199, i32* noalias readonly dereferenceable(4) %201)
  1411. to label %202 unwind label %417
  1412.  
  1413. ; <label>:202: ; preds = %194
  1414. %203 = bitcast { i64, i32* }* %16 to i8*
  1415. call void @llvm.lifetime.end.p0i8(i64 16, i8* %203)
  1416. %204 = bitcast i32** %15 to i8*
  1417. call void @llvm.lifetime.end.p0i8(i64 8, i8* %204)
  1418. store i8 0, i8* %6, align 1
  1419. invoke void @"_ZN78_$LT$core..result..Result$LT$T$C$$u20$E$GT$$u20$as$u20$core..ops..try..Try$GT$11into_result17h20c389a4d040cb5eE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16) %18, %"core::result::Result<usize, usize>"* noalias nocapture dereferenceable(16) %17)
  1420. to label %205 unwind label %368
  1421.  
  1422. ; <label>:205: ; preds = %202
  1423. %206 = bitcast %"core::result::Result<usize, usize>"* %17 to i8*
  1424. call void @llvm.lifetime.end.p0i8(i64 16, i8* %206)
  1425. %207 = bitcast %"core::result::Result<usize, usize>"* %18 to i64*
  1426. %208 = load i64, i64* %207, align 8, !range !1
  1427. %209 = bitcast %"core::result::Result<usize, usize>"* %18 to i64*
  1428. %210 = load i64, i64* %209, align 8, !range !1
  1429. switch i64 %210, label %86 [
  1430. i64 0, label %214
  1431. i64 1, label %220
  1432. ]
  1433.  
  1434. ; <label>:211: ; preds = %424
  1435. %212 = bitcast %"core::result::Result<usize, usize>"* %18 to i64*
  1436. %213 = load i64, i64* %212, align 8, !range !1
  1437. switch i64 %213, label %289 [
  1438. i64 0, label %350
  1439. ]
  1440.  
  1441. ; <label>:214: ; preds = %205
  1442. %215 = bitcast %"core::result::Result<usize, usize>"* %18 to %"core::result::Result<usize, usize>::Ok"*
  1443. %216 = getelementptr inbounds %"core::result::Result<usize, usize>::Ok", %"core::result::Result<usize, usize>::Ok"* %215, i32 0, i32 1
  1444. %217 = load i64, i64* %216, align 8
  1445. store i8 1, i8* %10, align 1
  1446. store i64 %217, i64* %31, align 8
  1447. %218 = bitcast %"core::result::Result<usize, usize>"* %18 to i64*
  1448. %219 = load i64, i64* %218, align 8, !range !1
  1449. switch i64 %219, label %356 [
  1450. i64 0, label %354
  1451. ]
  1452.  
  1453. ; <label>:220: ; preds = %205
  1454. %221 = bitcast %"core::result::Result<usize, usize>"* %18 to %"core::result::Result<usize, usize>::Err"*
  1455. %222 = getelementptr inbounds %"core::result::Result<usize, usize>::Err", %"core::result::Result<usize, usize>::Err"* %221, i32 0, i32 1
  1456. %223 = load i64, i64* %222, align 8
  1457. %224 = invoke i64 @"_ZN50_$LT$T$u20$as$u20$core..convert..From$LT$T$GT$$GT$4from17h514ffbaf3bb75a3eE"(i64 %223)
  1458. to label %225 unwind label %424
  1459.  
  1460. ; <label>:225: ; preds = %220
  1461. invoke void @"_ZN78_$LT$core..result..Result$LT$T$C$$u20$E$GT$$u20$as$u20$core..ops..try..Try$GT$10from_error17h222e7515b9cde0afE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16) %0, i64 %224)
  1462. to label %226 unwind label %424
  1463.  
  1464. ; <label>:226: ; preds = %225
  1465. %227 = bitcast %"core::result::Result<usize, usize>"* %18 to i64*
  1466. %228 = load i64, i64* %227, align 8, !range !1
  1467. switch i64 %228, label %351 [
  1468. i64 0, label %353
  1469. ]
  1470.  
  1471. ; <label>:229: ; preds = %365, %49
  1472. %230 = bitcast { i32*, i32* }* %1 to i32**
  1473. %231 = load i32*, i32** %230, align 8
  1474. %232 = getelementptr inbounds { i32*, i32* }, { i32*, i32* }* %1, i32 0, i32 1
  1475. %233 = load i32*, i32** %232, align 8
  1476. %234 = icmp ne i32* %231, %233
  1477. br i1 %234, label %237, label %235
  1478.  
  1479. ; <label>:235: ; preds = %229
  1480. store i8 0, i8* %10, align 1
  1481. %236 = load i64, i64* %31, align 8
  1482. invoke void @"_ZN78_$LT$core..result..Result$LT$T$C$$u20$E$GT$$u20$as$u20$core..ops..try..Try$GT$7from_ok17hed12cd599a454669E"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16) %0, i64 %236)
  1483. to label %286 unwind label %368
  1484.  
  1485. ; <label>:237: ; preds = %229
  1486. %238 = bitcast %"core::result::Result<usize, usize>"* %14 to i8*
  1487. call void @llvm.lifetime.start.p0i8(i64 16, i8* %238)
  1488. %239 = bitcast %"core::result::Result<usize, usize>"* %13 to i8*
  1489. call void @llvm.lifetime.start.p0i8(i64 16, i8* %239)
  1490. %240 = bitcast { i64, i32* }* %12 to i8*
  1491. call void @llvm.lifetime.start.p0i8(i64 16, i8* %240)
  1492. store i8 0, i8* %10, align 1
  1493. store i8 1, i8* %5, align 1
  1494. %241 = load i64, i64* %31, align 8
  1495. %242 = bitcast i32** %11 to i8*
  1496. call void @llvm.lifetime.start.p0i8(i64 8, i8* %242)
  1497. %243 = bitcast { i32*, i32* }* %1 to i32**
  1498. %244 = invoke i32* @_ZN4core5slice10PointerExt8post_inc17hc9f8b6822179ed09E(i32** dereferenceable(8) %243)
  1499. to label %245 unwind label %431
  1500.  
  1501. ; <label>:245: ; preds = %237
  1502. %246 = invoke i64 @_ZN4core5slice13size_from_ptr17h73637563565851c6E(i32* %244)
  1503. to label %247 unwind label %431
  1504.  
  1505. ; <label>:247: ; preds = %245
  1506. %248 = icmp eq i64 %246, 0
  1507. br i1 %248, label %249, label %250
  1508.  
  1509. ; <label>:249: ; preds = %247
  1510. call void @llvm.assume(i1 true)
  1511. store i32* inttoptr (i64 1 to i32*), i32** %11, align 8
  1512. br label %251
  1513.  
  1514. ; <label>:250: ; preds = %247
  1515. store i32* %244, i32** %11, align 8
  1516. br label %251
  1517.  
  1518. ; <label>:251: ; preds = %250, %249
  1519. store i8 0, i8* %5, align 1
  1520. %252 = bitcast { i64, i32* }* %12 to i64*
  1521. store i64 %241, i64* %252, align 8
  1522. %253 = getelementptr inbounds { i64, i32* }, { i64, i32* }* %12, i32 0, i32 1
  1523. %254 = load i32*, i32** %11, align 8, !nonnull !3
  1524. store i32* %254, i32** %253, align 8
  1525. %255 = getelementptr inbounds { i64, i32* }, { i64, i32* }* %12, i32 0, i32 0
  1526. %256 = load i64, i64* %255, align 8
  1527. %257 = getelementptr inbounds { i64, i32* }, { i64, i32* }* %12, i32 0, i32 1
  1528. %258 = load i32*, i32** %257, align 8, !nonnull !3
  1529. invoke void @"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position28_$u7b$$u7b$closure$u7d$$u7d$17hbb59cc67849b96ddE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16) %13, %"core::slice::{{impl}}::position::{{closure}}<u32, import_path_to_string::{{closure}}>"* nonnull %32, i64 %256, i32* noalias readonly dereferenceable(4) %258)
  1530. to label %259 unwind label %431
  1531.  
  1532. ; <label>:259: ; preds = %251
  1533. %260 = bitcast { i64, i32* }* %12 to i8*
  1534. call void @llvm.lifetime.end.p0i8(i64 16, i8* %260)
  1535. %261 = bitcast i32** %11 to i8*
  1536. call void @llvm.lifetime.end.p0i8(i64 8, i8* %261)
  1537. store i8 0, i8* %5, align 1
  1538. invoke void @"_ZN78_$LT$core..result..Result$LT$T$C$$u20$E$GT$$u20$as$u20$core..ops..try..Try$GT$11into_result17h20c389a4d040cb5eE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16) %14, %"core::result::Result<usize, usize>"* noalias nocapture dereferenceable(16) %13)
  1539. to label %262 unwind label %368
  1540.  
  1541. ; <label>:262: ; preds = %259
  1542. %263 = bitcast %"core::result::Result<usize, usize>"* %13 to i8*
  1543. call void @llvm.lifetime.end.p0i8(i64 16, i8* %263)
  1544. %264 = bitcast %"core::result::Result<usize, usize>"* %14 to i64*
  1545. %265 = load i64, i64* %264, align 8, !range !1
  1546. %266 = bitcast %"core::result::Result<usize, usize>"* %14 to i64*
  1547. %267 = load i64, i64* %266, align 8, !range !1
  1548. switch i64 %267, label %86 [
  1549. i64 0, label %271
  1550. i64 1, label %277
  1551. ]
  1552.  
  1553. ; <label>:268: ; preds = %438
  1554. %269 = bitcast %"core::result::Result<usize, usize>"* %14 to i64*
  1555. %270 = load i64, i64* %269, align 8, !range !1
  1556. switch i64 %270, label %289 [
  1557. i64 0, label %361
  1558. ]
  1559.  
  1560. ; <label>:271: ; preds = %262
  1561. %272 = bitcast %"core::result::Result<usize, usize>"* %14 to %"core::result::Result<usize, usize>::Ok"*
  1562. %273 = getelementptr inbounds %"core::result::Result<usize, usize>::Ok", %"core::result::Result<usize, usize>::Ok"* %272, i32 0, i32 1
  1563. %274 = load i64, i64* %273, align 8
  1564. store i8 1, i8* %10, align 1
  1565. store i64 %274, i64* %31, align 8
  1566. %275 = bitcast %"core::result::Result<usize, usize>"* %14 to i64*
  1567. %276 = load i64, i64* %275, align 8, !range !1
  1568. switch i64 %276, label %367 [
  1569. i64 0, label %365
  1570. ]
  1571.  
  1572. ; <label>:277: ; preds = %262
  1573. %278 = bitcast %"core::result::Result<usize, usize>"* %14 to %"core::result::Result<usize, usize>::Err"*
  1574. %279 = getelementptr inbounds %"core::result::Result<usize, usize>::Err", %"core::result::Result<usize, usize>::Err"* %278, i32 0, i32 1
  1575. %280 = load i64, i64* %279, align 8
  1576. %281 = invoke i64 @"_ZN50_$LT$T$u20$as$u20$core..convert..From$LT$T$GT$$GT$4from17h514ffbaf3bb75a3eE"(i64 %280)
  1577. to label %282 unwind label %438
  1578.  
  1579. ; <label>:282: ; preds = %277
  1580. invoke void @"_ZN78_$LT$core..result..Result$LT$T$C$$u20$E$GT$$u20$as$u20$core..ops..try..Try$GT$10from_error17h222e7515b9cde0afE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16) %0, i64 %281)
  1581. to label %283 unwind label %438
  1582.  
  1583. ; <label>:283: ; preds = %282
  1584. %284 = bitcast %"core::result::Result<usize, usize>"* %14 to i64*
  1585. %285 = load i64, i64* %284, align 8, !range !1
  1586. switch i64 %285, label %362 [
  1587. i64 0, label %364
  1588. ]
  1589.  
  1590. ; <label>:286: ; preds = %235
  1591. store i8 0, i8* %10, align 1
  1592. %287 = bitcast i64* %31 to i8*
  1593. call void @llvm.lifetime.end.p0i8(i64 8, i8* %287)
  1594. br label %102
  1595.  
  1596. ; <label>:288: ; preds = %289
  1597. store i8 0, i8* %10, align 1
  1598. br label %42
  1599.  
  1600. ; <label>:289: ; preds = %368, %361, %358, %357, %350, %347, %346, %332, %329, %328, %314, %311, %310, %296, %293, %292, %268, %211, %170, %129, %83
  1601. %290 = load i8, i8* %10, align 1, !range !2
  1602. %291 = trunc i8 %290 to i1
  1603. br i1 %291, label %288, label %42
  1604.  
  1605. ; <label>:292: ; preds = %293
  1606. store i8 0, i8* %9, align 1
  1607. br label %289
  1608.  
  1609. ; <label>:293: ; preds = %375
  1610. %294 = load i8, i8* %9, align 1, !range !2
  1611. %295 = trunc i8 %294 to i1
  1612. br i1 %295, label %292, label %289
  1613.  
  1614. ; <label>:296: ; preds = %83
  1615. br label %289
  1616.  
  1617. ; <label>:297: ; preds = %299, %99
  1618. %298 = bitcast %"core::result::Result<usize, usize>"* %30 to i8*
  1619. call void @llvm.lifetime.end.p0i8(i64 16, i8* %298)
  1620. br label %103
  1621.  
  1622. ; <label>:299: ; preds = %99
  1623. br label %297
  1624.  
  1625. ; <label>:300: ; preds = %309, %87
  1626. %301 = bitcast %"core::result::Result<usize, usize>"* %30 to i8*
  1627. call void @llvm.lifetime.end.p0i8(i64 16, i8* %301)
  1628. %302 = bitcast %"core::result::Result<usize, usize>"* %26 to i8*
  1629. call void @llvm.lifetime.start.p0i8(i64 16, i8* %302)
  1630. %303 = bitcast %"core::result::Result<usize, usize>"* %25 to i8*
  1631. call void @llvm.lifetime.start.p0i8(i64 16, i8* %303)
  1632. %304 = bitcast { i64, i32* }* %24 to i8*
  1633. call void @llvm.lifetime.start.p0i8(i64 16, i8* %304)
  1634. store i8 0, i8* %10, align 1
  1635. store i8 1, i8* %8, align 1
  1636. %305 = load i64, i64* %31, align 8
  1637. %306 = bitcast i32** %23 to i8*
  1638. call void @llvm.lifetime.start.p0i8(i64 8, i8* %306)
  1639. %307 = bitcast { i32*, i32* }* %1 to i32**
  1640. %308 = invoke i32* @_ZN4core5slice10PointerExt8post_inc17hc9f8b6822179ed09E(i32** dereferenceable(8) %307)
  1641. to label %106 unwind label %389
  1642.  
  1643. ; <label>:309: ; preds = %87
  1644. br label %300
  1645.  
  1646. ; <label>:310: ; preds = %311
  1647. store i8 0, i8* %8, align 1
  1648. br label %289
  1649.  
  1650. ; <label>:311: ; preds = %389
  1651. %312 = load i8, i8* %8, align 1, !range !2
  1652. %313 = trunc i8 %312 to i1
  1653. br i1 %313, label %310, label %289
  1654.  
  1655. ; <label>:314: ; preds = %129
  1656. br label %289
  1657.  
  1658. ; <label>:315: ; preds = %317, %144
  1659. %316 = bitcast %"core::result::Result<usize, usize>"* %26 to i8*
  1660. call void @llvm.lifetime.end.p0i8(i64 16, i8* %316)
  1661. br label %103
  1662.  
  1663. ; <label>:317: ; preds = %144
  1664. br label %315
  1665.  
  1666. ; <label>:318: ; preds = %327, %132
  1667. %319 = bitcast %"core::result::Result<usize, usize>"* %26 to i8*
  1668. call void @llvm.lifetime.end.p0i8(i64 16, i8* %319)
  1669. %320 = bitcast %"core::result::Result<usize, usize>"* %22 to i8*
  1670. call void @llvm.lifetime.start.p0i8(i64 16, i8* %320)
  1671. %321 = bitcast %"core::result::Result<usize, usize>"* %21 to i8*
  1672. call void @llvm.lifetime.start.p0i8(i64 16, i8* %321)
  1673. %322 = bitcast { i64, i32* }* %20 to i8*
  1674. call void @llvm.lifetime.start.p0i8(i64 16, i8* %322)
  1675. store i8 0, i8* %10, align 1
  1676. store i8 1, i8* %7, align 1
  1677. %323 = load i64, i64* %31, align 8
  1678. %324 = bitcast i32** %19 to i8*
  1679. call void @llvm.lifetime.start.p0i8(i64 8, i8* %324)
  1680. %325 = bitcast { i32*, i32* }* %1 to i32**
  1681. %326 = invoke i32* @_ZN4core5slice10PointerExt8post_inc17hc9f8b6822179ed09E(i32** dereferenceable(8) %325)
  1682. to label %147 unwind label %403
  1683.  
  1684. ; <label>:327: ; preds = %132
  1685. br label %318
  1686.  
  1687. ; <label>:328: ; preds = %329
  1688. store i8 0, i8* %7, align 1
  1689. br label %289
  1690.  
  1691. ; <label>:329: ; preds = %403
  1692. %330 = load i8, i8* %7, align 1, !range !2
  1693. %331 = trunc i8 %330 to i1
  1694. br i1 %331, label %328, label %289
  1695.  
  1696. ; <label>:332: ; preds = %170
  1697. br label %289
  1698.  
  1699. ; <label>:333: ; preds = %335, %185
  1700. %334 = bitcast %"core::result::Result<usize, usize>"* %22 to i8*
  1701. call void @llvm.lifetime.end.p0i8(i64 16, i8* %334)
  1702. br label %103
  1703.  
  1704. ; <label>:335: ; preds = %185
  1705. br label %333
  1706.  
  1707. ; <label>:336: ; preds = %345, %173
  1708. %337 = bitcast %"core::result::Result<usize, usize>"* %22 to i8*
  1709. call void @llvm.lifetime.end.p0i8(i64 16, i8* %337)
  1710. %338 = bitcast %"core::result::Result<usize, usize>"* %18 to i8*
  1711. call void @llvm.lifetime.start.p0i8(i64 16, i8* %338)
  1712. %339 = bitcast %"core::result::Result<usize, usize>"* %17 to i8*
  1713. call void @llvm.lifetime.start.p0i8(i64 16, i8* %339)
  1714. %340 = bitcast { i64, i32* }* %16 to i8*
  1715. call void @llvm.lifetime.start.p0i8(i64 16, i8* %340)
  1716. store i8 0, i8* %10, align 1
  1717. store i8 1, i8* %6, align 1
  1718. %341 = load i64, i64* %31, align 8
  1719. %342 = bitcast i32** %15 to i8*
  1720. call void @llvm.lifetime.start.p0i8(i64 8, i8* %342)
  1721. %343 = bitcast { i32*, i32* }* %1 to i32**
  1722. %344 = invoke i32* @_ZN4core5slice10PointerExt8post_inc17hc9f8b6822179ed09E(i32** dereferenceable(8) %343)
  1723. to label %188 unwind label %417
  1724.  
  1725. ; <label>:345: ; preds = %173
  1726. br label %336
  1727.  
  1728. ; <label>:346: ; preds = %347
  1729. store i8 0, i8* %6, align 1
  1730. br label %289
  1731.  
  1732. ; <label>:347: ; preds = %417
  1733. %348 = load i8, i8* %6, align 1, !range !2
  1734. %349 = trunc i8 %348 to i1
  1735. br i1 %349, label %346, label %289
  1736.  
  1737. ; <label>:350: ; preds = %211
  1738. br label %289
  1739.  
  1740. ; <label>:351: ; preds = %353, %226
  1741. %352 = bitcast %"core::result::Result<usize, usize>"* %18 to i8*
  1742. call void @llvm.lifetime.end.p0i8(i64 16, i8* %352)
  1743. br label %103
  1744.  
  1745. ; <label>:353: ; preds = %226
  1746. br label %351
  1747.  
  1748. ; <label>:354: ; preds = %356, %214
  1749. %355 = bitcast %"core::result::Result<usize, usize>"* %18 to i8*
  1750. call void @llvm.lifetime.end.p0i8(i64 16, i8* %355)
  1751. br label %43
  1752.  
  1753. ; <label>:356: ; preds = %214
  1754. br label %354
  1755.  
  1756. ; <label>:357: ; preds = %358
  1757. store i8 0, i8* %5, align 1
  1758. br label %289
  1759.  
  1760. ; <label>:358: ; preds = %431
  1761. %359 = load i8, i8* %5, align 1, !range !2
  1762. %360 = trunc i8 %359 to i1
  1763. br i1 %360, label %357, label %289
  1764.  
  1765. ; <label>:361: ; preds = %268
  1766. br label %289
  1767.  
  1768. ; <label>:362: ; preds = %364, %283
  1769. %363 = bitcast %"core::result::Result<usize, usize>"* %14 to i8*
  1770. call void @llvm.lifetime.end.p0i8(i64 16, i8* %363)
  1771. br label %104
  1772.  
  1773. ; <label>:364: ; preds = %283
  1774. br label %362
  1775.  
  1776. ; <label>:365: ; preds = %367, %271
  1777. %366 = bitcast %"core::result::Result<usize, usize>"* %14 to i8*
  1778. call void @llvm.lifetime.end.p0i8(i64 16, i8* %366)
  1779. br label %229
  1780.  
  1781. ; <label>:367: ; preds = %271
  1782. br label %365
  1783.  
  1784. ; <label>:368: ; preds = %259, %235, %202, %161, %120, %74, %43
  1785. %369 = landingpad { i8*, i32 }
  1786. cleanup
  1787. %370 = bitcast { i8*, i32 }* %4 to i8*
  1788. call void @llvm.lifetime.start.p0i8(i64 16, i8* %370)
  1789. %371 = extractvalue { i8*, i32 } %369, 0
  1790. %372 = extractvalue { i8*, i32 } %369, 1
  1791. %373 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 0
  1792. store i8* %371, i8** %373, align 8
  1793. %374 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 1
  1794. store i32 %372, i32* %374, align 8
  1795. br label %289
  1796.  
  1797. ; <label>:375: ; preds = %66, %60, %52
  1798. %376 = landingpad { i8*, i32 }
  1799. cleanup
  1800. %377 = bitcast { i8*, i32 }* %4 to i8*
  1801. call void @llvm.lifetime.start.p0i8(i64 16, i8* %377)
  1802. %378 = extractvalue { i8*, i32 } %376, 0
  1803. %379 = extractvalue { i8*, i32 } %376, 1
  1804. %380 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 0
  1805. store i8* %378, i8** %380, align 8
  1806. %381 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 1
  1807. store i32 %379, i32* %381, align 8
  1808. br label %293
  1809.  
  1810. ; <label>:382: ; preds = %98, %93
  1811. %383 = landingpad { i8*, i32 }
  1812. cleanup
  1813. %384 = bitcast { i8*, i32 }* %4 to i8*
  1814. call void @llvm.lifetime.start.p0i8(i64 16, i8* %384)
  1815. %385 = extractvalue { i8*, i32 } %383, 0
  1816. %386 = extractvalue { i8*, i32 } %383, 1
  1817. %387 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 0
  1818. store i8* %385, i8** %387, align 8
  1819. %388 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 1
  1820. store i32 %386, i32* %388, align 8
  1821. br label %83
  1822.  
  1823. ; <label>:389: ; preds = %300, %112, %106
  1824. %390 = landingpad { i8*, i32 }
  1825. cleanup
  1826. %391 = bitcast { i8*, i32 }* %4 to i8*
  1827. call void @llvm.lifetime.start.p0i8(i64 16, i8* %391)
  1828. %392 = extractvalue { i8*, i32 } %390, 0
  1829. %393 = extractvalue { i8*, i32 } %390, 1
  1830. %394 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 0
  1831. store i8* %392, i8** %394, align 8
  1832. %395 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 1
  1833. store i32 %393, i32* %395, align 8
  1834. br label %311
  1835.  
  1836. ; <label>:396: ; preds = %143, %138
  1837. %397 = landingpad { i8*, i32 }
  1838. cleanup
  1839. %398 = bitcast { i8*, i32 }* %4 to i8*
  1840. call void @llvm.lifetime.start.p0i8(i64 16, i8* %398)
  1841. %399 = extractvalue { i8*, i32 } %397, 0
  1842. %400 = extractvalue { i8*, i32 } %397, 1
  1843. %401 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 0
  1844. store i8* %399, i8** %401, align 8
  1845. %402 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 1
  1846. store i32 %400, i32* %402, align 8
  1847. br label %129
  1848.  
  1849. ; <label>:403: ; preds = %318, %153, %147
  1850. %404 = landingpad { i8*, i32 }
  1851. cleanup
  1852. %405 = bitcast { i8*, i32 }* %4 to i8*
  1853. call void @llvm.lifetime.start.p0i8(i64 16, i8* %405)
  1854. %406 = extractvalue { i8*, i32 } %404, 0
  1855. %407 = extractvalue { i8*, i32 } %404, 1
  1856. %408 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 0
  1857. store i8* %406, i8** %408, align 8
  1858. %409 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 1
  1859. store i32 %407, i32* %409, align 8
  1860. br label %329
  1861.  
  1862. ; <label>:410: ; preds = %184, %179
  1863. %411 = landingpad { i8*, i32 }
  1864. cleanup
  1865. %412 = bitcast { i8*, i32 }* %4 to i8*
  1866. call void @llvm.lifetime.start.p0i8(i64 16, i8* %412)
  1867. %413 = extractvalue { i8*, i32 } %411, 0
  1868. %414 = extractvalue { i8*, i32 } %411, 1
  1869. %415 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 0
  1870. store i8* %413, i8** %415, align 8
  1871. %416 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 1
  1872. store i32 %414, i32* %416, align 8
  1873. br label %170
  1874.  
  1875. ; <label>:417: ; preds = %336, %194, %188
  1876. %418 = landingpad { i8*, i32 }
  1877. cleanup
  1878. %419 = bitcast { i8*, i32 }* %4 to i8*
  1879. call void @llvm.lifetime.start.p0i8(i64 16, i8* %419)
  1880. %420 = extractvalue { i8*, i32 } %418, 0
  1881. %421 = extractvalue { i8*, i32 } %418, 1
  1882. %422 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 0
  1883. store i8* %420, i8** %422, align 8
  1884. %423 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 1
  1885. store i32 %421, i32* %423, align 8
  1886. br label %347
  1887.  
  1888. ; <label>:424: ; preds = %225, %220
  1889. %425 = landingpad { i8*, i32 }
  1890. cleanup
  1891. %426 = bitcast { i8*, i32 }* %4 to i8*
  1892. call void @llvm.lifetime.start.p0i8(i64 16, i8* %426)
  1893. %427 = extractvalue { i8*, i32 } %425, 0
  1894. %428 = extractvalue { i8*, i32 } %425, 1
  1895. %429 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 0
  1896. store i8* %427, i8** %429, align 8
  1897. %430 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 1
  1898. store i32 %428, i32* %430, align 8
  1899. br label %211
  1900.  
  1901. ; <label>:431: ; preds = %251, %245, %237
  1902. %432 = landingpad { i8*, i32 }
  1903. cleanup
  1904. %433 = bitcast { i8*, i32 }* %4 to i8*
  1905. call void @llvm.lifetime.start.p0i8(i64 16, i8* %433)
  1906. %434 = extractvalue { i8*, i32 } %432, 0
  1907. %435 = extractvalue { i8*, i32 } %432, 1
  1908. %436 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 0
  1909. store i8* %434, i8** %436, align 8
  1910. %437 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 1
  1911. store i32 %435, i32* %437, align 8
  1912. br label %358
  1913.  
  1914. ; <label>:438: ; preds = %282, %277
  1915. %439 = landingpad { i8*, i32 }
  1916. cleanup
  1917. %440 = bitcast { i8*, i32 }* %4 to i8*
  1918. call void @llvm.lifetime.start.p0i8(i64 16, i8* %440)
  1919. %441 = extractvalue { i8*, i32 } %439, 0
  1920. %442 = extractvalue { i8*, i32 } %439, 1
  1921. %443 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 0
  1922. store i8* %441, i8** %443, align 8
  1923. %444 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %4, i32 0, i32 1
  1924. store i32 %442, i32* %444, align 8
  1925. br label %268
  1926. }
  1927.  
  1928. ; Function Attrs: inlinehint uwtable
  1929. define internal { [0 x i32]*, i64 } @"_ZN99_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$13get_unchecked17he9b2cfe1bb70066dE"(i64, i64, [0 x i32]* noalias nonnull readonly, i64) unnamed_addr #0 {
  1930. %5 = call i32* @"_ZN53_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..SliceExt$GT$6as_ptr17h32215ff12a098383E"([0 x i32]* noalias nonnull readonly %2, i64 %3)
  1931. br label %6
  1932.  
  1933. ; <label>:6: ; preds = %4
  1934. %7 = icmp ule i64 %0, -1
  1935. call void @llvm.assume(i1 %7)
  1936. %8 = call i32* @"_ZN4core3ptr33_$LT$impl$u20$$BP$const$u20$T$GT$6offset17h2db78cc51ca12da6E"(i32* %5, i64 %0)
  1937. br label %9
  1938.  
  1939. ; <label>:9: ; preds = %6
  1940. %10 = call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1, i64 %0)
  1941. %11 = extractvalue { i64, i1 } %10, 0
  1942. %12 = extractvalue { i64, i1 } %10, 1
  1943. %13 = call i1 @llvm.expect.i1(i1 %12, i1 false)
  1944. br i1 %13, label %21, label %14
  1945.  
  1946. ; <label>:14: ; preds = %9
  1947. %15 = call { [0 x i32]*, i64 } @_ZN4core5slice14from_raw_parts17hacb157bb9f25ba37E(i32* %8, i64 %11)
  1948. %16 = extractvalue { [0 x i32]*, i64 } %15, 0
  1949. %17 = extractvalue { [0 x i32]*, i64 } %15, 1
  1950. br label %18
  1951.  
  1952. ; <label>:18: ; preds = %14
  1953. %19 = insertvalue { [0 x i32]*, i64 } undef, [0 x i32]* %16, 0
  1954. %20 = insertvalue { [0 x i32]*, i64 } %19, i64 %17, 1
  1955. ret { [0 x i32]*, i64 } %20
  1956.  
  1957. ; <label>:21: ; preds = %9
  1958. call void @_ZN4core9panicking5panic17hfefa0158f97fa77bE({ [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(40) bitcast ({ { [0 x i8]*, i64 }, { [0 x i8]*, i64 }, i32, i32 }* @panic_loc.a to { [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*))
  1959. unreachable
  1960. }
  1961.  
  1962. ; Function Attrs: inlinehint uwtable
  1963. define internal { [0 x i32]*, i64 } @"_ZN99_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5697259416355b17E"(i64, i64, [0 x i32]* noalias nonnull readonly, i64) unnamed_addr #0 {
  1964. %5 = icmp ugt i64 %0, %1
  1965. br i1 %5, label %6, label %7
  1966.  
  1967. ; <label>:6: ; preds = %4
  1968. call void @_ZN4core5slice22slice_index_order_fail17hd0a9eb5d87471258E(i64 %0, i64 %1)
  1969. unreachable
  1970.  
  1971. ; <label>:7: ; preds = %4
  1972. %8 = call i64 @"_ZN53_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..SliceExt$GT$3len17he70cfd9d37ed05efE"([0 x i32]* noalias nonnull readonly %2, i64 %3)
  1973. br label %9
  1974.  
  1975. ; <label>:9: ; preds = %7
  1976. %10 = icmp ugt i64 %1, %8
  1977. br i1 %10, label %11, label %13
  1978.  
  1979. ; <label>:11: ; preds = %9
  1980. %12 = call i64 @"_ZN53_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..SliceExt$GT$3len17he70cfd9d37ed05efE"([0 x i32]* noalias nonnull readonly %2, i64 %3)
  1981. br label %17
  1982.  
  1983. ; <label>:13: ; preds = %9
  1984. %14 = call { [0 x i32]*, i64 } @"_ZN99_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$13get_unchecked17he9b2cfe1bb70066dE"(i64 %0, i64 %1, [0 x i32]* noalias nonnull readonly %2, i64 %3)
  1985. %15 = extractvalue { [0 x i32]*, i64 } %14, 0
  1986. %16 = extractvalue { [0 x i32]*, i64 } %14, 1
  1987. br label %18
  1988.  
  1989. ; <label>:17: ; preds = %11
  1990. call void @_ZN4core5slice20slice_index_len_fail17h41ae248f36c196f1E(i64 %1, i64 %12)
  1991. unreachable
  1992.  
  1993. ; <label>:18: ; preds = %13
  1994. %19 = insertvalue { [0 x i32]*, i64 } undef, [0 x i32]* %15, 0
  1995. %20 = insertvalue { [0 x i32]*, i64 } %19, i64 %16, 1
  1996. ret { [0 x i32]*, i64 } %20
  1997. }
  1998.  
  1999. ; Function Attrs: uwtable
  2000. define internal void @_ZN19bad_position_simple4main17hd6968b5c65b64145E() unnamed_addr #2 {
  2001. call void @_ZN19bad_position_simple21import_path_to_string17h210232a05b4d0302E([0 x i32]* noalias nonnull readonly bitcast ([1 x i32]* @ref.b to [0 x i32]*), i64 1)
  2002. br label %1
  2003.  
  2004. ; <label>:1: ; preds = %0
  2005. call void @_ZN19bad_position_simple21import_path_to_string17h210232a05b4d0302E([0 x i32]* noalias nonnull readonly @ref.c, i64 0)
  2006. br label %2
  2007.  
  2008. ; <label>:2: ; preds = %1
  2009. ret void
  2010. }
  2011.  
  2012. ; Function Attrs: uwtable
  2013. define internal void @_ZN19bad_position_simple21import_path_to_string17h210232a05b4d0302E([0 x i32]* noalias nonnull readonly, i64) unnamed_addr #2 {
  2014. %3 = alloca i64, align 8
  2015. %4 = alloca i64*, align 8
  2016. %5 = alloca [1 x { i8*, i8* }], align 8
  2017. %6 = alloca %"core::fmt::Arguments", align 8
  2018. %7 = alloca i64, align 8
  2019. %8 = alloca { [0 x i32]*, i64 }, align 8
  2020. %9 = alloca i64, align 8
  2021. %10 = alloca { i64, i64 }, align 8
  2022. %11 = alloca { [0 x i32]*, i64 }, align 8
  2023. %12 = alloca i8, align 1
  2024. %13 = alloca { i32*, i32* }, align 8
  2025. %14 = alloca %"core::option::Option<usize>", align 8
  2026. %15 = call { i32*, i32* } @"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4iter17h08ec6eec9d3c8166E"([0 x i32]* noalias nonnull readonly %0, i64 %1)
  2027. store { i32*, i32* } %15, { i32*, i32* }* %13, align 8
  2028. br label %16
  2029.  
  2030. ; <label>:16: ; preds = %2
  2031. call void @"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$8position17hf1a29b42059163daE"(%"core::option::Option<usize>"* noalias nocapture sret dereferenceable(16) %14, { i32*, i32* }* dereferenceable(16) %13)
  2032. br label %17
  2033.  
  2034. ; <label>:17: ; preds = %16
  2035. %18 = call zeroext i1 @"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8is_empty17h7069f18437424c5eE"([0 x i32]* noalias nonnull readonly %0, i64 %1)
  2036. br label %29
  2037.  
  2038. ; <label>:19: ; preds = %31
  2039. store i8 1, i8* %12, align 1
  2040. br label %24
  2041.  
  2042. ; <label>:20: ; preds = %31, %29
  2043. store i8 0, i8* %12, align 1
  2044. br label %24
  2045.  
  2046. ; <label>:21: ; preds = %29
  2047. %22 = icmp ult i64 0, %1
  2048. %23 = call i1 @llvm.expect.i1(i1 %22, i1 true)
  2049. br i1 %23, label %31, label %115
  2050.  
  2051. ; <label>:24: ; preds = %20, %19
  2052. %25 = bitcast %"core::option::Option<usize>"* %14 to i64*
  2053. %26 = load i64, i64* %25, align 8, !range !1
  2054. %27 = bitcast %"core::option::Option<usize>"* %14 to i64*
  2055. %28 = load i64, i64* %27, align 8, !range !1
  2056. switch i64 %28, label %35 [
  2057. i64 1, label %38
  2058. ]
  2059.  
  2060. ; <label>:29: ; preds = %17
  2061. %30 = xor i1 %18, true
  2062. br i1 %30, label %21, label %20
  2063.  
  2064. ; <label>:31: ; preds = %21
  2065. %32 = getelementptr inbounds [0 x i32], [0 x i32]* %0, i64 0, i64 0
  2066. %33 = load i32, i32* %32, align 4
  2067. %34 = icmp eq i32 %33, 1
  2068. br i1 %34, label %19, label %20
  2069.  
  2070. ; <label>:35: ; preds = %24
  2071. %36 = load i8, i8* %12, align 1, !range !2
  2072. %37 = trunc i8 %36 to i1
  2073. br i1 %37, label %76, label %81
  2074.  
  2075. ; <label>:38: ; preds = %24
  2076. %39 = bitcast %"core::option::Option<usize>"* %14 to %"core::option::Option<usize>::Some"*
  2077. %40 = getelementptr inbounds %"core::option::Option<usize>::Some", %"core::option::Option<usize>::Some"* %39, i32 0, i32 1
  2078. %41 = load i64, i64* %40, align 8
  2079. %42 = load i8, i8* %12, align 1, !range !2
  2080. %43 = trunc i8 %42 to i1
  2081. br i1 %43, label %45, label %50
  2082.  
  2083. ; <label>:44: ; preds = %93, %73, %65
  2084. ret void
  2085.  
  2086. ; <label>:45: ; preds = %38
  2087. %46 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %41, i64 1)
  2088. %47 = extractvalue { i64, i1 } %46, 0
  2089. %48 = extractvalue { i64, i1 } %46, 1
  2090. %49 = call i1 @llvm.expect.i1(i1 %48, i1 false)
  2091. br i1 %49, label %116, label %55
  2092.  
  2093. ; <label>:50: ; preds = %38
  2094. %51 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %41, i64 1)
  2095. %52 = extractvalue { i64, i1 } %51, 0
  2096. %53 = extractvalue { i64, i1 } %51, 1
  2097. %54 = call i1 @llvm.expect.i1(i1 %53, i1 false)
  2098. br i1 %54, label %117, label %68
  2099.  
  2100. ; <label>:55: ; preds = %45
  2101. %56 = bitcast { i64, i64 }* %10 to i64*
  2102. store i64 1, i64* %56, align 8
  2103. %57 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %10, i32 0, i32 1
  2104. store i64 %47, i64* %57, align 8
  2105. %58 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %10, i32 0, i32 0
  2106. %59 = load i64, i64* %58, align 8
  2107. %60 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %10, i32 0, i32 1
  2108. %61 = load i64, i64* %60, align 8
  2109. %62 = call { [0 x i32]*, i64 } @"_ZN4core5slice74_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h0fe7e803fce1e20aE"([0 x i32]* noalias nonnull readonly %0, i64 %1, i64 %59, i64 %61)
  2110. %63 = extractvalue { [0 x i32]*, i64 } %62, 0
  2111. %64 = extractvalue { [0 x i32]*, i64 } %62, 1
  2112. br label %65
  2113.  
  2114. ; <label>:65: ; preds = %55
  2115. %66 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %11, i32 0, i32 0
  2116. store [0 x i32]* %63, [0 x i32]** %66, align 8
  2117. %67 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %11, i32 0, i32 1
  2118. store i64 %64, i64* %67, align 8
  2119. br label %44
  2120.  
  2121. ; <label>:68: ; preds = %50
  2122. store i64 %52, i64* %9, align 8
  2123. %69 = load i64, i64* %9, align 8
  2124. %70 = call { [0 x i32]*, i64 } @"_ZN4core5slice74_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17h41f64f54e8d1b7d6E"([0 x i32]* noalias nonnull readonly %0, i64 %1, i64 %69)
  2125. %71 = extractvalue { [0 x i32]*, i64 } %70, 0
  2126. %72 = extractvalue { [0 x i32]*, i64 } %70, 1
  2127. br label %73
  2128.  
  2129. ; <label>:73: ; preds = %68
  2130. %74 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %11, i32 0, i32 0
  2131. store [0 x i32]* %71, [0 x i32]** %74, align 8
  2132. %75 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %11, i32 0, i32 1
  2133. store i64 %72, i64* %75, align 8
  2134. br label %44
  2135.  
  2136. ; <label>:76: ; preds = %35
  2137. store i64 1, i64* %7, align 8
  2138. %77 = load i64, i64* %7, align 8
  2139. %78 = call { [0 x i32]*, i64 } @"_ZN4core5slice74_$LT$impl$u20$core..ops..index..Index$LT$I$GT$$u20$for$u20$$u5b$T$u5d$$GT$5index17hd2e2694457d96551E"([0 x i32]* noalias nonnull readonly %0, i64 %1, i64 %77)
  2140. %79 = extractvalue { [0 x i32]*, i64 } %78, 0
  2141. %80 = extractvalue { [0 x i32]*, i64 } %78, 1
  2142. br label %84
  2143.  
  2144. ; <label>:81: ; preds = %35
  2145. %82 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %8, i32 0, i32 0
  2146. store [0 x i32]* %0, [0 x i32]** %82, align 8
  2147. %83 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %8, i32 0, i32 1
  2148. store i64 %1, i64* %83, align 8
  2149. br label %87
  2150.  
  2151. ; <label>:84: ; preds = %76
  2152. %85 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %8, i32 0, i32 0
  2153. store [0 x i32]* %79, [0 x i32]** %85, align 8
  2154. %86 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %8, i32 0, i32 1
  2155. store i64 %80, i64* %86, align 8
  2156. br label %87
  2157.  
  2158. ; <label>:87: ; preds = %84, %81
  2159. %88 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %8, i32 0, i32 0
  2160. %89 = load [0 x i32]*, [0 x i32]** %88, align 8, !nonnull !3
  2161. %90 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %8, i32 0, i32 1
  2162. %91 = load i64, i64* %90, align 8
  2163. %92 = call zeroext i1 @"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8is_empty17h7069f18437424c5eE"([0 x i32]* noalias nonnull readonly %89, i64 %91)
  2164. br label %93
  2165.  
  2166. ; <label>:93: ; preds = %87
  2167. %94 = xor i1 %92, true
  2168. br i1 %94, label %95, label %44
  2169.  
  2170. ; <label>:95: ; preds = %93
  2171. %96 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %8, i32 0, i32 0
  2172. %97 = load [0 x i32]*, [0 x i32]** %96, align 8, !nonnull !3
  2173. %98 = getelementptr inbounds { [0 x i32]*, i64 }, { [0 x i32]*, i64 }* %8, i32 0, i32 1
  2174. %99 = load i64, i64* %98, align 8
  2175. %100 = call i64 @"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$3len17hab82a3a5ee843773E"([0 x i32]* noalias nonnull readonly %97, i64 %99)
  2176. store i64 %100, i64* %3, align 8
  2177. br label %101
  2178.  
  2179. ; <label>:101: ; preds = %95
  2180. store i64* %3, i64** %4, align 8
  2181. %102 = load i64*, i64** %4, align 8, !nonnull !3
  2182. %103 = call { i8*, i8* } @_ZN4core3fmt10ArgumentV13new17h62ac4e23745d2eacE(i64* noalias readonly dereferenceable(8) %102, i1 (i64*, %"core::fmt::Formatter"*)* nonnull @"_ZN4core3fmt3num54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h4b475879c6110157E")
  2183. %104 = extractvalue { i8*, i8* } %103, 0
  2184. %105 = extractvalue { i8*, i8* } %103, 1
  2185. br label %106
  2186.  
  2187. ; <label>:106: ; preds = %101
  2188. %107 = getelementptr inbounds [1 x { i8*, i8* }], [1 x { i8*, i8* }]* %5, i64 0, i64 0
  2189. %108 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %107, i32 0, i32 0
  2190. store i8* %104, i8** %108, align 8
  2191. %109 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %107, i32 0, i32 1
  2192. store i8* %105, i8** %109, align 8
  2193. %110 = bitcast [1 x { i8*, i8* }]* %5 to [0 x { i8*, i8* }]*
  2194. %111 = load [1 x %"core::fmt::rt::v1::Argument"]*, [1 x %"core::fmt::rt::v1::Argument"]** bitcast ({ { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], { [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] }, [0 x i8] } }** @const.i to [1 x %"core::fmt::rt::v1::Argument"]**), align 8, !nonnull !3
  2195. %112 = bitcast [1 x %"core::fmt::rt::v1::Argument"]* %111 to [0 x %"core::fmt::rt::v1::Argument"]*
  2196. call void @_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E(%"core::fmt::Arguments"* noalias nocapture sret dereferenceable(48) %6, [0 x { [0 x i8]*, i64 }]* noalias nonnull readonly bitcast ([1 x { [0 x i8]*, i64 }]* @ref.g to [0 x { [0 x i8]*, i64 }]*), i64 1, [0 x { i8*, i8* }]* noalias nonnull readonly %110, i64 1, [0 x %"core::fmt::rt::v1::Argument"]* noalias nonnull readonly %112, i64 1)
  2197. br label %113
  2198.  
  2199. ; <label>:113: ; preds = %106
  2200. %114 = load { [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*, { [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }** bitcast ({ [0 x i8], { [0 x i8]*, i64 }, [0 x i8], i32, [0 x i8], i32, [0 x i8] }** @const.k to { [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }**), align 8, !nonnull !3
  2201. call void @_ZN3std9panicking15begin_panic_fmt17h12231957b6c3aabeE(%"core::fmt::Arguments"* noalias readonly dereferenceable(48) %6, { [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(24) %114)
  2202. unreachable
  2203.  
  2204. ; <label>:115: ; preds = %21
  2205. call void @_ZN4core9panicking18panic_bounds_check17hb9ff1ec5af7b2839E({ [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(24) bitcast ({ { [0 x i8]*, i64 }, i32, i32 }* @panic_bounds_check_loc.e to { [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*), i64 0, i64 %1)
  2206. unreachable
  2207.  
  2208. ; <label>:116: ; preds = %45
  2209. call void @_ZN4core9panicking5panic17hfefa0158f97fa77bE({ [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(40) bitcast ({ { [0 x i8]*, i64 }, { [0 x i8]*, i64 }, i32, i32 }* @panic_loc.l to { [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*))
  2210. unreachable
  2211.  
  2212. ; <label>:117: ; preds = %50
  2213. call void @_ZN4core9panicking5panic17hfefa0158f97fa77bE({ [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(40) bitcast ({ { [0 x i8]*, i64 }, { [0 x i8]*, i64 }, i32, i32 }* @panic_loc.m to { [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*))
  2214. unreachable
  2215. }
  2216.  
  2217. ; Function Attrs: uwtable
  2218. define internal zeroext i1 @"_ZN19bad_position_simple21import_path_to_string28_$u7b$$u7b$closure$u7d$$u7d$17h6e8857c45441a25dE"(%"import_path_to_string::{{closure}}"* nonnull, i32* noalias readonly dereferenceable(4)) unnamed_addr #2 {
  2219. %3 = load i32, i32* %1, align 4
  2220. %4 = icmp ne i32 %3, 1
  2221. ret i1 %4
  2222. }
  2223.  
  2224. declare i32 @rust_eh_personality(i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*) unnamed_addr #3
  2225.  
  2226. ; Function Attrs: argmemonly nounwind
  2227. declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i32, i1) #4
  2228.  
  2229. ; Function Attrs: nounwind
  2230. declare void @llvm.assume(i1) #5
  2231.  
  2232. ; Function Attrs: nounwind readnone
  2233. declare i1 @llvm.expect.i1(i1, i1) #6
  2234.  
  2235. ; Function Attrs: cold noinline noreturn
  2236. declare void @_ZN4core9panicking5panic17hfefa0158f97fa77bE({ [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(40)) unnamed_addr #7
  2237.  
  2238. declare hidden zeroext i1 @_ZN4core5slice8SliceExt8is_empty17h5df57ca3a59651deE([0 x i32]* noalias nonnull readonly, i64) unnamed_addr #3
  2239.  
  2240. ; Function Attrs: nounwind readnone speculatable
  2241. declare { i64, i1 } @llvm.uadd.with.overflow.i64(i64, i64) #8
  2242.  
  2243. declare hidden void @"_ZN78_$LT$core..result..Result$LT$T$C$$u20$E$GT$$u20$as$u20$core..ops..try..Try$GT$11into_result17h20c389a4d040cb5eE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16), %"core::result::Result<usize, usize>"* noalias nocapture dereferenceable(16)) unnamed_addr #3
  2244.  
  2245. declare hidden i64 @"_ZN50_$LT$T$u20$as$u20$core..convert..From$LT$T$GT$$GT$4from17h514ffbaf3bb75a3eE"(i64) unnamed_addr #3
  2246.  
  2247. declare hidden void @"_ZN78_$LT$core..result..Result$LT$T$C$$u20$E$GT$$u20$as$u20$core..ops..try..Try$GT$10from_error17h222e7515b9cde0afE"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16), i64) unnamed_addr #3
  2248.  
  2249. declare hidden void @"_ZN78_$LT$core..result..Result$LT$T$C$$u20$E$GT$$u20$as$u20$core..ops..try..Try$GT$7from_ok17hed12cd599a454669E"(%"core::result::Result<usize, usize>"* noalias nocapture sret dereferenceable(16), i64) unnamed_addr #3
  2250.  
  2251. ; Function Attrs: nounwind readnone speculatable
  2252. declare { i64, i1 } @llvm.usub.with.overflow.i64(i64, i64) #8
  2253.  
  2254. ; Function Attrs: cold noinline noreturn
  2255. declare void @_ZN4core5slice22slice_index_order_fail17hd0a9eb5d87471258E(i64, i64) unnamed_addr #7
  2256.  
  2257. ; Function Attrs: cold noinline noreturn
  2258. declare void @_ZN4core5slice20slice_index_len_fail17h41ae248f36c196f1E(i64, i64) unnamed_addr #7
  2259.  
  2260. ; Function Attrs: cold noinline noreturn
  2261. declare void @_ZN4core9panicking18panic_bounds_check17hb9ff1ec5af7b2839E({ [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(24), i64, i64) unnamed_addr #7
  2262.  
  2263. declare zeroext i1 @"_ZN4core3fmt3num54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h4b475879c6110157E"(i64* noalias readonly dereferenceable(8), %"core::fmt::Formatter"* dereferenceable(96)) unnamed_addr #3
  2264.  
  2265. declare hidden { i8*, i8* } @_ZN4core3fmt10ArgumentV13new17h62ac4e23745d2eacE(i64* noalias readonly dereferenceable(8), i1 (i64*, %"core::fmt::Formatter"*)* nonnull) unnamed_addr #3
  2266.  
  2267. ; Function Attrs: cold noinline noreturn
  2268. declare void @_ZN3std9panicking15begin_panic_fmt17h12231957b6c3aabeE(%"core::fmt::Arguments"* noalias readonly dereferenceable(48), { [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(24)) unnamed_addr #7
  2269.  
  2270. define i32 @main(i32, i8**) unnamed_addr {
  2271. %3 = sext i32 %0 to i64
  2272. %4 = call i64 @_ZN3std2rt10lang_start17hc22bd9d4d8304f2bE(void ()* @_ZN19bad_position_simple4main17hd6968b5c65b64145E, i64 %3, i8** %1)
  2273. %5 = trunc i64 %4 to i32
  2274. ret i32 %5
  2275. }
  2276.  
  2277. declare hidden i64 @_ZN3std2rt10lang_start17hc22bd9d4d8304f2bE(void ()* nonnull, i64, i8**) unnamed_addr #3
  2278.  
  2279. ; Function Attrs: argmemonly nounwind
  2280. declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #4
  2281.  
  2282. ; Function Attrs: argmemonly nounwind
  2283. declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #4
  2284.  
  2285. attributes #0 = { inlinehint uwtable "probe-stack"="__rust_probestack" }
  2286. attributes #1 = { alwaysinline uwtable "probe-stack"="__rust_probestack" }
  2287. attributes #2 = { uwtable "probe-stack"="__rust_probestack" }
  2288. attributes #3 = { "probe-stack"="__rust_probestack" }
  2289. attributes #4 = { argmemonly nounwind }
  2290. attributes #5 = { nounwind }
  2291. attributes #6 = { nounwind readnone }
  2292. attributes #7 = { cold noinline noreturn "probe-stack"="__rust_probestack" }
  2293. attributes #8 = { nounwind readnone speculatable }
  2294.  
  2295. !llvm.module.flags = !{!0}
  2296.  
  2297. !0 = !{i32 7, !"PIE Level", i32 2}
  2298. !1 = !{i64 0, i64 2}
  2299. !2 = !{i8 0, i8 2}
  2300. !3 = !{}
Add Comment
Please, Sign In to add comment