; ModuleID = 'vec_in_place2.ce5efceb0ce65a83-cgu.0' source_filename = "vec_in_place2.ce5efceb0ce65a83-cgu.0" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" %Foo = type { i64, i64, i64, i64 } %"{closure@core::iter::adapters::map::map_fold<[u64; 4], Foo, (), {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}, {closure@core::iter::traits::iterator::Iterator::for_each::call::extend_trusted, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>>::{closure#0}}>::{closure#0}}>::{closure#0}}" = type { %"{closure@core::iter::traits::iterator::Iterator::for_each::call::extend_trusted, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>>::{closure#0}}>::{closure#0}}", %"{closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}" } %"{closure@core::iter::traits::iterator::Iterator::for_each::call::extend_trusted, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>>::{closure#0}}>::{closure#0}}" = type { %"{closure@alloc::vec::Vec::extend_trusted, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>>::{closure#0}}" } %"{closure@alloc::vec::Vec::extend_trusted, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>>::{closure#0}}" = type { %"alloc::vec::set_len_on_drop::SetLenOnDrop<'_>", ptr } %"alloc::vec::set_len_on_drop::SetLenOnDrop<'_>" = type { ptr, i64 } %"{closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}" = type {} %"alloc::vec::into_iter::IntoIter<[u64; 4]>" = type { ptr, ptr, i64, ptr, %"core::marker::PhantomData<[u64; 4]>", %"core::mem::manually_drop::ManuallyDrop" } %"core::marker::PhantomData<[u64; 4]>" = type {} %"core::mem::manually_drop::ManuallyDrop" = type { %"alloc::alloc::Global" } %"alloc::alloc::Global" = type {} %"core::option::Option" = type { i64, [1 x i64] } %"core::option::Option<[u64; 4]>" = type { i64, [4 x i64] } %"core::ptr::metadata::PtrComponents<[u64; 4]>" = type { ptr, {} } %"core::ptr::metadata::PtrRepr<[u64; 4]>" = type { [1 x i64] } %"alloc::vec::Vec" = type { %"alloc::raw_vec::RawVec", i64 } %"alloc::raw_vec::RawVec" = type { i64, ptr, %"alloc::alloc::Global" } %"core::iter::adapters::map::Map, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>" = type { %"alloc::vec::into_iter::IntoIter<[u64; 4]>", %"{closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}" } %"core::fmt::Arguments<'_>" = type { { ptr, i64 }, { ptr, i64 }, %"core::option::Option<&[core::fmt::rt::Placeholder]>" } %"core::option::Option<&[core::fmt::rt::Placeholder]>" = type { ptr, [1 x i64] } %"core::ptr::metadata::PtrComponents<[Foo]>" = type { ptr, i64 } %"core::ptr::metadata::PtrRepr<[Foo]>" = type { [2 x i64] } %"alloc::raw_vec::RawVec<[u64; 4]>" = type { i64, ptr, %"alloc::alloc::Global" } %"core::option::Option>" = type { ptr, [5 x i64] } %"core::alloc::layout::Layout" = type { i64, i64 } %"core::result::Result" = type { i64, [1 x i64] } %"core::result::Result, core::alloc::AllocError>" = type { ptr, [1 x i64] } %"alloc::vec::in_place_drop::InPlaceDstDataSrcBufDrop<[u64; 4], Foo>" = type { ptr, i64, i64, %"core::marker::PhantomData<[u64; 4]>" } %"core::ptr::metadata::PtrComponents<[[u64; 4]]>" = type { ptr, i64 } %"core::ptr::metadata::PtrRepr<[[u64; 4]]>" = type { [2 x i64] } %"core::ptr::metadata::PtrComponents<[u8]>" = type { ptr, i64 } %"core::ptr::metadata::PtrRepr<[u8]>" = type { [2 x i64] } %"core::ptr::non_null::NonNull<[u8]>" = type { { ptr, i64 } } %"core::ops::control_flow::ControlFlow, core::ptr::non_null::NonNull<[u8]>>" = type { ptr, [1 x i64] } %"core::result::Result, alloc::collections::TryReserveError>" = type { i64, [2 x i64] } %"alloc::collections::TryReserveErrorKind" = type { i64, [1 x i64] } %"alloc::collections::TryReserveError" = type { %"alloc::collections::TryReserveErrorKind" } %"core::result::Result::Err" = type { %"alloc::collections::TryReserveErrorKind" } %"core::result::Result" = type { i64, [2 x i64] } %"core::ops::control_flow::ControlFlow, core::alloc::layout::Layout>" = type { i64, [2 x i64] } %"core::result::Result<(), alloc::collections::TryReserveErrorKind>" = type { i64, [1 x i64] } %"core::result::Result<(), alloc::collections::TryReserveError>" = type { i64, [1 x i64] } %"core::option::Option<(core::ptr::non_null::NonNull, core::alloc::layout::Layout)>" = type { [1 x i64], i64, [1 x i64] } %"core::result::Result::Err" = type { %"alloc::collections::TryReserveError" } %"core::ops::control_flow::ControlFlow, core::ptr::non_null::NonNull<[u8]>>" = type { i64, [2 x i64] } %"core::result::Result" = type { i64, [1 x i64] } %"core::ops::control_flow::ControlFlow, usize>" = type { i64, [1 x i64] } %">::collect_in_place::LoopGuard<'_, core::iter::adapters::map::Map, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>>" = type { ptr, i64, i64, ptr } %"core::mem::manually_drop::ManuallyDrop>" = type { %"alloc::vec::Vec<[u64; 4]>" } %"alloc::vec::Vec<[u64; 4]>" = type { %"alloc::raw_vec::RawVec<[u64; 4]>", i64 } @alloc_31365cfefba383c4d2bf6b6a04cc10aa = private unnamed_addr constant <{ [17 x i8] }> <{ [17 x i8] c"capacity overflow" }>, align 1 @alloc_e760b8a82485eab475ddc4c0d696a7ac = private unnamed_addr constant <{ ptr, [8 x i8] }> <{ ptr @alloc_31365cfefba383c4d2bf6b6a04cc10aa, [8 x i8] c"\11\00\00\00\00\00\00\00" }>, align 8 @alloc_513570631223a12912d85da2bec3b15a = private unnamed_addr constant <{}> zeroinitializer, align 8 @0 = private unnamed_addr constant <{ [8 x i8], [8 x i8] }> <{ [8 x i8] zeroinitializer, [8 x i8] undef }>, align 8 @alloc_e34aafbe7f870eb2e58134916aca4f37 = private unnamed_addr constant <{ [65 x i8] }> <{ [65 x i8] c"/rustc/FAKE_PREFIX/library/alloc/src/vec/spec_from_iter_nested.rs" }>, align 1 @alloc_96b57adb4fac4c9226d9e2128897eec6 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @alloc_e34aafbe7f870eb2e58134916aca4f37, [16 x i8] c"A\00\00\00\00\00\00\00;\00\00\00\12\00\00\00" }>, align 8 @alloc_424341b75ece3fa20496f1c69b9fb0ac = private unnamed_addr constant <{ [111 x i8] }> <{ [111 x i8] c"unsafe precondition(s) violated: ptr::write_bytes requires that the destination pointer is aligned and non-null" }>, align 1 @alloc_763310d78c99c2c1ad3f8a9821e942f3 = private unnamed_addr constant <{ [61 x i8] }> <{ [61 x i8] c"is_nonoverlapping: `size_of::() * count` overflows a usize" }>, align 1 @alloc_8df0580a595a87d56789d20c7318e185 = private unnamed_addr constant <{ [166 x i8] }> <{ [166 x i8] c"unsafe precondition(s) violated: ptr::copy_nonoverlapping requires that both pointer arguments are aligned and non-null and the specified memory ranges do not overlap" }>, align 1 @alloc_fad0cd83b7d1858a846a172eb260e593 = private unnamed_addr constant <{ [42 x i8] }> <{ [42 x i8] c"is_aligned_to: align is not a power-of-two" }>, align 1 @alloc_041983ee8170efdaaf95ba67fd072d26 = private unnamed_addr constant <{ ptr, [8 x i8] }> <{ ptr @alloc_fad0cd83b7d1858a846a172eb260e593, [8 x i8] c"*\00\00\00\00\00\00\00" }>, align 8 @alloc_57f39e09f7c9ad4245f74159f6bbb2c2 = private unnamed_addr constant <{ [52 x i8] }> <{ [52 x i8] c"/rustc/FAKE_PREFIX/library/core/src/ptr/const_ptr.rs" }>, align 1 @alloc_2e7b7412f5e75426c5c1330e0553d3d4 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @alloc_57f39e09f7c9ad4245f74159f6bbb2c2, [16 x i8] c"4\00\00\00\00\00\00\00I\06\00\00\0D\00\00\00" }>, align 8 @alloc_d4d2a2a8539eafc62756407d946babb3 = private unnamed_addr constant <{ [110 x i8] }> <{ [110 x i8] c"unsafe precondition(s) violated: ptr::read_volatile requires that the pointer argument is aligned and non-null" }>, align 1 @alloc_20b3d155afd5c58c42e598b7e6d186ef = private unnamed_addr constant <{ [93 x i8] }> <{ [93 x i8] c"unsafe precondition(s) violated: NonNull::new_unchecked requires that the pointer is non-null" }>, align 1 @alloc_ec595fc0e82ef92fc59bd74f68296eae = private unnamed_addr constant <{ [73 x i8] }> <{ [73 x i8] c"assertion failed: 0 < pointee_size && pointee_size <= isize::MAX as usize" }>, align 1 @alloc_c231e5f78f27a07c482215d3f9f5f290 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @alloc_57f39e09f7c9ad4245f74159f6bbb2c2, [16 x i8] c"4\00\00\00\00\00\00\006\03\00\00\09\00\00\00" }>, align 8 @alloc_7efb3a7632b3620f628ce83a521b4d9b = private unnamed_addr constant <{ [71 x i8] }> <{ [71 x i8] c"unsafe precondition(s) violated: ptr::sub_ptr requires `self >= origin`" }>, align 1 @alloc_ab14703751a9eb3585c49b2e55e9a9e5 = private unnamed_addr constant <{ [104 x i8] }> <{ [104 x i8] c"unsafe precondition(s) violated: hint::assert_unchecked must never be called when the condition is false" }>, align 1 @alloc_0908bba5e44bf6b68df6ef9e1315e02f = private unnamed_addr constant <{ [61 x i8] }> <{ [61 x i8] c"/rustc/FAKE_PREFIX/library/core/src/iter/traits/exact_size.rs" }>, align 1 @alloc_95bc2d35637c8ed17885120b7482e1e2 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @alloc_0908bba5e44bf6b68df6ef9e1315e02f, [16 x i8] c"=\00\00\00\00\00\00\00z\00\00\00\09\00\00\00" }>, align 8 @alloc_5520568bf7160668b27eb5364209ae93 = private unnamed_addr constant <{ [51 x i8] }> <{ [51 x i8] c"/rustc/FAKE_PREFIX/library/core/src/alloc/layout.rs" }>, align 1 @alloc_f1201b7397c61eff348903eecf3ad8b4 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @alloc_5520568bf7160668b27eb5364209ae93, [16 x i8] c"3\00\00\00\00\00\00\00\C1\01\00\00)\00\00\00" }>, align 8 @str.0 = internal unnamed_addr constant [25 x i8] c"attempt to divide by zero" @vtable.1 = private unnamed_addr constant <{ ptr, [16 x i8], ptr }> <{ ptr @"_ZN4core3ptr58drop_in_place$LT$$RF$core..option..Option$LT$usize$GT$$GT$17h5c5e42855fa4b032E", [16 x i8] c"\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00", ptr @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17ha26729cfab801f54E" }>, align 8 @alloc_db9856a25bcdd3f11ac5a3c63f3df4af = private unnamed_addr constant <{ [47 x i8] }> <{ [47 x i8] c"/rustc/FAKE_PREFIX/library/alloc/src/vec/mod.rs" }>, align 1 @alloc_c2ef7e0569d617a990bfd4692cfec029 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @alloc_db9856a25bcdd3f11ac5a3c63f3df4af, [16 x i8] c"/\00\00\00\00\00\00\00\B8\0B\00\00\0D\00\00\00" }>, align 8 @alloc_beeb34d8647ef17db11172cea855d525 = private unnamed_addr constant <{ [36 x i8] }> <{ [36 x i8] c"in_place_collectible() prevents this" }>, align 1 @alloc_6a910050c9b05c7991f9e03754df3823 = private unnamed_addr constant <{ ptr, [8 x i8] }> <{ ptr @alloc_beeb34d8647ef17db11172cea855d525, [8 x i8] c"$\00\00\00\00\00\00\00" }>, align 8 @alloc_fab3746ce04f32e67ee6ea8405262056 = private unnamed_addr constant <{ [60 x i8] }> <{ [60 x i8] c"/rustc/FAKE_PREFIX/library/alloc/src/vec/in_place_collect.rs" }>, align 1 @alloc_8fba8d7ccfbc9d2cff6b63c8d605798e = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @alloc_fab3746ce04f32e67ee6ea8405262056, [16 x i8] c"<\00\00\00\00\00\00\00\C6\00\00\00\09\00\00\00" }>, align 8 @__rust_no_alloc_shim_is_unstable = external global i8 @1 = private unnamed_addr constant <{ [8 x i8], [8 x i8] }> <{ [8 x i8] c"\01\00\00\00\00\00\00\80", [8 x i8] undef }>, align 8 @alloc_37d2e53432a03a1f90b3e7253015eaf9 = private unnamed_addr constant <{ [4 x i8] }> <{ [4 x i8] c"None" }>, align 1 @alloc_9535bf4c204f3eb9b19ec2c83e446e52 = private unnamed_addr constant <{ [4 x i8] }> <{ [4 x i8] c"Some" }>, align 1 @vtable.2 = private unnamed_addr constant <{ ptr, [16 x i8], ptr }> <{ ptr @"_ZN4core3ptr30drop_in_place$LT$$RF$usize$GT$17haaf821cd71c19ff3E", [16 x i8] c"\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00", ptr @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h6db471e08dda6be6E" }>, align 8 ; as core::iter::traits::iterator::Iterator>::index_from_end_unchecked ; Function Attrs: inlinehint nonlazybind uwtable define void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$24index_from_end_unchecked17hfc88e8970d8e3af0E"(ptr sret(%Foo) align 8 %_0, ptr align 8 %self, i64 %idx) unnamed_addr #0 { start: %_6 = alloca { [4 x i64] }, align 8 %val = alloca [4 x i64], align 8 ; call ::index_from_end_unchecked_inner call void @"_ZN79_$LT$I$u20$as$u20$core..iter..traits..unchecked_iterator..SpecIndexedAccess$GT$30index_from_end_unchecked_inner17h727d6efa915e51e5E"(ptr sret([4 x i64]) align 8 %val, ptr align 8 %self, i64 %idx) %_5 = getelementptr i8, ptr %self, i64 32 %0 = load <4 x i64>, ptr %val, align 8 store <4 x i64> %0, ptr %_6, align 8 ; call vec_in_place2::vec_iterator_cast_aggregate::{{closure}} call void @"_ZN13vec_in_place227vec_iterator_cast_aggregate28_$u7b$$u7b$closure$u7d$$u7d$17h49196cbc0edbd238E"(ptr sret(%Foo) align 8 %_0, ptr align 1 %_5, ptr align 8 %_6) ret void } ; as core::iter::traits::iterator::Iterator>::fold ; Function Attrs: nonlazybind uwtable define void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h7586c65352927850E"(ptr align 8 %self, ptr align 8 %g) unnamed_addr #1 { start: %_5 = alloca %"{closure@core::iter::adapters::map::map_fold<[u64; 4], Foo, (), {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}, {closure@core::iter::traits::iterator::Iterator::for_each::call::extend_trusted, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>>::{closure#0}}>::{closure#0}}>::{closure#0}}", align 8 %_4 = alloca %"alloc::vec::into_iter::IntoIter<[u64; 4]>", align 8 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_4, ptr align 8 %self, i64 32, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_5, ptr align 8 %g, i64 24, i1 false) ; call core::iter::traits::iterator::Iterator::fold call void @_ZN4core4iter6traits8iterator8Iterator4fold17h95c14576a81f2302E(ptr align 8 %_4, ptr align 8 %_5) ret void } ; as core::iter::traits::iterator::Iterator>::size_hint ; Function Attrs: inlinehint nonlazybind uwtable define void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h0fd19486d6554446E"(ptr sret({ i64, %"core::option::Option" }) align 8 %_0, ptr align 8 %self) unnamed_addr #0 { start: ; call as core::iter::traits::iterator::Iterator>::size_hint call void @"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17hf20dd92de4cd3cbeE"(ptr sret({ i64, %"core::option::Option" }) align 8 %_0, ptr align 8 %self) ret void } ; as core::iter::traits::iterator::Iterator>::index_from_end_unchecked ; Function Attrs: inlinehint nonlazybind uwtable define void @"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$24index_from_end_unchecked17h43b8872b965e6d69E"(ptr sret([4 x i64]) align 8 %_0, ptr align 8 %self, i64 %idx) unnamed_addr #0 { start: %self2 = alloca ptr, align 8 %self1 = alloca ptr, align 8 br label %bb2 bb2: ; preds = %start %_7 = getelementptr inbounds i8, ptr %self, i64 24 %end = load ptr, ptr %_7, align 8, !nonnull !3, !noundef !3 br label %bb7 bb7: ; preds = %bb2 %count = sub nsw i64 0, %idx %_18 = getelementptr inbounds [4 x i64], ptr %end, i64 %count store ptr %_18, ptr %self2, align 8 br label %bb8 bb8: ; preds = %bb6, %bb7 %src = load ptr, ptr %self2, align 8, !noundef !3 %0 = load <4 x i64>, ptr %src, align 8 store <4 x i64> %0, ptr %_0, align 8 br label %bb3 bb6: ; No predecessors! store ptr %end, ptr %self2, align 8 br label %bb8 bb3: ; preds = %bb5, %bb8 ret void bb1: ; No predecessors! br label %bb5 bb5: ; preds = %bb4, %bb1 store ptr inttoptr (i64 8 to ptr), ptr %self1, align 8 %1 = load <4 x i64>, ptr inttoptr (i64 8 to ptr), align 8 store <4 x i64> %1, ptr %_0, align 8 br label %bb3 bb4: ; No predecessors! ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h21c8f7e2345c8932E"(ptr inttoptr (i64 8 to ptr)) #18 br label %bb5 } ; as core::iter::traits::iterator::Iterator>::next ; Function Attrs: inlinehint nonlazybind uwtable define void @"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h28c0b28329d31c87E"(ptr sret(%"core::option::Option<[u64; 4]>") align 8 %_0, ptr align 8 %self) unnamed_addr #0 { start: %0 = alloca ptr, align 8 %_26 = alloca %"core::ptr::metadata::PtrComponents<[u64; 4]>", align 8 %_25 = alloca %"core::ptr::metadata::PtrRepr<[u64; 4]>", align 8 %_19 = alloca [4 x i64], align 8 %_18 = alloca ptr, align 8 %_14 = alloca ptr, align 8 %ptr = alloca ptr, align 8 br label %bb4 bb4: ; preds = %start %self1 = getelementptr inbounds i8, ptr %self, i64 8 %_16 = getelementptr inbounds i8, ptr %self, i64 24 %1 = load ptr, ptr %_16, align 8, !nonnull !3, !noundef !3 store ptr %1, ptr %_14, align 8 %2 = getelementptr inbounds i8, ptr %self, i64 8 %self2 = load ptr, ptr %2, align 8, !nonnull !3, !noundef !3 %self3 = load ptr, ptr %_14, align 8, !nonnull !3, !noundef !3 %_11 = icmp eq ptr %self2, %self3 br i1 %_11, label %bb5, label %bb6 bb6: ; preds = %bb4 %3 = getelementptr inbounds i8, ptr %self, i64 8 %old = load ptr, ptr %3, align 8, !nonnull !3, !noundef !3 %_33 = getelementptr inbounds [4 x i64], ptr %old, i64 1 store ptr %_33, ptr %_18, align 8 %4 = getelementptr inbounds i8, ptr %self, i64 8 %5 = load ptr, ptr %_18, align 8, !nonnull !3, !noundef !3 store ptr %5, ptr %4, align 8 store ptr %old, ptr %ptr, align 8 br label %bb7 bb5: ; preds = %bb4 store i64 0, ptr %_0, align 8 br label %bb8 bb7: ; preds = %bb3, %bb6 %self7 = load ptr, ptr %ptr, align 8, !nonnull !3, !noundef !3 %6 = load <4 x i64>, ptr %self7, align 8 store <4 x i64> %6, ptr %_19, align 8 %7 = getelementptr inbounds i8, ptr %_0, i64 8 %8 = load <4 x i64>, ptr %_19, align 8 store <4 x i64> %8, ptr %7, align 8 store i64 1, ptr %_0, align 8 br label %bb9 bb8: ; preds = %bb2, %bb5 br label %bb9 bb1: ; No predecessors! %9 = getelementptr inbounds i8, ptr %self, i64 8 %self4 = load ptr, ptr %9, align 8, !nonnull !3, !noundef !3 %10 = getelementptr inbounds i8, ptr %self, i64 24 %_8 = load ptr, ptr %10, align 8, !noundef !3 %_4 = icmp eq ptr %self4, %_8 br i1 %_4, label %bb2, label %bb3 bb3: ; preds = %bb1 %11 = getelementptr inbounds i8, ptr %self, i64 24 %self5 = load ptr, ptr %11, align 8, !noundef !3 %12 = getelementptr i8, ptr %self5, i64 -1 store ptr %12, ptr %0, align 8 %self6 = load ptr, ptr %0, align 8, !noundef !3 store ptr %self6, ptr %_26, align 8 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_25, ptr align 8 %_26, i64 8, i1 false) %_9 = load ptr, ptr %_25, align 8, !noundef !3 %13 = getelementptr inbounds i8, ptr %self, i64 24 store ptr %_9, ptr %13, align 8 %14 = getelementptr inbounds i8, ptr %self, i64 8 %15 = load ptr, ptr %14, align 8, !nonnull !3, !noundef !3 store ptr %15, ptr %ptr, align 8 br label %bb7 bb2: ; preds = %bb1 store i64 0, ptr %_0, align 8 br label %bb8 bb9: ; preds = %bb8, %bb7 ret void } ; as core::iter::traits::iterator::Iterator>::size_hint ; Function Attrs: inlinehint nonlazybind uwtable define void @"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17hf20dd92de4cd3cbeE"(ptr sret({ i64, %"core::option::Option" }) align 8 %_0, ptr align 8 %self) unnamed_addr #0 { start: %_14 = alloca %"core::option::Option", align 8 %exact = alloca i64, align 8 br label %bb2 bb2: ; preds = %start %_11 = getelementptr inbounds i8, ptr %self, i64 24 %self1 = load ptr, ptr %_11, align 8, !nonnull !3, !noundef !3 %0 = getelementptr inbounds i8, ptr %self, i64 8 %subtracted = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 ; call core::ptr::const_ptr::::sub_ptr %1 = call i64 @"_ZN4core3ptr9const_ptr33_$LT$impl$u20$$BP$const$u20$T$GT$7sub_ptr17hf0fa62fb5c38455eE"(ptr %self1, ptr %subtracted) store i64 %1, ptr %exact, align 8 br label %bb3 bb3: ; preds = %bb1, %bb2 %_13 = load i64, ptr %exact, align 8, !noundef !3 %_15 = load i64, ptr %exact, align 8, !noundef !3 %2 = getelementptr inbounds i8, ptr %_14, i64 8 store i64 %_15, ptr %2, align 8 store i64 1, ptr %_14, align 8 store i64 %_13, ptr %_0, align 8 %3 = load i64, ptr %_14, align 8, !range !4, !noundef !3 %4 = getelementptr inbounds i8, ptr %_14, i64 8 %5 = load i64, ptr %4, align 8 %6 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %3, ptr %6, align 8 %7 = getelementptr inbounds i8, ptr %6, i64 8 store i64 %5, ptr %7, align 8 ret void bb1: ; No predecessors! %8 = getelementptr inbounds i8, ptr %self, i64 24 %self2 = load ptr, ptr %8, align 8, !noundef !3 %self3 = ptrtoint ptr %self2 to i64 %9 = getelementptr inbounds i8, ptr %self, i64 8 %self4 = load ptr, ptr %9, align 8, !nonnull !3, !noundef !3 %rhs = ptrtoint ptr %self4 to i64 %10 = sub i64 %self3, %rhs store i64 %10, ptr %exact, align 8 br label %bb3 } ; as alloc::vec::in_place_collect::AsVecIntoIter>::as_into_iter ; Function Attrs: nonlazybind uwtable define align 8 ptr @"_ZN104_$LT$alloc..vec..into_iter..IntoIter$LT$T$GT$$u20$as$u20$alloc..vec..in_place_collect..AsVecIntoIter$GT$12as_into_iter17h35cce9d33b473ec6E"(ptr align 8 %self) unnamed_addr #1 { start: ret ptr %self } ; as alloc::vec::spec_from_iter_nested::SpecFromIterNested>::from_iter ; Function Attrs: nonlazybind uwtable define void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h1d6ddde360fa5310E"(ptr sret(%"alloc::vec::Vec") align 8 %_0, ptr align 8 %iterator) unnamed_addr #1 personality ptr @rust_eh_personality { start: %0 = alloca { ptr, i32, [1 x i32] }, align 8 %_13 = alloca i8, align 1 %_12 = alloca %"core::iter::adapters::map::Map, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>", align 8 %_8 = alloca %"core::fmt::Arguments<'_>", align 8 %_3 = alloca { i64, %"core::option::Option" }, align 8 %vector = alloca %"alloc::vec::Vec", align 8 store i8 1, ptr %_13, align 1 ; invoke as core::iter::traits::iterator::Iterator>::size_hint invoke void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h0fd19486d6554446E"(ptr sret({ i64, %"core::option::Option" }) align 8 %_3, ptr align 8 %iterator) to label %bb1 unwind label %cleanup bb8: ; preds = %bb5, %cleanup %1 = load i8, ptr %_13, align 1, !range !5, !noundef !3 %2 = trunc i8 %1 to i1 br i1 %2, label %bb7, label %bb6 cleanup: ; preds = %bb2, %bb3, %start %3 = landingpad { ptr, i32 } cleanup %4 = extractvalue { ptr, i32 } %3, 0 %5 = extractvalue { ptr, i32 } %3, 1 store ptr %4, ptr %0, align 8 %6 = getelementptr inbounds i8, ptr %0, i64 8 store i32 %5, ptr %6, align 8 br label %bb8 bb1: ; preds = %start %7 = getelementptr inbounds i8, ptr %_3, i64 8 %_5 = load i64, ptr %7, align 8, !range !4, !noundef !3 %8 = icmp eq i64 %_5, 1 br i1 %8, label %bb3, label %bb2 bb3: ; preds = %bb1 %9 = getelementptr inbounds i8, ptr %_3, i64 8 %10 = getelementptr inbounds i8, ptr %9, i64 8 %upper = load i64, ptr %10, align 8, !noundef !3 ; invoke alloc::raw_vec::RawVec::allocate_in %11 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h713bd34ca98ba10eE"(i64 %upper, i1 zeroext false) to label %bb9 unwind label %cleanup bb2: ; preds = %bb1 store ptr @alloc_e760b8a82485eab475ddc4c0d696a7ac, ptr %_8, align 8 %12 = getelementptr inbounds i8, ptr %_8, i64 8 store i64 1, ptr %12, align 8 %13 = load ptr, ptr @0, align 8, !align !6, !noundef !3 %14 = load i64, ptr getelementptr inbounds (i8, ptr @0, i64 8), align 8 %15 = getelementptr inbounds i8, ptr %_8, i64 32 store ptr %13, ptr %15, align 8 %16 = getelementptr inbounds i8, ptr %15, i64 8 store i64 %14, ptr %16, align 8 %17 = getelementptr inbounds i8, ptr %_8, i64 16 store ptr @alloc_513570631223a12912d85da2bec3b15a, ptr %17, align 8 %18 = getelementptr inbounds i8, ptr %17, i64 8 store i64 0, ptr %18, align 8 ; invoke core::panicking::panic_fmt invoke void @_ZN4core9panicking9panic_fmt17hf5ccdde0d2de76d8E(ptr align 8 %_8, ptr align 8 @alloc_96b57adb4fac4c9226d9e2128897eec6) #19 to label %unreachable unwind label %cleanup bb9: ; preds = %bb3 %_15.0 = extractvalue { i64, ptr } %11, 0 %_15.1 = extractvalue { i64, ptr } %11, 1 store i64 %_15.0, ptr %vector, align 8 %19 = getelementptr inbounds i8, ptr %vector, i64 8 store ptr %_15.1, ptr %19, align 8 %20 = getelementptr inbounds i8, ptr %vector, i64 16 store i64 0, ptr %20, align 8 store i8 0, ptr %_13, align 1 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_12, ptr align 8 %iterator, i64 32, i1 false) ; invoke as alloc::vec::spec_extend::SpecExtend>::spec_extend invoke void @"_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$T$C$I$GT$$GT$11spec_extend17hf78b34d7ace68196E"(ptr align 8 %vector, ptr align 8 %_12) to label %bb4 unwind label %cleanup1 bb5: ; preds = %cleanup1 ; invoke core::ptr::drop_in_place> invoke void @"_ZN4core3ptr62drop_in_place$LT$alloc..vec..Vec$LT$vec_in_place2..Foo$GT$$GT$17h9be811bcee7f46b9E"(ptr align 8 %vector) #20 to label %bb8 unwind label %terminate cleanup1: ; preds = %bb9 %21 = landingpad { ptr, i32 } cleanup %22 = extractvalue { ptr, i32 } %21, 0 %23 = extractvalue { ptr, i32 } %21, 1 store ptr %22, ptr %0, align 8 %24 = getelementptr inbounds i8, ptr %0, i64 8 store i32 %23, ptr %24, align 8 br label %bb5 bb4: ; preds = %bb9 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_0, ptr align 8 %vector, i64 24, i1 false) ret void terminate: ; preds = %bb7, %bb5 %25 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer %26 = extractvalue { ptr, i32 } %25, 0 %27 = extractvalue { ptr, i32 } %25, 1 ; call core::panicking::panic_in_cleanup call void @_ZN4core9panicking16panic_in_cleanup17hb44fd56a4133bb74E() #21 unreachable unreachable: ; preds = %bb2 unreachable bb6: ; preds = %bb7, %bb8 %28 = load ptr, ptr %0, align 8, !noundef !3 %29 = getelementptr inbounds i8, ptr %0, i64 8 %30 = load i32, ptr %29, align 8, !noundef !3 %31 = insertvalue { ptr, i32 } poison, ptr %28, 0 %32 = insertvalue { ptr, i32 } %31, i32 %30, 1 resume { ptr, i32 } %32 bb7: ; preds = %bb8 ; invoke core::ptr::drop_in_place,vec_in_place2::vec_iterator_cast_aggregate::{{closure}}>> invoke void @"_ZN4core3ptr196drop_in_place$LT$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$C$vec_in_place2..vec_iterator_cast_aggregate..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h3ea6733f55d3aaf0E"(ptr align 8 %iterator) #20 to label %bb6 unwind label %terminate } ; as core::ops::drop::Drop>::drop ; Function Attrs: inlinehint nonlazybind uwtable define void @"_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h91d30191eaea879dE"(ptr align 8 %self) unnamed_addr #0 personality ptr @rust_eh_personality { start: %0 = alloca { ptr, i32, [1 x i32] }, align 8 %_21 = alloca %"core::ptr::metadata::PtrComponents<[Foo]>", align 8 %_20 = alloca %"core::ptr::metadata::PtrRepr<[Foo]>", align 8 %_14 = alloca ptr, align 8 %_12 = alloca ptr, align 8 %cap = alloca i64, align 8 %_drop_allocation = alloca %"alloc::raw_vec::RawVec<[u64; 4]>", align 8 %self1 = load ptr, ptr %self, align 8, !noundef !3 %1 = getelementptr inbounds i8, ptr %self, i64 16 %capacity = load i64, ptr %1, align 8, !noundef !3 br label %bb6 bb6: ; preds = %start store i64 %capacity, ptr %cap, align 8 br label %bb7 bb7: ; preds = %bb5, %bb6 br label %bb9 bb5: ; No predecessors! store i64 0, ptr %cap, align 8 br label %bb7 bb9: ; preds = %bb8, %bb7 store ptr %self1, ptr %_14, align 8 %2 = load ptr, ptr %_14, align 8, !nonnull !3, !noundef !3 store ptr %2, ptr %_12, align 8 %_13 = load i64, ptr %cap, align 8, !range !7, !noundef !3 %3 = load ptr, ptr %_12, align 8, !nonnull !3, !noundef !3 %4 = getelementptr inbounds i8, ptr %_drop_allocation, i64 8 store ptr %3, ptr %4, align 8 store i64 %_13, ptr %_drop_allocation, align 8 %data = load ptr, ptr %self, align 8, !noundef !3 %5 = getelementptr inbounds i8, ptr %self, i64 8 %len = load i64, ptr %5, align 8, !noundef !3 store ptr %data, ptr %_21, align 8 %6 = getelementptr inbounds i8, ptr %_21, i64 8 store i64 %len, ptr %6, align 8 %7 = load ptr, ptr %_21, align 8, !noundef !3 %8 = getelementptr inbounds i8, ptr %_21, i64 8 %9 = load i64, ptr %8, align 8, !noundef !3 store ptr %7, ptr %_20, align 8 %10 = getelementptr inbounds i8, ptr %_20, i64 8 store i64 %9, ptr %10, align 8 %_7.0 = load ptr, ptr %_20, align 8, !noundef !3 %11 = getelementptr inbounds i8, ptr %_20, i64 8 %_7.1 = load i64, ptr %11, align 8, !noundef !3 br label %bb1 bb8: ; No predecessors! ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h21c8f7e2345c8932E"(ptr %self1) #18 br label %bb9 bb1: ; preds = %bb9 ; call core::ptr::drop_in_place> call void @"_ZN4core3ptr75drop_in_place$LT$alloc..raw_vec..RawVec$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$GT$17hb3c58f5a0a28a399E"(ptr align 8 %_drop_allocation) ret void bb3: ; No predecessors! ; invoke core::ptr::drop_in_place> invoke void @"_ZN4core3ptr75drop_in_place$LT$alloc..raw_vec..RawVec$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$GT$17hb3c58f5a0a28a399E"(ptr align 8 %_drop_allocation) #20 to label %bb4 unwind label %terminate terminate: ; preds = %bb3 %12 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer %13 = extractvalue { ptr, i32 } %12, 0 %14 = extractvalue { ptr, i32 } %12, 1 ; call core::panicking::panic_in_cleanup call void @_ZN4core9panicking16panic_in_cleanup17hb44fd56a4133bb74E() #21 unreachable bb4: ; preds = %bb3 %15 = load ptr, ptr %0, align 8, !noundef !3 %16 = getelementptr inbounds i8, ptr %0, i64 8 %17 = load i32, ptr %16, align 8, !noundef !3 %18 = insertvalue { ptr, i32 } poison, ptr %15, 0 %19 = insertvalue { ptr, i32 } %18, i32 %17, 1 resume { ptr, i32 } %19 } ; as core::iter::traits::unchecked_iterator::UncheckedIndexedIterator>::set_front_index_from_end_unchecked ; Function Attrs: inlinehint nonlazybind uwtable define void @"_ZN128_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..unchecked_iterator..UncheckedIndexedIterator$GT$34set_front_index_from_end_unchecked17hb4f7509a317df289E"(ptr align 8 %self, i64 %new_len, i64 %old_len) unnamed_addr #0 { start: ; call as core::iter::traits::unchecked_iterator::UncheckedIndexedIterator>::set_front_index_from_end_unchecked call void @"_ZN129_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..unchecked_iterator..UncheckedIndexedIterator$GT$34set_front_index_from_end_unchecked17h7bfb211c82e5d6e0E"(ptr align 8 %self, i64 %new_len, i64 %old_len) ret void } ; as core::iter::traits::unchecked_iterator::UncheckedIndexedIterator>::set_front_index_from_end_unchecked ; Function Attrs: inlinehint nonlazybind uwtable define void @"_ZN129_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..unchecked_iterator..UncheckedIndexedIterator$GT$34set_front_index_from_end_unchecked17h7bfb211c82e5d6e0E"(ptr align 8 %self, i64 %new_len, i64 %_old_len) unnamed_addr #0 { start: %0 = alloca ptr, align 8 %_18 = alloca %"core::ptr::metadata::PtrComponents<[u64; 4]>", align 8 %_17 = alloca %"core::ptr::metadata::PtrRepr<[u64; 4]>", align 8 %_11 = alloca ptr, align 8 br label %bb2 bb2: ; preds = %start %_10 = getelementptr inbounds i8, ptr %self, i64 24 %end = load ptr, ptr %_10, align 8, !nonnull !3, !noundef !3 br label %bb6 bb6: ; preds = %bb2 %count = sub nsw i64 0, %new_len %_22 = getelementptr inbounds [4 x i64], ptr %end, i64 %count store ptr %_22, ptr %_11, align 8 br label %bb7 bb7: ; preds = %bb5, %bb6 %1 = getelementptr inbounds i8, ptr %self, i64 8 %2 = load ptr, ptr %_11, align 8, !nonnull !3, !noundef !3 store ptr %2, ptr %1, align 8 br label %bb3 bb5: ; No predecessors! store ptr %end, ptr %_11, align 8 br label %bb7 bb3: ; preds = %bb1, %bb7 ret void bb1: ; No predecessors! %3 = getelementptr inbounds i8, ptr %self, i64 8 %self1 = load ptr, ptr %3, align 8, !nonnull !3, !noundef !3 %4 = getelementptr i8, ptr %self1, i64 %new_len store ptr %4, ptr %0, align 8 %self2 = load ptr, ptr %0, align 8, !noundef !3 store ptr %self2, ptr %_18, align 8 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_17, ptr align 8 %_18, i64 8, i1 false) %_5 = load ptr, ptr %_17, align 8, !noundef !3 %5 = getelementptr inbounds i8, ptr %self, i64 24 store ptr %_5, ptr %5, align 8 br label %bb3 } ; < as core::ops::drop::Drop>::drop::DropGuard as core::ops::drop::Drop>::drop ; Function Attrs: nonlazybind uwtable define void @"_ZN157_$LT$$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h63a4951db6fc9ba6E"(ptr align 8 %self) unnamed_addr #1 { start: %_17 = alloca ptr, align 8 %_15 = alloca ptr, align 8 %cap = alloca i64, align 8 %_4 = alloca %"alloc::raw_vec::RawVec<[u64; 4]>", align 8 %_8 = load ptr, ptr %self, align 8, !nonnull !3, !align !6, !noundef !3 %slot = getelementptr i8, ptr %_8, i64 32 %src = getelementptr i8, ptr %_8, i64 32 %_9 = load ptr, ptr %self, align 8, !nonnull !3, !align !6, !noundef !3 %self1 = load ptr, ptr %_9, align 8, !nonnull !3, !noundef !3 %_10 = load ptr, ptr %self, align 8, !nonnull !3, !align !6, !noundef !3 %0 = getelementptr inbounds i8, ptr %_10, i64 16 %capacity = load i64, ptr %0, align 8, !noundef !3 br label %bb3 bb3: ; preds = %start store i64 %capacity, ptr %cap, align 8 br label %bb4 bb4: ; preds = %bb2, %bb3 br label %bb6 bb2: ; No predecessors! store i64 0, ptr %cap, align 8 br label %bb4 bb6: ; preds = %bb5, %bb4 store ptr %self1, ptr %_17, align 8 %1 = load ptr, ptr %_17, align 8, !nonnull !3, !noundef !3 store ptr %1, ptr %_15, align 8 %_16 = load i64, ptr %cap, align 8, !range !7, !noundef !3 %2 = load ptr, ptr %_15, align 8, !nonnull !3, !noundef !3 %3 = getelementptr inbounds i8, ptr %_4, i64 8 store ptr %2, ptr %3, align 8 store i64 %_16, ptr %_4, align 8 ; call core::ptr::drop_in_place> call void @"_ZN4core3ptr75drop_in_place$LT$alloc..raw_vec..RawVec$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$GT$17hb3c58f5a0a28a399E"(ptr align 8 %_4) ret void bb5: ; No predecessors! ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h21c8f7e2345c8932E"(ptr %self1) #18 br label %bb6 } ; <>::collect_in_place::LoopGuard as core::ops::drop::Drop>::drop ; Function Attrs: inlinehint nonlazybind uwtable define void @"_ZN162_$LT$$LT$I$u20$as$u20$alloc..vec..in_place_collect..SpecInPlaceCollect$LT$T$C$I$GT$$GT$..collect_in_place..LoopGuard$LT$I$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h5450df393cada6a8E"(ptr align 8 %self) unnamed_addr #0 { start: %0 = alloca i8, align 1 %_19 = alloca %"core::ptr::metadata::PtrComponents<[Foo]>", align 8 %_18 = alloca %"core::ptr::metadata::PtrRepr<[Foo]>", align 8 %1 = getelementptr inbounds i8, ptr %self, i64 8 %_3 = load i64, ptr %1, align 8, !noundef !3 %2 = getelementptr inbounds i8, ptr %self, i64 16 %_4 = load i64, ptr %2, align 8, !noundef !3 %new_len = sub i64 %_3, %_4 br label %bb3 bb3: ; preds = %bb1, %start store i8 0, ptr %0, align 1 %3 = load i8, ptr %0, align 1, !range !5, !noundef !3 %_8 = trunc i8 %3 to i1 br i1 %_8, label %bb4, label %bb7 bb1: ; No predecessors! %_16 = load ptr, ptr %self, align 8, !nonnull !3, !align !6, !noundef !3 %4 = getelementptr inbounds i8, ptr %self, i64 8 %_7 = load i64, ptr %4, align 8, !noundef !3 ; call as core::iter::traits::unchecked_iterator::UncheckedIndexedIterator>::set_front_index_from_end_unchecked call void @"_ZN128_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..unchecked_iterator..UncheckedIndexedIterator$GT$34set_front_index_from_end_unchecked17hb4f7509a317df289E"(ptr align 8 %_16, i64 %new_len, i64 %_7) br label %bb3 bb7: ; preds = %bb5, %bb6, %bb3 ret void bb4: ; preds = %bb3 %5 = getelementptr inbounds i8, ptr %self, i64 16 %_10 = load i64, ptr %5, align 8, !noundef !3 %6 = getelementptr inbounds i8, ptr %self, i64 8 %_11 = load i64, ptr %6, align 8, !noundef !3 %_9 = icmp ne i64 %_10, %_11 br i1 %_9, label %bb5, label %bb6 bb6: ; preds = %bb4 br label %bb7 bb5: ; preds = %bb4 %7 = getelementptr inbounds i8, ptr %self, i64 24 %data = load ptr, ptr %7, align 8, !noundef !3 %8 = getelementptr inbounds i8, ptr %self, i64 16 %len = load i64, ptr %8, align 8, !noundef !3 store ptr %data, ptr %_19, align 8 %9 = getelementptr inbounds i8, ptr %_19, i64 8 store i64 %len, ptr %9, align 8 %10 = load ptr, ptr %_19, align 8, !noundef !3 %11 = getelementptr inbounds i8, ptr %_19, i64 8 %12 = load i64, ptr %11, align 8, !noundef !3 store ptr %10, ptr %_18, align 8 %13 = getelementptr inbounds i8, ptr %_18, i64 8 store i64 %12, ptr %13, align 8 %raw_slice.0 = load ptr, ptr %_18, align 8, !noundef !3 %14 = getelementptr inbounds i8, ptr %_18, i64 8 %raw_slice.1 = load i64, ptr %14, align 8, !noundef !3 br label %bb7 } ; <&T as core::fmt::Debug>::fmt ; Function Attrs: nonlazybind uwtable define zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h6db471e08dda6be6E"(ptr align 8 %self, ptr align 8 %f) unnamed_addr #1 { start: %_3 = load ptr, ptr %self, align 8, !nonnull !3, !align !6, !noundef !3 ; call core::fmt::num::::fmt %_0 = call zeroext i1 @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Debug$u20$for$u20$usize$GT$3fmt17h043a210cf627db30E"(ptr align 8 %_3, ptr align 8 %f) ret i1 %_0 } ; <&T as core::fmt::Debug>::fmt ; Function Attrs: nonlazybind uwtable define zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17ha26729cfab801f54E"(ptr align 8 %self, ptr align 8 %f) unnamed_addr #1 { start: %_3 = load ptr, ptr %self, align 8, !nonnull !3, !align !6, !noundef !3 ; call as core::fmt::Debug>::fmt %_0 = call zeroext i1 @"_ZN66_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17hc443aaa27aff5366E"(ptr align 8 %_3, ptr align 8 %f) ret i1 %_0 } ; core::intrinsics::write_bytes::precondition_check ; Function Attrs: inlinehint nounwind nonlazybind uwtable define internal void @_ZN4core10intrinsics11write_bytes18precondition_check17hd3ee39194b8d54d1E(ptr %addr, i64 %align) unnamed_addr #2 personality ptr @rust_eh_personality { start: ; invoke core::intrinsics::is_aligned_and_not_null %_3 = invoke zeroext i1 @_ZN4core10intrinsics23is_aligned_and_not_null17h54033e1d0a9c88adE(ptr %addr, i64 %align) to label %bb1 unwind label %terminate terminate: ; preds = %start %0 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer %1 = extractvalue { ptr, i32 } %0, 0 %2 = extractvalue { ptr, i32 } %0, 1 ; call core::panicking::panic_cannot_unwind call void @_ZN4core9panicking19panic_cannot_unwind17h242e4893dd20b38dE() #21 unreachable bb1: ; preds = %start br i1 %_3, label %bb2, label %bb3 bb3: ; preds = %bb1 ; call core::panicking::panic_nounwind call void @_ZN4core9panicking14panic_nounwind17hb0185ea8bd09ec4aE(ptr align 1 @alloc_424341b75ece3fa20496f1c69b9fb0ac, i64 111) #22 unreachable bb2: ; preds = %bb1 ret void } ; core::intrinsics::is_nonoverlapping ; Function Attrs: inlinehint nonlazybind uwtable define internal zeroext i1 @_ZN4core10intrinsics17is_nonoverlapping17h6cebc60cecaffa70E(ptr %src, ptr %dst, i64 %size, i64 %count) unnamed_addr #0 { start: %0 = alloca i8, align 1 %diff = alloca i64, align 8 %_9 = alloca %"core::option::Option", align 8 %src_usize = ptrtoint ptr %src to i64 %dst_usize = ptrtoint ptr %dst to i64 %1 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %size, i64 %count) %_15.0 = extractvalue { i64, i1 } %1, 0 %_15.1 = extractvalue { i64, i1 } %1, 1 %2 = call i1 @llvm.expect.i1(i1 %_15.1, i1 false) %3 = zext i1 %2 to i8 store i8 %3, ptr %0, align 1 %4 = load i8, ptr %0, align 1, !range !5, !noundef !3 %_12 = trunc i8 %4 to i1 br i1 %_12, label %bb2, label %bb3 bb3: ; preds = %start %5 = getelementptr inbounds i8, ptr %_9, i64 8 store i64 %_15.0, ptr %5, align 8 store i64 1, ptr %_9, align 8 %6 = getelementptr inbounds i8, ptr %_9, i64 8 %size1 = load i64, ptr %6, align 8, !noundef !3 %_22 = icmp ult i64 %src_usize, %dst_usize br i1 %_22, label %bb4, label %bb5 bb2: ; preds = %start ; call core::panicking::panic_nounwind call void @_ZN4core9panicking14panic_nounwind17hb0185ea8bd09ec4aE(ptr align 1 @alloc_763310d78c99c2c1ad3f8a9821e942f3, i64 61) #22 unreachable bb5: ; preds = %bb3 %7 = sub i64 %src_usize, %dst_usize store i64 %7, ptr %diff, align 8 br label %bb6 bb4: ; preds = %bb3 %8 = sub i64 %dst_usize, %src_usize store i64 %8, ptr %diff, align 8 br label %bb6 bb6: ; preds = %bb4, %bb5 %_11 = load i64, ptr %diff, align 8, !noundef !3 %_0 = icmp uge i64 %_11, %size1 ret i1 %_0 } ; core::intrinsics::copy_nonoverlapping::precondition_check ; Function Attrs: inlinehint nounwind nonlazybind uwtable define internal void @_ZN4core10intrinsics19copy_nonoverlapping18precondition_check17h1b1a839f79683a97E(ptr %src, ptr %dst, i64 %size, i64 %align, i64 %count) unnamed_addr #2 personality ptr @rust_eh_personality { start: ; invoke core::intrinsics::is_aligned_and_not_null %_6 = invoke zeroext i1 @_ZN4core10intrinsics23is_aligned_and_not_null17h54033e1d0a9c88adE(ptr %src, i64 %align) to label %bb1 unwind label %terminate terminate: ; preds = %bb4, %bb2, %start %0 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer %1 = extractvalue { ptr, i32 } %0, 0 %2 = extractvalue { ptr, i32 } %0, 1 ; call core::panicking::panic_cannot_unwind call void @_ZN4core9panicking19panic_cannot_unwind17h242e4893dd20b38dE() #21 unreachable bb1: ; preds = %start br i1 %_6, label %bb2, label %bb7 bb7: ; preds = %bb5, %bb3, %bb1 ; call core::panicking::panic_nounwind call void @_ZN4core9panicking14panic_nounwind17hb0185ea8bd09ec4aE(ptr align 1 @alloc_8df0580a595a87d56789d20c7318e185, i64 166) #22 unreachable bb2: ; preds = %bb1 ; invoke core::intrinsics::is_aligned_and_not_null %_7 = invoke zeroext i1 @_ZN4core10intrinsics23is_aligned_and_not_null17h54033e1d0a9c88adE(ptr %dst, i64 %align) to label %bb3 unwind label %terminate bb3: ; preds = %bb2 br i1 %_7, label %bb4, label %bb7 bb4: ; preds = %bb3 ; invoke core::intrinsics::is_nonoverlapping %_9 = invoke zeroext i1 @_ZN4core10intrinsics17is_nonoverlapping17h6cebc60cecaffa70E(ptr %src, ptr %dst, i64 %size, i64 %count) to label %bb5 unwind label %terminate bb5: ; preds = %bb4 br i1 %_9, label %bb6, label %bb7 bb6: ; preds = %bb5 ret void } ; core::intrinsics::is_aligned_and_not_null ; Function Attrs: inlinehint nonlazybind uwtable define internal zeroext i1 @_ZN4core10intrinsics23is_aligned_and_not_null17h54033e1d0a9c88adE(ptr %ptr, i64 %align) unnamed_addr #0 { start: %0 = alloca i64, align 8 %_6 = alloca %"core::fmt::Arguments<'_>", align 8 %_0 = alloca i8, align 1 %_4 = ptrtoint ptr %ptr to i64 %1 = icmp eq i64 %_4, 0 br i1 %1, label %bb1, label %bb2 bb1: ; preds = %start store i8 0, ptr %_0, align 1 br label %bb3 bb2: ; preds = %start %2 = call i64 @llvm.ctpop.i64(i64 %align) store i64 %2, ptr %0, align 8 %_9 = load i64, ptr %0, align 8, !noundef !3 %_8 = trunc i64 %_9 to i32 %3 = icmp eq i32 %_8, 1 br i1 %3, label %bb4, label %bb5 bb3: ; preds = %bb4, %bb1 %4 = load i8, ptr %_0, align 1, !range !5, !noundef !3 %5 = trunc i8 %4 to i1 ret i1 %5 bb4: ; preds = %bb2 %_13 = sub i64 %align, 1 %_12 = and i64 %_4, %_13 %6 = icmp eq i64 %_12, 0 %7 = zext i1 %6 to i8 store i8 %7, ptr %_0, align 1 br label %bb3 bb5: ; preds = %bb2 store ptr @alloc_041983ee8170efdaaf95ba67fd072d26, ptr %_6, align 8 %8 = getelementptr inbounds i8, ptr %_6, i64 8 store i64 1, ptr %8, align 8 %9 = load ptr, ptr @0, align 8, !align !6, !noundef !3 %10 = load i64, ptr getelementptr inbounds (i8, ptr @0, i64 8), align 8 %11 = getelementptr inbounds i8, ptr %_6, i64 32 store ptr %9, ptr %11, align 8 %12 = getelementptr inbounds i8, ptr %11, i64 8 store i64 %10, ptr %12, align 8 %13 = getelementptr inbounds i8, ptr %_6, i64 16 store ptr @alloc_513570631223a12912d85da2bec3b15a, ptr %13, align 8 %14 = getelementptr inbounds i8, ptr %13, i64 8 store i64 0, ptr %14, align 8 ; call core::panicking::panic_fmt call void @_ZN4core9panicking9panic_fmt17hf5ccdde0d2de76d8E(ptr align 8 %_6, ptr align 8 @alloc_2e7b7412f5e75426c5c1330e0553d3d4) #19 unreachable } ; core::intrinsics::unlikely ; Function Attrs: nounwind nonlazybind uwtable define internal zeroext i1 @_ZN4core10intrinsics8unlikely17h6fcee050093ae3c6E(i1 zeroext %b) unnamed_addr #3 { start: ret i1 %b } ; core::cmp::impls::::cmp ; Function Attrs: inlinehint nonlazybind uwtable define internal i8 @"_ZN4core3cmp5impls50_$LT$impl$u20$core..cmp..Ord$u20$for$u20$usize$GT$3cmp17h8523e3ceb48654beE"(ptr align 8 %self, ptr align 8 %other) unnamed_addr #0 { start: %_0 = alloca i8, align 1 %_4 = load i64, ptr %self, align 8, !noundef !3 %_5 = load i64, ptr %other, align 8, !noundef !3 %_3 = icmp ult i64 %_4, %_5 br i1 %_3, label %bb1, label %bb2 bb2: ; preds = %start %_6 = icmp eq i64 %_4, %_5 br i1 %_6, label %bb3, label %bb4 bb1: ; preds = %start store i8 -1, ptr %_0, align 1 br label %bb6 bb4: ; preds = %bb2 store i8 1, ptr %_0, align 1 br label %bb5 bb3: ; preds = %bb2 store i8 0, ptr %_0, align 1 br label %bb5 bb5: ; preds = %bb3, %bb4 br label %bb6 bb6: ; preds = %bb1, %bb5 %0 = load i8, ptr %_0, align 1, !range !8, !noundef !3 ret i8 %0 } ; core::cmp::max_by ; Function Attrs: inlinehint nonlazybind uwtable define i64 @_ZN4core3cmp6max_by17h8137c37b8c7f7867E(i64 %0, i64 %1) unnamed_addr #0 personality ptr @rust_eh_personality { start: %2 = alloca { ptr, i32, [1 x i32] }, align 8 %_9 = alloca i8, align 1 %_5 = alloca { ptr, ptr }, align 8 %_4 = alloca i8, align 1 %_0 = alloca i64, align 8 %v2 = alloca i64, align 8 %v1 = alloca i64, align 8 store i64 %0, ptr %v1, align 8 store i64 %1, ptr %v2, align 8 store i8 1, ptr %_9, align 1 store ptr %v1, ptr %_5, align 8 %3 = getelementptr inbounds i8, ptr %_5, i64 8 store ptr %v2, ptr %3, align 8 %4 = load ptr, ptr %_5, align 8, !nonnull !3, !align !6, !noundef !3 %5 = getelementptr inbounds i8, ptr %_5, i64 8 %6 = load ptr, ptr %5, align 8, !nonnull !3, !align !6, !noundef !3 ; invoke core::ops::function::FnOnce::call_once %7 = invoke i8 @_ZN4core3ops8function6FnOnce9call_once17hf6b732d068c06fcbE(ptr align 8 %4, ptr align 8 %6) to label %bb1 unwind label %cleanup, !range !8 bb5: ; preds = %cleanup br label %bb9 cleanup: ; preds = %start %8 = landingpad { ptr, i32 } cleanup %9 = extractvalue { ptr, i32 } %8, 0 %10 = extractvalue { ptr, i32 } %8, 1 store ptr %9, ptr %2, align 8 %11 = getelementptr inbounds i8, ptr %2, i64 8 store i32 %10, ptr %11, align 8 br label %bb5 bb1: ; preds = %start store i8 %7, ptr %_4, align 1 %_8 = load i8, ptr %_4, align 1, !range !8, !noundef !3 switch i8 %_8, label %bb10 [ i8 -1, label %bb3 i8 0, label %bb3 i8 1, label %bb2 ] bb10: ; preds = %bb1 unreachable bb3: ; preds = %bb1, %bb1 %12 = load i64, ptr %v2, align 8, !noundef !3 store i64 %12, ptr %_0, align 8 %13 = load i8, ptr %_9, align 1, !range !5, !noundef !3 %14 = trunc i8 %13 to i1 br i1 %14, label %bb7, label %bb4 bb2: ; preds = %bb1 store i8 0, ptr %_9, align 1 %15 = load i64, ptr %v1, align 8, !noundef !3 store i64 %15, ptr %_0, align 8 br label %bb4 bb4: ; preds = %bb2, %bb7, %bb3 %16 = load i64, ptr %_0, align 8, !noundef !3 ret i64 %16 bb7: ; preds = %bb3 br label %bb4 bb9: ; preds = %bb5 %17 = load i8, ptr %_9, align 1, !range !5, !noundef !3 %18 = trunc i8 %17 to i1 br i1 %18, label %bb8, label %bb6 bb6: ; preds = %bb8, %bb9 %19 = load ptr, ptr %2, align 8, !noundef !3 %20 = getelementptr inbounds i8, ptr %2, i64 8 %21 = load i32, ptr %20, align 8, !noundef !3 %22 = insertvalue { ptr, i32 } poison, ptr %19, 0 %23 = insertvalue { ptr, i32 } %22, i32 %21, 1 resume { ptr, i32 } %23 bb8: ; preds = %bb9 br label %bb6 } ; core::fmt::num::::fmt ; Function Attrs: inlinehint nonlazybind uwtable define internal zeroext i1 @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Debug$u20$for$u20$usize$GT$3fmt17h043a210cf627db30E"(ptr align 8 %self, ptr align 8 %f) unnamed_addr #0 { start: %_0 = alloca i8, align 1 %0 = getelementptr inbounds i8, ptr %f, i64 52 %_4 = load i32, ptr %0, align 4, !noundef !3 %_3 = and i32 %_4, 16 %1 = icmp eq i32 %_3, 0 br i1 %1, label %bb2, label %bb1 bb2: ; preds = %start %2 = getelementptr inbounds i8, ptr %f, i64 52 %_6 = load i32, ptr %2, align 4, !noundef !3 %_5 = and i32 %_6, 32 %3 = icmp eq i32 %_5, 0 br i1 %3, label %bb4, label %bb3 bb1: ; preds = %start ; call core::fmt::num::::fmt %4 = call zeroext i1 @"_ZN4core3fmt3num55_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$usize$GT$3fmt17h1913b21aac0d547dE"(ptr align 8 %self, ptr align 8 %f) %5 = zext i1 %4 to i8 store i8 %5, ptr %_0, align 1 br label %bb6 bb4: ; preds = %bb2 ; call core::fmt::num::imp::::fmt %6 = call zeroext i1 @"_ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h66b0bcd87e086639E"(ptr align 8 %self, ptr align 8 %f) %7 = zext i1 %6 to i8 store i8 %7, ptr %_0, align 1 br label %bb5 bb3: ; preds = %bb2 ; call core::fmt::num::::fmt %8 = call zeroext i1 @"_ZN4core3fmt3num55_$LT$impl$u20$core..fmt..UpperHex$u20$for$u20$usize$GT$3fmt17h172fd4b3da5ae80cE"(ptr align 8 %self, ptr align 8 %f) %9 = zext i1 %8 to i8 store i8 %9, ptr %_0, align 1 br label %bb5 bb5: ; preds = %bb3, %bb4 br label %bb6 bb6: ; preds = %bb1, %bb5 %10 = load i8, ptr %_0, align 1, !range !5, !noundef !3 %11 = trunc i8 %10 to i1 ret i1 %11 } ; core::ops::function::FnOnce::call_once ; Function Attrs: inlinehint nonlazybind uwtable define internal i8 @_ZN4core3ops8function6FnOnce9call_once17hf6b732d068c06fcbE(ptr align 8 %0, ptr align 8 %1) unnamed_addr #0 { start: %_2 = alloca { ptr, ptr }, align 8 store ptr %0, ptr %_2, align 8 %2 = getelementptr inbounds i8, ptr %_2, i64 8 store ptr %1, ptr %2, align 8 %3 = load ptr, ptr %_2, align 8, !nonnull !3, !align !6, !noundef !3 %4 = getelementptr inbounds i8, ptr %_2, i64 8 %5 = load ptr, ptr %4, align 8, !nonnull !3, !align !6, !noundef !3 ; call core::cmp::impls::::cmp %_0 = call i8 @"_ZN4core3cmp5impls50_$LT$impl$u20$core..cmp..Ord$u20$for$u20$usize$GT$3cmp17h8523e3ceb48654beE"(ptr align 8 %3, ptr align 8 %5), !range !8 ret i8 %_0 } ; core::ptr::drop_in_place> ; Function Attrs: nonlazybind uwtable define void @"_ZN4core3ptr125drop_in_place$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$$u5b$u64$u3b$$u20$4$u5d$$C$vec_in_place2..Foo$GT$$GT$17ha52574e09789ec6eE"(ptr align 8 %_1) unnamed_addr #1 { start: ; call as core::ops::drop::Drop>::drop call void @"_ZN111_$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$Src$C$Dest$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h91d30191eaea879dE"(ptr align 8 %_1) ret void } ; core::ptr::read_volatile::precondition_check ; Function Attrs: inlinehint nounwind nonlazybind uwtable define internal void @_ZN4core3ptr13read_volatile18precondition_check17hf100eaf1342d9573E(ptr %addr, i64 %align) unnamed_addr #2 personality ptr @rust_eh_personality { start: ; invoke core::intrinsics::is_aligned_and_not_null %_3 = invoke zeroext i1 @_ZN4core10intrinsics23is_aligned_and_not_null17h54033e1d0a9c88adE(ptr %addr, i64 %align) to label %bb1 unwind label %terminate terminate: ; preds = %start %0 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer %1 = extractvalue { ptr, i32 } %0, 0 %2 = extractvalue { ptr, i32 } %0, 1 ; call core::panicking::panic_cannot_unwind call void @_ZN4core9panicking19panic_cannot_unwind17h242e4893dd20b38dE() #21 unreachable bb1: ; preds = %start br i1 %_3, label %bb2, label %bb3 bb3: ; preds = %bb1 ; call core::panicking::panic_nounwind call void @_ZN4core9panicking14panic_nounwind17hb0185ea8bd09ec4aE(ptr align 1 @alloc_d4d2a2a8539eafc62756407d946babb3, i64 110) #22 unreachable bb2: ; preds = %bb1 ret void } ; core::ptr::drop_in_place< as core::ops::drop::Drop>::drop::DropGuard<[u64; 4],alloc::alloc::Global>> ; Function Attrs: nonlazybind uwtable define void @"_ZN4core3ptr178drop_in_place$LT$$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$$u5b$u64$u3b$$u20$4$u5d$$C$alloc..alloc..Global$GT$$GT$17hd3842f868ba59ebaE"(ptr align 8 %_1) unnamed_addr #1 { start: ; call < as core::ops::drop::Drop>::drop::DropGuard as core::ops::drop::Drop>::drop call void @"_ZN157_$LT$$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h63a4951db6fc9ba6E"(ptr align 8 %_1) ret void } ; core::ptr::drop_in_place,vec_in_place2::vec_iterator_cast_aggregate::{{closure}}>> ; Function Attrs: nonlazybind uwtable define void @"_ZN4core3ptr196drop_in_place$LT$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$C$vec_in_place2..vec_iterator_cast_aggregate..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h3ea6733f55d3aaf0E"(ptr align 8 %_1) unnamed_addr #1 { start: ; call core::ptr::drop_in_place> call void @"_ZN4core3ptr84drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$GT$17h138421990f9cb7efE"(ptr align 8 %_1) ret void } ; core::ptr::drop_in_place::extend_trusted,vec_in_place2::vec_iterator_cast_aggregate::{{closure}}>>::{{closure}}> ; Function Attrs: nonlazybind uwtable define void @"_ZN4core3ptr290drop_in_place$LT$alloc..vec..Vec$LT$vec_in_place2..Foo$GT$..extend_trusted$LT$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$C$vec_in_place2..vec_iterator_cast_aggregate..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hdeba92822541a7c4E"(ptr align 8 %_1) unnamed_addr #1 { start: ; call core::ptr::drop_in_place call void @"_ZN4core3ptr62drop_in_place$LT$alloc..vec..set_len_on_drop..SetLenOnDrop$GT$17h83dbf119d201334bE"(ptr align 8 %_1) ret void } ; core::ptr::drop_in_place<&usize> ; Function Attrs: inlinehint nonlazybind uwtable define internal void @"_ZN4core3ptr30drop_in_place$LT$$RF$usize$GT$17haaf821cd71c19ff3E"(ptr align 8 %_1) unnamed_addr #0 { start: ret void } ; core::ptr::drop_in_place<>::collect_in_place::LoopGuard,vec_in_place2::vec_iterator_cast_aggregate::{{closure}}>>> ; Function Attrs: nonlazybind uwtable define void @"_ZN4core3ptr315drop_in_place$LT$$LT$I$u20$as$u20$alloc..vec..in_place_collect..SpecInPlaceCollect$LT$T$C$I$GT$$GT$..collect_in_place..LoopGuard$LT$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$C$vec_in_place2..vec_iterator_cast_aggregate..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h17479c421d91325bE"(ptr align 8 %_1) unnamed_addr #1 { start: ; call <>::collect_in_place::LoopGuard as core::ops::drop::Drop>::drop call void @"_ZN162_$LT$$LT$I$u20$as$u20$alloc..vec..in_place_collect..SpecInPlaceCollect$LT$T$C$I$GT$$GT$..collect_in_place..LoopGuard$LT$I$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h5450df393cada6a8E"(ptr align 8 %_1) ret void } ; core::ptr::drop_in_place::extend_trusted,vec_in_place2::vec_iterator_cast_aggregate::{{closure}}>>::{{closure}}>::{{closure}}> ; Function Attrs: nonlazybind uwtable define void @"_ZN4core3ptr402drop_in_place$LT$core..iter..traits..iterator..Iterator..for_each..call$LT$vec_in_place2..Foo$C$alloc..vec..Vec$LT$vec_in_place2..Foo$GT$..extend_trusted$LT$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$C$vec_in_place2..vec_iterator_cast_aggregate..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h704e80aa9f0bd1c7E"(ptr align 8 %_1) unnamed_addr #1 { start: ; call core::ptr::drop_in_place::extend_trusted,vec_in_place2::vec_iterator_cast_aggregate::{{closure}}>>::{{closure}}> call void @"_ZN4core3ptr290drop_in_place$LT$alloc..vec..Vec$LT$vec_in_place2..Foo$GT$..extend_trusted$LT$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$C$vec_in_place2..vec_iterator_cast_aggregate..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hdeba92822541a7c4E"(ptr align 8 %_1) ret void } ; core::ptr::drop_in_place<&core::option::Option> ; Function Attrs: inlinehint nonlazybind uwtable define internal void @"_ZN4core3ptr58drop_in_place$LT$$RF$core..option..Option$LT$usize$GT$$GT$17h5c5e42855fa4b032E"(ptr align 8 %_1) unnamed_addr #0 { start: ret void } ; core::ptr::drop_in_place::extend_trusted,vec_in_place2::vec_iterator_cast_aggregate::{{closure}}>>::{{closure}}>::{{closure}}>::{{closure}}> ; Function Attrs: nonlazybind uwtable define void @"_ZN4core3ptr607drop_in_place$LT$core..iter..adapters..map..map_fold$LT$$u5b$u64$u3b$$u20$4$u5d$$C$vec_in_place2..Foo$C$$LP$$RP$$C$vec_in_place2..vec_iterator_cast_aggregate..$u7b$$u7b$closure$u7d$$u7d$$C$core..iter..traits..iterator..Iterator..for_each..call$LT$vec_in_place2..Foo$C$alloc..vec..Vec$LT$vec_in_place2..Foo$GT$..extend_trusted$LT$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$C$vec_in_place2..vec_iterator_cast_aggregate..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hbbd200c6a7745bf9E"(ptr align 8 %_1) unnamed_addr #1 { start: ; call core::ptr::drop_in_place::extend_trusted,vec_in_place2::vec_iterator_cast_aggregate::{{closure}}>>::{{closure}}>::{{closure}}> call void @"_ZN4core3ptr402drop_in_place$LT$core..iter..traits..iterator..Iterator..for_each..call$LT$vec_in_place2..Foo$C$alloc..vec..Vec$LT$vec_in_place2..Foo$GT$..extend_trusted$LT$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$C$vec_in_place2..vec_iterator_cast_aggregate..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h704e80aa9f0bd1c7E"(ptr align 8 %_1) ret void } ; core::ptr::drop_in_place> ; Function Attrs: nonlazybind uwtable define void @"_ZN4core3ptr62drop_in_place$LT$alloc..vec..Vec$LT$vec_in_place2..Foo$GT$$GT$17h9be811bcee7f46b9E"(ptr align 8 %_1) unnamed_addr #1 personality ptr @rust_eh_personality { start: %0 = alloca { ptr, i32, [1 x i32] }, align 8 ; invoke as core::ops::drop::Drop>::drop invoke void @"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h486d685ae0af460aE"(ptr align 8 %_1) to label %bb4 unwind label %cleanup bb3: ; preds = %cleanup ; invoke core::ptr::drop_in_place> invoke void @"_ZN4core3ptr69drop_in_place$LT$alloc..raw_vec..RawVec$LT$vec_in_place2..Foo$GT$$GT$17h9b438532c1f4485bE"(ptr align 8 %_1) #20 to label %bb1 unwind label %terminate cleanup: ; preds = %start %1 = landingpad { ptr, i32 } cleanup %2 = extractvalue { ptr, i32 } %1, 0 %3 = extractvalue { ptr, i32 } %1, 1 store ptr %2, ptr %0, align 8 %4 = getelementptr inbounds i8, ptr %0, i64 8 store i32 %3, ptr %4, align 8 br label %bb3 bb4: ; preds = %start ; call core::ptr::drop_in_place> call void @"_ZN4core3ptr69drop_in_place$LT$alloc..raw_vec..RawVec$LT$vec_in_place2..Foo$GT$$GT$17h9b438532c1f4485bE"(ptr align 8 %_1) ret void terminate: ; preds = %bb3 %5 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer %6 = extractvalue { ptr, i32 } %5, 0 %7 = extractvalue { ptr, i32 } %5, 1 ; call core::panicking::panic_in_cleanup call void @_ZN4core9panicking16panic_in_cleanup17hb44fd56a4133bb74E() #21 unreachable bb1: ; preds = %bb3 %8 = load ptr, ptr %0, align 8, !noundef !3 %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i32, ptr %9, align 8, !noundef !3 %11 = insertvalue { ptr, i32 } poison, ptr %8, 0 %12 = insertvalue { ptr, i32 } %11, i32 %10, 1 resume { ptr, i32 } %12 } ; core::ptr::drop_in_place ; Function Attrs: nonlazybind uwtable define void @"_ZN4core3ptr62drop_in_place$LT$alloc..vec..set_len_on_drop..SetLenOnDrop$GT$17h83dbf119d201334bE"(ptr align 8 %_1) unnamed_addr #1 { start: ; call ::drop call void @"_ZN83_$LT$alloc..vec..set_len_on_drop..SetLenOnDrop$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2e0e8c5544749d8bE"(ptr align 8 %_1) ret void } ; core::ptr::drop_in_place> ; Function Attrs: nonlazybind uwtable define void @"_ZN4core3ptr69drop_in_place$LT$alloc..raw_vec..RawVec$LT$vec_in_place2..Foo$GT$$GT$17h9b438532c1f4485bE"(ptr align 8 %_1) unnamed_addr #1 { start: ; call as core::ops::drop::Drop>::drop call void @"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hebf3da7734fbab18E"(ptr align 8 %_1) ret void } ; core::ptr::drop_in_place> ; Function Attrs: nonlazybind uwtable define void @"_ZN4core3ptr75drop_in_place$LT$alloc..raw_vec..RawVec$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$GT$17hb3c58f5a0a28a399E"(ptr align 8 %_1) unnamed_addr #1 { start: ; call as core::ops::drop::Drop>::drop call void @"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h356ee0139acf4d03E"(ptr align 8 %_1) ret void } ; core::ptr::drop_in_place> ; Function Attrs: nonlazybind uwtable define void @"_ZN4core3ptr84drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$GT$17h138421990f9cb7efE"(ptr align 8 %_1) unnamed_addr #1 { start: ; call as core::ops::drop::Drop>::drop call void @"_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h40ee06d6ccf9617eE"(ptr align 8 %_1) ret void } ; core::ptr::non_null::NonNull::new_unchecked::precondition_check ; Function Attrs: inlinehint nounwind nonlazybind uwtable define internal void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h21c8f7e2345c8932E"(ptr %ptr) unnamed_addr #2 { start: %_4 = ptrtoint ptr %ptr to i64 %0 = icmp eq i64 %_4, 0 br i1 %0, label %bb1, label %bb2 bb1: ; preds = %start ; call core::panicking::panic_nounwind call void @_ZN4core9panicking14panic_nounwind17hb0185ea8bd09ec4aE(ptr align 1 @alloc_20b3d155afd5c58c42e598b7e6d186ef, i64 93) #22 unreachable bb2: ; preds = %start ret void } ; core::ptr::const_ptr::::sub_ptr ; Function Attrs: inlinehint nonlazybind uwtable define i64 @"_ZN4core3ptr9const_ptr33_$LT$impl$u20$$BP$const$u20$T$GT$7sub_ptr17hf0fa62fb5c38455eE"(ptr %self, ptr %origin) unnamed_addr #0 { start: %0 = alloca i64, align 8 br label %bb2 bb2: ; preds = %bb1, %start br label %bb3 bb1: ; No predecessors! ; call core::ptr::const_ptr::::sub_ptr::precondition_check call void @"_ZN4core3ptr9const_ptr33_$LT$impl$u20$$BP$const$u20$T$GT$7sub_ptr18precondition_check17he5fc88d21172a42bE"(ptr %self, ptr %origin) #18 br label %bb2 bb3: ; preds = %bb2 br label %bb4 bb4: ; preds = %bb3 %1 = ptrtoint ptr %self to i64 %2 = ptrtoint ptr %origin to i64 %3 = sub nuw i64 %1, %2 %4 = udiv exact i64 %3, 32 store i64 %4, ptr %0, align 8 %_0 = load i64, ptr %0, align 8, !noundef !3 ret i64 %_0 bb5: ; No predecessors! ; call core::panicking::panic call void @_ZN4core9panicking5panic17hda1a45a0f4216ff2E(ptr align 1 @alloc_ec595fc0e82ef92fc59bd74f68296eae, i64 73, ptr align 8 @alloc_c231e5f78f27a07c482215d3f9f5f290) #19 unreachable } ; core::ptr::const_ptr::::sub_ptr::precondition_check ; Function Attrs: inlinehint nounwind nonlazybind uwtable define internal void @"_ZN4core3ptr9const_ptr33_$LT$impl$u20$$BP$const$u20$T$GT$7sub_ptr18precondition_check17he5fc88d21172a42bE"(ptr %this, ptr %origin) unnamed_addr #2 { start: %_3 = icmp uge ptr %this, %origin br i1 %_3, label %bb1, label %bb2 bb2: ; preds = %start ; call core::panicking::panic_nounwind call void @_ZN4core9panicking14panic_nounwind17hb0185ea8bd09ec4aE(ptr align 1 @alloc_7efb3a7632b3620f628ce83a521b4d9b, i64 71) #22 unreachable bb1: ; preds = %start ret void } ; core::hint::assert_unchecked::precondition_check ; Function Attrs: inlinehint nounwind nonlazybind uwtable define internal void @_ZN4core4hint16assert_unchecked18precondition_check17h2ff0c3733cd6e185E(i1 zeroext %cond) unnamed_addr #2 { start: br i1 %cond, label %bb2, label %bb1 bb1: ; preds = %start ; call core::panicking::panic_nounwind call void @_ZN4core9panicking14panic_nounwind17hb0185ea8bd09ec4aE(ptr align 1 @alloc_ab14703751a9eb3585c49b2e55e9a9e5, i64 104) #22 unreachable bb2: ; preds = %start ret void } ; core::iter::traits::exact_size::ExactSizeIterator::len ; Function Attrs: inlinehint nonlazybind uwtable define i64 @_ZN4core4iter6traits10exact_size17ExactSizeIterator3len17h9e975dcd81799e13E(ptr align 8 %self) unnamed_addr #0 { start: %_9 = alloca %"core::option::Option>", align 8 %_7 = alloca i8, align 1 %_6 = alloca %"core::option::Option", align 8 %_3 = alloca { i64, %"core::option::Option" }, align 8 %upper = alloca %"core::option::Option", align 8 ; call as core::iter::traits::iterator::Iterator>::size_hint call void @"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17hf20dd92de4cd3cbeE"(ptr sret({ i64, %"core::option::Option" }) align 8 %_3, ptr align 8 %self) %lower = load i64, ptr %_3, align 8, !noundef !3 %0 = getelementptr inbounds i8, ptr %_3, i64 8 %1 = load i64, ptr %0, align 8, !range !4, !noundef !3 %2 = getelementptr inbounds i8, ptr %0, i64 8 %3 = load i64, ptr %2, align 8 store i64 %1, ptr %upper, align 8 %4 = getelementptr inbounds i8, ptr %upper, i64 8 store i64 %3, ptr %4, align 8 %5 = getelementptr inbounds i8, ptr %_6, i64 8 store i64 %lower, ptr %5, align 8 store i64 1, ptr %_6, align 8 %_12 = load i64, ptr %upper, align 8, !range !4, !noundef !3 %6 = icmp eq i64 %_12, 0 br i1 %6, label %bb6, label %bb7 bb6: ; preds = %start %_10 = load i64, ptr %_6, align 8, !range !4, !noundef !3 %7 = icmp eq i64 %_10, 0 %8 = zext i1 %7 to i8 store i8 %8, ptr %_7, align 1 br label %bb4 bb7: ; preds = %start %_11 = load i64, ptr %_6, align 8, !range !4, !noundef !3 %9 = icmp eq i64 %_11, 1 br i1 %9, label %bb8, label %bb5 bb4: ; preds = %bb8, %bb6 %10 = load i8, ptr %_7, align 1, !range !5, !noundef !3 %11 = trunc i8 %10 to i1 br i1 %11, label %bb2, label %bb3 bb8: ; preds = %bb7 %l = getelementptr inbounds i8, ptr %upper, i64 8 %r = getelementptr inbounds i8, ptr %_6, i64 8 %self1 = getelementptr inbounds i8, ptr %upper, i64 8 %other = getelementptr inbounds i8, ptr %_6, i64 8 %12 = getelementptr inbounds i8, ptr %upper, i64 8 %_17 = load i64, ptr %12, align 8, !noundef !3 %13 = getelementptr inbounds i8, ptr %_6, i64 8 %_18 = load i64, ptr %13, align 8, !noundef !3 %14 = icmp eq i64 %_17, %_18 %15 = zext i1 %14 to i8 store i8 %15, ptr %_7, align 1 br label %bb4 bb5: ; preds = %bb7 br label %bb3 bb3: ; preds = %bb5, %bb4 store ptr null, ptr %_9, align 8 ; call core::panicking::assert_failed call void @_ZN4core9panicking13assert_failed17h61826d03467aef6bE(i8 0, ptr align 8 %upper, ptr align 8 %_6, ptr align 8 %_9, ptr align 8 @alloc_95bc2d35637c8ed17885120b7482e1e2) #19 unreachable bb2: ; preds = %bb4 ret i64 %lower bb9: ; No predecessors! unreachable } ; core::iter::traits::iterator::Iterator::map ; Function Attrs: inlinehint nonlazybind uwtable define void @_ZN4core4iter6traits8iterator8Iterator3map17h06debcae554deceaE(ptr sret(%"core::iter::adapters::map::Map, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>") align 8 %_0, ptr align 8 %self) unnamed_addr #0 { start: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_0, ptr align 8 %self, i64 32, i1 false) ret void } ; core::iter::traits::iterator::Iterator::fold ; Function Attrs: inlinehint nonlazybind uwtable define void @_ZN4core4iter6traits8iterator8Iterator4fold17h95c14576a81f2302E(ptr align 8 %self, ptr align 8 %f) unnamed_addr #0 personality ptr @rust_eh_personality { start: %0 = alloca { ptr, i32, [1 x i32] }, align 8 %_13 = alloca i8, align 1 %_11 = alloca { {}, [4 x i64] }, align 8 %x = alloca [4 x i64], align 8 %_5 = alloca %"core::option::Option<[u64; 4]>", align 8 store i8 1, ptr %_13, align 1 br label %bb1 bb1: ; preds = %bb4, %start ; invoke as core::iter::traits::iterator::Iterator>::next invoke void @"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h28c0b28329d31c87E"(ptr sret(%"core::option::Option<[u64; 4]>") align 8 %_5, ptr align 8 %self) to label %bb2 unwind label %cleanup bb13: ; preds = %cleanup %1 = load i8, ptr %_13, align 1, !range !5, !noundef !3 %2 = trunc i8 %1 to i1 br i1 %2, label %bb12, label %bb9 cleanup: ; preds = %bb3, %bb1 %3 = landingpad { ptr, i32 } cleanup %4 = extractvalue { ptr, i32 } %3, 0 %5 = extractvalue { ptr, i32 } %3, 1 store ptr %4, ptr %0, align 8 %6 = getelementptr inbounds i8, ptr %0, i64 8 store i32 %5, ptr %6, align 8 br label %bb13 bb2: ; preds = %bb1 %_7 = load i64, ptr %_5, align 8, !range !4, !noundef !3 %7 = icmp eq i64 %_7, 1 br i1 %7, label %bb3, label %bb5 bb3: ; preds = %bb2 %8 = getelementptr inbounds i8, ptr %_5, i64 8 %9 = load <4 x i64>, ptr %8, align 8 store <4 x i64> %9, ptr %x, align 8 store i8 0, ptr %_13, align 1 %10 = load <4 x i64>, ptr %x, align 8 store <4 x i64> %10, ptr %_11, align 8 ; invoke core::iter::adapters::map::map_fold::{{closure}} invoke void @"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h38b4bbb606e38451E"(ptr align 8 %f, ptr align 8 %_11) to label %bb4 unwind label %cleanup bb5: ; preds = %bb2 br label %bb6 bb4: ; preds = %bb3 store i8 1, ptr %_13, align 1 br label %bb1 bb6: ; preds = %bb5 ; invoke core::ptr::drop_in_place::extend_trusted,vec_in_place2::vec_iterator_cast_aggregate::{{closure}}>>::{{closure}}>::{{closure}}>::{{closure}}> invoke void @"_ZN4core3ptr607drop_in_place$LT$core..iter..adapters..map..map_fold$LT$$u5b$u64$u3b$$u20$4$u5d$$C$vec_in_place2..Foo$C$$LP$$RP$$C$vec_in_place2..vec_iterator_cast_aggregate..$u7b$$u7b$closure$u7d$$u7d$$C$core..iter..traits..iterator..Iterator..for_each..call$LT$vec_in_place2..Foo$C$alloc..vec..Vec$LT$vec_in_place2..Foo$GT$..extend_trusted$LT$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$C$vec_in_place2..vec_iterator_cast_aggregate..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hbbd200c6a7745bf9E"(ptr align 8 %f) to label %bb7 unwind label %cleanup1 bb10: ; preds = %bb9, %cleanup1 ; invoke core::ptr::drop_in_place> invoke void @"_ZN4core3ptr84drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$GT$17h138421990f9cb7efE"(ptr align 8 %self) #20 to label %bb11 unwind label %terminate cleanup1: ; preds = %bb6 %11 = landingpad { ptr, i32 } cleanup %12 = extractvalue { ptr, i32 } %11, 0 %13 = extractvalue { ptr, i32 } %11, 1 store ptr %12, ptr %0, align 8 %14 = getelementptr inbounds i8, ptr %0, i64 8 store i32 %13, ptr %14, align 8 br label %bb10 bb7: ; preds = %bb6 ; call core::ptr::drop_in_place> call void @"_ZN4core3ptr84drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$GT$17h138421990f9cb7efE"(ptr align 8 %self) ret void bb9: ; preds = %bb12, %bb13 ; invoke core::ptr::drop_in_place::extend_trusted,vec_in_place2::vec_iterator_cast_aggregate::{{closure}}>>::{{closure}}>::{{closure}}>::{{closure}}> invoke void @"_ZN4core3ptr607drop_in_place$LT$core..iter..adapters..map..map_fold$LT$$u5b$u64$u3b$$u20$4$u5d$$C$vec_in_place2..Foo$C$$LP$$RP$$C$vec_in_place2..vec_iterator_cast_aggregate..$u7b$$u7b$closure$u7d$$u7d$$C$core..iter..traits..iterator..Iterator..for_each..call$LT$vec_in_place2..Foo$C$alloc..vec..Vec$LT$vec_in_place2..Foo$GT$..extend_trusted$LT$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$C$vec_in_place2..vec_iterator_cast_aggregate..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17hbbd200c6a7745bf9E"(ptr align 8 %f) #20 to label %bb10 unwind label %terminate bb12: ; preds = %bb13 br label %bb9 terminate: ; preds = %bb10, %bb9 %15 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer %16 = extractvalue { ptr, i32 } %15, 0 %17 = extractvalue { ptr, i32 } %15, 1 ; call core::panicking::panic_in_cleanup call void @_ZN4core9panicking16panic_in_cleanup17hb44fd56a4133bb74E() #21 unreachable bb11: ; preds = %bb10 %18 = load ptr, ptr %0, align 8, !noundef !3 %19 = getelementptr inbounds i8, ptr %0, i64 8 %20 = load i32, ptr %19, align 8, !noundef !3 %21 = insertvalue { ptr, i32 } poison, ptr %18, 0 %22 = insertvalue { ptr, i32 } %21, i32 %20, 1 resume { ptr, i32 } %22 } ; core::iter::traits::iterator::Iterator::collect ; Function Attrs: inlinehint nonlazybind uwtable define void @_ZN4core4iter6traits8iterator8Iterator7collect17h0e504f43a548eaceE(ptr sret(%"alloc::vec::Vec") align 8 %_0, ptr align 8 %self) unnamed_addr #0 { start: ; call as core::iter::traits::collect::FromIterator>::from_iter call void @"_ZN95_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$core..iter..traits..collect..FromIterator$LT$T$GT$$GT$9from_iter17h512159278f3cfbe5E"(ptr sret(%"alloc::vec::Vec") align 8 %_0, ptr align 8 %self) ret void } ; core::iter::traits::iterator::Iterator::for_each ; Function Attrs: inlinehint nonlazybind uwtable define void @_ZN4core4iter6traits8iterator8Iterator8for_each17h27e38580a98afc61E(ptr align 8 %self, ptr align 8 %f) unnamed_addr #0 { start: %_4 = alloca %"{closure@core::iter::traits::iterator::Iterator::for_each::call::extend_trusted, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>>::{closure#0}}>::{closure#0}}", align 8 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_4, ptr align 8 %f, i64 24, i1 false) ; call as core::iter::traits::iterator::Iterator>::fold call void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h7586c65352927850E"(ptr align 8 %self, ptr align 8 %_4) ret void } ; core::iter::traits::iterator::Iterator::for_each::call::{{closure}} ; Function Attrs: inlinehint nonlazybind uwtable define void @"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17hdf1f0f2c222cb47fE"(ptr align 8 %_1, ptr align 8 %item) unnamed_addr #0 { start: %_5 = alloca { %Foo }, align 8 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_5, ptr align 8 %item, i64 32, i1 false) ; call alloc::vec::Vec::extend_trusted::{{closure}} call void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted28_$u7b$$u7b$closure$u7d$$u7d$17he1ed2b3cba04a958E"(ptr align 8 %_1, ptr align 8 %_5) ret void } ; core::iter::adapters::map::map_fold::{{closure}} ; Function Attrs: inlinehint nonlazybind uwtable define void @"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h38b4bbb606e38451E"(ptr align 8 %_1, ptr align 8 %elt) unnamed_addr #0 personality ptr @rust_eh_personality { start: %0 = alloca { ptr, i32, [1 x i32] }, align 8 %_10 = alloca i8, align 1 %_9 = alloca { [4 x i64] }, align 8 %_7 = alloca %Foo, align 8 %_5 = alloca { {}, %Foo }, align 8 store i8 1, ptr %_10, align 1 %_8 = getelementptr i8, ptr %_1, i64 24 %1 = load <4 x i64>, ptr %elt, align 8 store <4 x i64> %1, ptr %_9, align 8 ; invoke vec_in_place2::vec_iterator_cast_aggregate::{{closure}} invoke void @"_ZN13vec_in_place227vec_iterator_cast_aggregate28_$u7b$$u7b$closure$u7d$$u7d$17h49196cbc0edbd238E"(ptr sret(%Foo) align 8 %_7, ptr align 1 %_8, ptr align 8 %_9) to label %bb1 unwind label %cleanup bb5: ; preds = %cleanup %2 = load i8, ptr %_10, align 1, !range !5, !noundef !3 %3 = trunc i8 %2 to i1 br i1 %3, label %bb4, label %bb3 cleanup: ; preds = %bb1, %start %4 = landingpad { ptr, i32 } cleanup %5 = extractvalue { ptr, i32 } %4, 0 %6 = extractvalue { ptr, i32 } %4, 1 store ptr %5, ptr %0, align 8 %7 = getelementptr inbounds i8, ptr %0, i64 8 store i32 %6, ptr %7, align 8 br label %bb5 bb1: ; preds = %start store i8 0, ptr %_10, align 1 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_5, ptr align 8 %_7, i64 32, i1 false) ; invoke core::iter::traits::iterator::Iterator::for_each::call::{{closure}} invoke void @"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17hdf1f0f2c222cb47fE"(ptr align 8 %_1, ptr align 8 %_5) to label %bb2 unwind label %cleanup bb2: ; preds = %bb1 ret void bb3: ; preds = %bb4, %bb5 %8 = load ptr, ptr %0, align 8, !noundef !3 %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i32, ptr %9, align 8, !noundef !3 %11 = insertvalue { ptr, i32 } poison, ptr %8, 0 %12 = insertvalue { ptr, i32 } %11, i32 %10, 1 resume { ptr, i32 } %12 bb4: ; preds = %bb5 br label %bb3 } ; core::alloc::layout::Layout::array::inner ; Function Attrs: inlinehint nonlazybind uwtable define internal { i64, i64 } @_ZN4core5alloc6layout6Layout5array5inner17h460b03bc2b414558E(i64 %element_size, i64 %align, i64 %n) unnamed_addr #0 { start: %_18 = alloca i64, align 8 %_13 = alloca i64, align 8 %_9 = alloca %"core::alloc::layout::Layout", align 8 %_0 = alloca %"core::result::Result", align 8 %0 = icmp eq i64 %element_size, 0 br i1 %0, label %bb5, label %bb1 bb5: ; preds = %bb4, %start %array_size = mul nuw i64 %element_size, %n store i64 %align, ptr %_18, align 8 %_19 = load i64, ptr %_18, align 8, !range !9, !noundef !3 %_20 = icmp uge i64 %_19, 1 %_21 = icmp ule i64 %_19, -9223372036854775808 %_22 = and i1 %_20, %_21 %1 = getelementptr inbounds i8, ptr %_9, i64 8 store i64 %array_size, ptr %1, align 8 store i64 %_19, ptr %_9, align 8 %2 = load i64, ptr %_9, align 8, !range !9, !noundef !3 %3 = getelementptr inbounds i8, ptr %_9, i64 8 %4 = load i64, ptr %3, align 8, !noundef !3 store i64 %2, ptr %_0, align 8 %5 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %4, ptr %5, align 8 br label %bb6 bb1: ; preds = %start store i64 %align, ptr %_13, align 8 %_14 = load i64, ptr %_13, align 8, !range !9, !noundef !3 %_15 = icmp uge i64 %_14, 1 %_16 = icmp ule i64 %_14, -9223372036854775808 %_17 = and i1 %_15, %_16 %_11 = sub i64 %_14, 1 %_6 = sub i64 9223372036854775807, %_11 %_7 = icmp eq i64 %element_size, 0 %6 = call i1 @llvm.expect.i1(i1 %_7, i1 false) br i1 %6, label %panic, label %bb2 bb2: ; preds = %bb1 %_5 = udiv i64 %_6, %element_size %_4 = icmp ugt i64 %n, %_5 br i1 %_4, label %bb3, label %bb4 panic: ; preds = %bb1 ; call core::panicking::panic call void @_ZN4core9panicking5panic17hda1a45a0f4216ff2E(ptr align 1 @str.0, i64 25, ptr align 8 @alloc_f1201b7397c61eff348903eecf3ad8b4) #19 unreachable bb4: ; preds = %bb2 br label %bb5 bb3: ; preds = %bb2 %7 = load i64, ptr @0, align 8, !range !10, !noundef !3 %8 = load i64, ptr getelementptr inbounds (i8, ptr @0, i64 8), align 8 store i64 %7, ptr %_0, align 8 %9 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %8, ptr %9, align 8 br label %bb6 bb6: ; preds = %bb3, %bb5 %10 = load i64, ptr %_0, align 8, !range !10, !noundef !3 %11 = getelementptr inbounds i8, ptr %_0, i64 8 %12 = load i64, ptr %11, align 8 %13 = insertvalue { i64, i64 } poison, i64 %10, 0 %14 = insertvalue { i64, i64 } %13, i64 %12, 1 ret { i64, i64 } %14 } ; core::panicking::assert_failed ; Function Attrs: cold noinline noreturn nonlazybind uwtable define void @_ZN4core9panicking13assert_failed17h61826d03467aef6bE(i8 %kind, ptr align 8 %0, ptr align 8 %1, ptr align 8 %args, ptr align 8 %2) unnamed_addr #4 { start: %right = alloca ptr, align 8 %left = alloca ptr, align 8 store ptr %0, ptr %left, align 8 store ptr %1, ptr %right, align 8 ; call core::panicking::assert_failed_inner call void @_ZN4core9panicking19assert_failed_inner17hc70ba3784903f34dE(i8 %kind, ptr align 1 %left, ptr align 8 @vtable.1, ptr align 1 %right, ptr align 8 @vtable.1, ptr align 8 %args, ptr align 8 %2) #19 unreachable } ; alloc::vec::Vec::extend_trusted ; Function Attrs: nonlazybind uwtable define void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17h60622799cda94542E"(ptr align 8 %self, ptr align 8 %iterator) unnamed_addr #1 personality ptr @rust_eh_personality { start: %0 = alloca { ptr, i32, [1 x i32] }, align 8 %_24 = alloca i8, align 1 %_22 = alloca %"core::fmt::Arguments<'_>", align 8 %_20 = alloca %"{closure@alloc::vec::Vec::extend_trusted, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>>::{closure#0}}", align 8 %_19 = alloca %"core::iter::adapters::map::Map, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>", align 8 %local_len = alloca %"alloc::vec::set_len_on_drop::SetLenOnDrop<'_>", align 8 %_5 = alloca { i64, %"core::option::Option" }, align 8 %high = alloca %"core::option::Option", align 8 store i8 1, ptr %_24, align 1 ; invoke as core::iter::traits::iterator::Iterator>::size_hint invoke void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h0fd19486d6554446E"(ptr sret({ i64, %"core::option::Option" }) align 8 %_5, ptr align 8 %iterator) to label %bb1 unwind label %cleanup bb8: ; preds = %cleanup %1 = load i8, ptr %_24, align 1, !range !5, !noundef !3 %2 = trunc i8 %1 to i1 br i1 %2, label %bb7, label %bb6 cleanup: ; preds = %bb5, %bb3, %bb2, %start %3 = landingpad { ptr, i32 } cleanup %4 = extractvalue { ptr, i32 } %3, 0 %5 = extractvalue { ptr, i32 } %3, 1 store ptr %4, ptr %0, align 8 %6 = getelementptr inbounds i8, ptr %0, i64 8 store i32 %5, ptr %6, align 8 br label %bb8 bb1: ; preds = %start %low = load i64, ptr %_5, align 8, !noundef !3 %7 = getelementptr inbounds i8, ptr %_5, i64 8 %8 = load i64, ptr %7, align 8, !range !4, !noundef !3 %9 = getelementptr inbounds i8, ptr %7, i64 8 %10 = load i64, ptr %9, align 8 store i64 %8, ptr %high, align 8 %11 = getelementptr inbounds i8, ptr %high, i64 8 store i64 %10, ptr %11, align 8 %_7 = load i64, ptr %high, align 8, !range !4, !noundef !3 %12 = icmp eq i64 %_7, 1 br i1 %12, label %bb2, label %bb5 bb2: ; preds = %bb1 %13 = getelementptr inbounds i8, ptr %high, i64 8 %additional = load i64, ptr %13, align 8, !noundef !3 ; invoke alloc::vec::Vec::reserve invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h4178f3f4476af81dE"(ptr align 8 %self, i64 %additional) to label %bb3 unwind label %cleanup bb5: ; preds = %bb1 store ptr @alloc_e760b8a82485eab475ddc4c0d696a7ac, ptr %_22, align 8 %14 = getelementptr inbounds i8, ptr %_22, i64 8 store i64 1, ptr %14, align 8 %15 = load ptr, ptr @0, align 8, !align !6, !noundef !3 %16 = load i64, ptr getelementptr inbounds (i8, ptr @0, i64 8), align 8 %17 = getelementptr inbounds i8, ptr %_22, i64 32 store ptr %15, ptr %17, align 8 %18 = getelementptr inbounds i8, ptr %17, i64 8 store i64 %16, ptr %18, align 8 %19 = getelementptr inbounds i8, ptr %_22, i64 16 store ptr @alloc_513570631223a12912d85da2bec3b15a, ptr %19, align 8 %20 = getelementptr inbounds i8, ptr %19, i64 8 store i64 0, ptr %20, align 8 ; invoke core::panicking::panic_fmt invoke void @_ZN4core9panicking9panic_fmt17hf5ccdde0d2de76d8E(ptr align 8 %_22, ptr align 8 @alloc_c2ef7e0569d617a990bfd4692cfec029) #19 to label %unreachable unwind label %cleanup bb3: ; preds = %bb2 %21 = getelementptr inbounds i8, ptr %self, i64 8 %self1 = load ptr, ptr %21, align 8, !nonnull !3, !noundef !3 %len = getelementptr inbounds i8, ptr %self, i64 16 %_30 = load i64, ptr %len, align 8, !noundef !3 store ptr %len, ptr %local_len, align 8 %22 = getelementptr inbounds i8, ptr %local_len, i64 8 store i64 %_30, ptr %22, align 8 store i8 0, ptr %_24, align 1 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_19, ptr align 8 %iterator, i64 32, i1 false) %23 = getelementptr inbounds i8, ptr %_20, i64 16 store ptr %self1, ptr %23, align 8 %24 = load ptr, ptr %local_len, align 8, !nonnull !3, !align !6, !noundef !3 %25 = getelementptr inbounds i8, ptr %local_len, i64 8 %26 = load i64, ptr %25, align 8, !noundef !3 store ptr %24, ptr %_20, align 8 %27 = getelementptr inbounds i8, ptr %_20, i64 8 store i64 %26, ptr %27, align 8 ; invoke core::iter::traits::iterator::Iterator::for_each invoke void @_ZN4core4iter6traits8iterator8Iterator8for_each17h27e38580a98afc61E(ptr align 8 %_19, ptr align 8 %_20) to label %bb4 unwind label %cleanup bb4: ; preds = %bb3 ret void unreachable: ; preds = %bb5 unreachable bb6: ; preds = %bb7, %bb8 %28 = load ptr, ptr %0, align 8, !noundef !3 %29 = getelementptr inbounds i8, ptr %0, i64 8 %30 = load i32, ptr %29, align 8, !noundef !3 %31 = insertvalue { ptr, i32 } poison, ptr %28, 0 %32 = insertvalue { ptr, i32 } %31, i32 %30, 1 resume { ptr, i32 } %32 bb7: ; preds = %bb8 ; invoke core::ptr::drop_in_place,vec_in_place2::vec_iterator_cast_aggregate::{{closure}}>> invoke void @"_ZN4core3ptr196drop_in_place$LT$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$C$vec_in_place2..vec_iterator_cast_aggregate..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h3ea6733f55d3aaf0E"(ptr align 8 %iterator) #20 to label %bb6 unwind label %terminate terminate: ; preds = %bb7 %33 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer %34 = extractvalue { ptr, i32 } %33, 0 %35 = extractvalue { ptr, i32 } %33, 1 ; call core::panicking::panic_in_cleanup call void @_ZN4core9panicking16panic_in_cleanup17hb44fd56a4133bb74E() #21 unreachable } ; alloc::vec::Vec::extend_trusted::{{closure}} ; Function Attrs: inlinehint nonlazybind uwtable define void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted28_$u7b$$u7b$closure$u7d$$u7d$17he1ed2b3cba04a958E"(ptr align 8 %_1, ptr align 8 %element) unnamed_addr #0 { start: %0 = getelementptr inbounds i8, ptr %_1, i64 16 %self = load ptr, ptr %0, align 8, !noundef !3 %1 = getelementptr inbounds i8, ptr %_1, i64 8 %count = load i64, ptr %1, align 8, !noundef !3 %dst = getelementptr inbounds %Foo, ptr %self, i64 %count call void @llvm.memcpy.p0.p0.i64(ptr align 8 %dst, ptr align 8 %element, i64 32, i1 false) %2 = getelementptr inbounds i8, ptr %_1, i64 8 %3 = getelementptr inbounds i8, ptr %_1, i64 8 %4 = load i64, ptr %3, align 8, !noundef !3 %5 = add i64 %4, 1 store i64 %5, ptr %2, align 8 ret void } ; alloc::vec::Vec::from_raw_parts_in ; Function Attrs: inlinehint nonlazybind uwtable define void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$17from_raw_parts_in17h7efc0accca396b0bE"(ptr sret(%"alloc::vec::Vec") align 8 %_0, ptr %ptr, i64 %length, i64 %capacity) unnamed_addr #0 { start: %_10 = alloca ptr, align 8 %_8 = alloca ptr, align 8 %cap = alloca i64, align 8 %_5 = alloca %"alloc::raw_vec::RawVec", align 8 br label %bb2 bb2: ; preds = %start store i64 %capacity, ptr %cap, align 8 br label %bb3 bb3: ; preds = %bb1, %bb2 br label %bb5 bb1: ; No predecessors! store i64 0, ptr %cap, align 8 br label %bb3 bb5: ; preds = %bb4, %bb3 store ptr %ptr, ptr %_10, align 8 %0 = load ptr, ptr %_10, align 8, !nonnull !3, !noundef !3 store ptr %0, ptr %_8, align 8 %_9 = load i64, ptr %cap, align 8, !range !7, !noundef !3 %1 = load ptr, ptr %_8, align 8, !nonnull !3, !noundef !3 %2 = getelementptr inbounds i8, ptr %_5, i64 8 store ptr %1, ptr %2, align 8 store i64 %_9, ptr %_5, align 8 %3 = load i64, ptr %_5, align 8, !range !7, !noundef !3 %4 = getelementptr inbounds i8, ptr %_5, i64 8 %5 = load ptr, ptr %4, align 8, !nonnull !3, !noundef !3 store i64 %3, ptr %_0, align 8 %6 = getelementptr inbounds i8, ptr %_0, i64 8 store ptr %5, ptr %6, align 8 %7 = getelementptr inbounds i8, ptr %_0, i64 16 store i64 %length, ptr %7, align 8 ret void bb4: ; No predecessors! ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h21c8f7e2345c8932E"(ptr %ptr) #18 br label %bb5 } ; alloc::vec::Vec::reserve ; Function Attrs: nonlazybind uwtable define void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h4178f3f4476af81dE"(ptr align 8 %self, i64 %additional) unnamed_addr #1 { start: %self1 = alloca i64, align 8 %0 = getelementptr inbounds i8, ptr %self, i64 16 %len = load i64, ptr %0, align 8, !noundef !3 br label %bb4 bb4: ; preds = %start %1 = load i64, ptr %self, align 8, !noundef !3 store i64 %1, ptr %self1, align 8 br label %bb5 bb5: ; preds = %bb3, %bb4 %2 = load i64, ptr %self1, align 8, !noundef !3 %_7 = sub i64 %2, %len %_5 = icmp ugt i64 %additional, %_7 br i1 %_5, label %bb1, label %bb2 bb3: ; No predecessors! store i64 -1, ptr %self1, align 8 br label %bb5 bb2: ; preds = %bb1, %bb5 ret void bb1: ; preds = %bb5 ; call alloc::raw_vec::RawVec::reserve::do_reserve_and_handle call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h43950ae47031d4f6E"(ptr align 8 %self, i64 %len, i64 %additional) br label %bb2 } ; alloc::vec::in_place_collect:: for alloc::vec::Vec>::from_iter ; Function Attrs: nonlazybind uwtable define void @"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9from_iter17h3c7c786b418efdf9E"(ptr sret(%"alloc::vec::Vec") align 8 %_0, ptr align 8 %iterator) unnamed_addr #1 personality ptr @rust_eh_personality { start: %0 = alloca { ptr, i32, [1 x i32] }, align 8 %_65 = alloca i8, align 1 %_64 = alloca i8, align 1 %vec = alloca %"alloc::vec::Vec", align 8 %_54 = alloca ptr, align 8 %result = alloca %"core::result::Result, core::alloc::AllocError>", align 8 %new_layout = alloca %"core::alloc::layout::Layout", align 8 %old_layout = alloca %"core::alloc::layout::Layout", align 8 %_43 = alloca %"alloc::alloc::Global", align 1 %dst_guard = alloca %"alloc::vec::in_place_drop::InPlaceDstDataSrcBufDrop<[u64; 4], Foo>", align 8 %dst_buf = alloca ptr, align 8 %src_ptr = alloca ptr, align 8 %_3 = alloca %"core::iter::adapters::map::Map, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>", align 8 store i8 1, ptr %_65, align 1 br label %bb3 bb3: ; preds = %start ; invoke as core::iter::adapters::SourceIter>::as_inner %_7 = invoke align 8 ptr @"_ZN96_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..adapters..SourceIter$GT$8as_inner17h1ee1d6a421c5f6d2E"(ptr align 8 %iterator) to label %bb4 unwind label %cleanup bb26: ; preds = %bb23, %bb24, %cleanup %1 = load i8, ptr %_65, align 1, !range !5, !noundef !3 %2 = trunc i8 %1 to i1 br i1 %2, label %bb25, label %bb22 cleanup: ; preds = %bb1, %bb8, %bb7, %bb6, %bb4, %bb3 %3 = landingpad { ptr, i32 } cleanup %4 = extractvalue { ptr, i32 } %3, 0 %5 = extractvalue { ptr, i32 } %3, 1 store ptr %4, ptr %0, align 8 %6 = getelementptr inbounds i8, ptr %0, i64 8 store i32 %5, ptr %6, align 8 br label %bb26 bb4: ; preds = %bb3 ; invoke as alloc::vec::in_place_collect::AsVecIntoIter>::as_into_iter %inner = invoke align 8 ptr @"_ZN104_$LT$alloc..vec..into_iter..IntoIter$LT$T$GT$$u20$as$u20$alloc..vec..in_place_collect..AsVecIntoIter$GT$12as_into_iter17h35cce9d33b473ec6E"(ptr align 8 %_7) to label %bb5 unwind label %cleanup bb5: ; preds = %bb4 %self = load ptr, ptr %inner, align 8, !nonnull !3, !noundef !3 %7 = getelementptr inbounds i8, ptr %inner, i64 8 %_11 = load ptr, ptr %7, align 8, !nonnull !3, !noundef !3 %8 = getelementptr inbounds i8, ptr %inner, i64 16 %src_cap = load i64, ptr %8, align 8, !noundef !3 %self1 = load ptr, ptr %inner, align 8, !nonnull !3, !noundef !3 %9 = getelementptr inbounds i8, ptr %inner, i64 24 %_16 = load ptr, ptr %9, align 8, !noundef !3 %10 = getelementptr inbounds i8, ptr %inner, i64 16 %_19 = load i64, ptr %10, align 8, !noundef !3 %_18 = mul i64 %_19, 32 br label %bb6 bb6: ; preds = %bb5 %dst_cap = udiv i64 %_18, 32 store ptr %_11, ptr %src_ptr, align 8 store ptr %self1, ptr %dst_buf, align 8 %_25 = load ptr, ptr %dst_buf, align 8, !noundef !3 ; invoke >::collect_in_place %len = invoke i64 @"_ZN83_$LT$I$u20$as$u20$alloc..vec..in_place_collect..SpecInPlaceCollect$LT$T$C$I$GT$$GT$16collect_in_place17h56b8fd95ce366a3bE"(ptr align 8 %iterator, ptr %_25, ptr %_16) to label %bb7 unwind label %cleanup bb7: ; preds = %bb6 ; invoke as core::iter::adapters::SourceIter>::as_inner %_27 = invoke align 8 ptr @"_ZN96_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..adapters..SourceIter$GT$8as_inner17h1ee1d6a421c5f6d2E"(ptr align 8 %iterator) to label %bb8 unwind label %cleanup bb8: ; preds = %bb7 ; invoke as alloc::vec::in_place_collect::AsVecIntoIter>::as_into_iter %src = invoke align 8 ptr @"_ZN104_$LT$alloc..vec..into_iter..IntoIter$LT$T$GT$$u20$as$u20$alloc..vec..in_place_collect..AsVecIntoIter$GT$12as_into_iter17h35cce9d33b473ec6E"(ptr align 8 %_27) to label %bb9 unwind label %cleanup bb9: ; preds = %bb8 %self2 = getelementptr inbounds i8, ptr %src, i64 8 %11 = getelementptr inbounds i8, ptr %src, i64 8 %self3 = load ptr, ptr %11, align 8, !nonnull !3, !noundef !3 %self4 = load ptr, ptr %src_ptr, align 8, !nonnull !3, !noundef !3 %_68 = icmp eq ptr %self3, %self4 %_32 = xor i1 %_68, true br i1 %_32, label %bb10, label %bb11 bb11: ; preds = %bb9 br label %bb12 bb10: ; preds = %bb9 br label %bb12 bb12: ; preds = %bb10, %bb11 %_40 = load ptr, ptr %dst_buf, align 8, !noundef !3 store i8 1, ptr %_64, align 1 store ptr %_40, ptr %dst_guard, align 8 %12 = getelementptr inbounds i8, ptr %dst_guard, i64 8 store i64 %len, ptr %12, align 8 %13 = getelementptr inbounds i8, ptr %dst_guard, i64 16 store i64 %src_cap, ptr %13, align 8 ; invoke alloc::vec::into_iter::IntoIter::forget_allocation_drop_remaining invoke void @"_ZN5alloc3vec9into_iter21IntoIter$LT$T$C$A$GT$32forget_allocation_drop_remaining17h242576e2fb3aada7E"(ptr align 8 %src) to label %bb13 unwind label %cleanup5 bb24: ; preds = %cleanup5 %14 = load i8, ptr %_64, align 1, !range !5, !noundef !3 %15 = trunc i8 %14 to i1 br i1 %15, label %bb23, label %bb26 cleanup5: ; preds = %bb18, %bb20, %bb28, %bb13, %bb12 %16 = landingpad { ptr, i32 } cleanup %17 = extractvalue { ptr, i32 } %16, 0 %18 = extractvalue { ptr, i32 } %16, 1 store ptr %17, ptr %0, align 8 %19 = getelementptr inbounds i8, ptr %0, i64 8 store i32 %18, ptr %19, align 8 br label %bb24 bb13: ; preds = %bb12 ; invoke alloc::vec::in_place_collect::needs_realloc %_42 = invoke zeroext i1 @_ZN5alloc3vec16in_place_collect13needs_realloc17h93154358904c8db0E(i64 %src_cap, i64 %dst_cap) to label %bb14 unwind label %cleanup5 bb14: ; preds = %bb13 br i1 %_42, label %bb15, label %bb19 bb19: ; preds = %bb14 br label %bb20 bb15: ; preds = %bb14 %src_size = mul nuw i64 32, %src_cap %20 = getelementptr inbounds i8, ptr %old_layout, i64 8 store i64 %src_size, ptr %20, align 8 store i64 8, ptr %old_layout, align 8 %dst_size = mul nuw i64 32, %dst_cap %21 = getelementptr inbounds i8, ptr %new_layout, i64 8 store i64 %dst_size, ptr %21, align 8 store i64 8, ptr %new_layout, align 8 %_56 = load ptr, ptr %dst_buf, align 8, !noundef !3 br label %bb28 bb20: ; preds = %bb17, %bb19 store i8 0, ptr %_64, align 1 %t = load ptr, ptr %dst_guard, align 8, !noundef !3 %22 = getelementptr inbounds i8, ptr %dst_guard, i64 8 %t6 = load i64, ptr %22, align 8, !noundef !3 %23 = getelementptr inbounds i8, ptr %dst_guard, i64 16 %t7 = load i64, ptr %23, align 8, !noundef !3 %ptr = load ptr, ptr %dst_buf, align 8, !noundef !3 ; invoke alloc::vec::Vec::from_raw_parts_in invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$17from_raw_parts_in17h7efc0accca396b0bE"(ptr sret(%"alloc::vec::Vec") align 8 %vec, ptr %ptr, i64 %len, i64 %dst_cap) to label %bb29 unwind label %cleanup5 bb28: ; preds = %bb27, %bb15 store ptr %_56, ptr %_54, align 8 %24 = load ptr, ptr %_54, align 8, !nonnull !3, !noundef !3 %25 = load i64, ptr %old_layout, align 8, !range !9, !noundef !3 %26 = getelementptr inbounds i8, ptr %old_layout, i64 8 %27 = load i64, ptr %26, align 8, !noundef !3 %28 = load i64, ptr %new_layout, align 8, !range !9, !noundef !3 %29 = getelementptr inbounds i8, ptr %new_layout, i64 8 %30 = load i64, ptr %29, align 8, !noundef !3 ; invoke ::shrink %31 = invoke { ptr, i64 } @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5fe99f18c4682133E"(ptr align 1 %_43, ptr %24, i64 %25, i64 %27, i64 %28, i64 %30) to label %bb16 unwind label %cleanup5 bb27: ; No predecessors! ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h21c8f7e2345c8932E"(ptr %_56) #18 br label %bb28 bb16: ; preds = %bb28 %32 = extractvalue { ptr, i64 } %31, 0 %33 = extractvalue { ptr, i64 } %31, 1 store ptr %32, ptr %result, align 8 %34 = getelementptr inbounds i8, ptr %result, i64 8 store i64 %33, ptr %34, align 8 %35 = load ptr, ptr %result, align 8, !noundef !3 %36 = ptrtoint ptr %35 to i64 %37 = icmp eq i64 %36, 0 %_59 = select i1 %37, i64 1, i64 0 %38 = icmp eq i64 %_59, 0 br i1 %38, label %bb17, label %bb18 bb17: ; preds = %bb16 %reallocated.0 = load ptr, ptr %result, align 8, !nonnull !3, !noundef !3 %39 = getelementptr inbounds i8, ptr %result, i64 8 %reallocated.1 = load i64, ptr %39, align 8, !noundef !3 store ptr %reallocated.0, ptr %dst_buf, align 8 br label %bb20 bb18: ; preds = %bb16 %40 = load i64, ptr %new_layout, align 8, !range !9, !noundef !3 %41 = getelementptr inbounds i8, ptr %new_layout, i64 8 %42 = load i64, ptr %41, align 8, !noundef !3 ; invoke alloc::alloc::handle_alloc_error invoke void @_ZN5alloc5alloc18handle_alloc_error17h6b3004e98c688004E(i64 %40, i64 %42) #19 to label %unreachable unwind label %cleanup5 bb29: ; preds = %bb20 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_0, ptr align 8 %vec, i64 24, i1 false) ; call core::ptr::drop_in_place,vec_in_place2::vec_iterator_cast_aggregate::{{closure}}>> call void @"_ZN4core3ptr196drop_in_place$LT$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$C$vec_in_place2..vec_iterator_cast_aggregate..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h3ea6733f55d3aaf0E"(ptr align 8 %iterator) br label %bb21 bb21: ; preds = %bb2, %bb29 ret void unreachable: ; preds = %bb18 unreachable bb23: ; preds = %bb24 ; invoke core::ptr::drop_in_place> invoke void @"_ZN4core3ptr125drop_in_place$LT$alloc..vec..in_place_drop..InPlaceDstDataSrcBufDrop$LT$$u5b$u64$u3b$$u20$4$u5d$$C$vec_in_place2..Foo$GT$$GT$17ha52574e09789ec6eE"(ptr align 8 %dst_guard) #20 to label %bb26 unwind label %terminate terminate: ; preds = %bb25, %bb23 %43 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer %44 = extractvalue { ptr, i32 } %43, 0 %45 = extractvalue { ptr, i32 } %43, 1 ; call core::panicking::panic_in_cleanup call void @_ZN4core9panicking16panic_in_cleanup17hb44fd56a4133bb74E() #21 unreachable bb1: ; No predecessors! store i8 0, ptr %_65, align 1 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_3, ptr align 8 %iterator, i64 32, i1 false) ; invoke as alloc::vec::spec_from_iter_nested::SpecFromIterNested>::from_iter invoke void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h1d6ddde360fa5310E"(ptr sret(%"alloc::vec::Vec") align 8 %_0, ptr align 8 %_3) to label %bb2 unwind label %cleanup bb2: ; preds = %bb1 br label %bb21 bb22: ; preds = %bb25, %bb26 %46 = load ptr, ptr %0, align 8, !noundef !3 %47 = getelementptr inbounds i8, ptr %0, i64 8 %48 = load i32, ptr %47, align 8, !noundef !3 %49 = insertvalue { ptr, i32 } poison, ptr %46, 0 %50 = insertvalue { ptr, i32 } %49, i32 %48, 1 resume { ptr, i32 } %50 bb25: ; preds = %bb26 ; invoke core::ptr::drop_in_place,vec_in_place2::vec_iterator_cast_aggregate::{{closure}}>> invoke void @"_ZN4core3ptr196drop_in_place$LT$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$C$vec_in_place2..vec_iterator_cast_aggregate..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h3ea6733f55d3aaf0E"(ptr align 8 %iterator) #20 to label %bb22 unwind label %terminate } ; alloc::vec::in_place_collect::needs_realloc ; Function Attrs: nonlazybind uwtable define zeroext i1 @_ZN5alloc3vec16in_place_collect13needs_realloc17h93154358904c8db0E(i64 %src_cap, i64 %dst_cap) unnamed_addr #1 { start: %_5 = alloca %"core::fmt::Arguments<'_>", align 8 %_0 = alloca i8, align 1 br label %bb2 bb2: ; preds = %start br label %bb3 bb3: ; preds = %bb2 store i8 0, ptr %_0, align 1 br label %bb8 bb4: ; No predecessors! %_8 = icmp ugt i64 %src_cap, 0 br i1 %_8, label %bb5, label %bb6 bb6: ; preds = %bb4 store i8 0, ptr %_0, align 1 br label %bb7 bb5: ; preds = %bb4 %_9 = mul i64 %src_cap, 32 %_11 = mul i64 %dst_cap, 32 %0 = icmp ne i64 %_9, %_11 %1 = zext i1 %0 to i8 store i8 %1, ptr %_0, align 1 br label %bb7 bb7: ; preds = %bb5, %bb6 br label %bb8 bb8: ; preds = %bb3, %bb7 %2 = load i8, ptr %_0, align 1, !range !5, !noundef !3 %3 = trunc i8 %2 to i1 ret i1 %3 bb1: ; No predecessors! store ptr @alloc_6a910050c9b05c7991f9e03754df3823, ptr %_5, align 8 %4 = getelementptr inbounds i8, ptr %_5, i64 8 store i64 1, ptr %4, align 8 %5 = load ptr, ptr @0, align 8, !align !6, !noundef !3 %6 = load i64, ptr getelementptr inbounds (i8, ptr @0, i64 8), align 8 %7 = getelementptr inbounds i8, ptr %_5, i64 32 store ptr %5, ptr %7, align 8 %8 = getelementptr inbounds i8, ptr %7, i64 8 store i64 %6, ptr %8, align 8 %9 = getelementptr inbounds i8, ptr %_5, i64 16 store ptr @alloc_513570631223a12912d85da2bec3b15a, ptr %9, align 8 %10 = getelementptr inbounds i8, ptr %9, i64 8 store i64 0, ptr %10, align 8 ; call core::panicking::panic_fmt call void @_ZN4core9panicking9panic_fmt17hf5ccdde0d2de76d8E(ptr align 8 %_5, ptr align 8 @alloc_8fba8d7ccfbc9d2cff6b63c8d605798e) #19 unreachable } ; alloc::vec::into_iter::IntoIter::as_raw_mut_slice ; Function Attrs: nonlazybind uwtable define { ptr, i64 } @"_ZN5alloc3vec9into_iter21IntoIter$LT$T$C$A$GT$16as_raw_mut_slice17hd7a4439668dc6f16E"(ptr align 8 %0) unnamed_addr #1 { start: %_11 = alloca %"core::ptr::metadata::PtrComponents<[[u64; 4]]>", align 8 %_10 = alloca %"core::ptr::metadata::PtrRepr<[[u64; 4]]>", align 8 %self = alloca ptr, align 8 store ptr %0, ptr %self, align 8 %1 = load ptr, ptr %self, align 8, !nonnull !3, !align !6, !noundef !3 %2 = getelementptr inbounds i8, ptr %1, i64 8 %self1 = load ptr, ptr %2, align 8, !nonnull !3, !noundef !3 %_8 = load ptr, ptr %self, align 8, !nonnull !3, !align !6, !noundef !3 ; call core::iter::traits::exact_size::ExactSizeIterator::len %len = call i64 @_ZN4core4iter6traits10exact_size17ExactSizeIterator3len17h9e975dcd81799e13E(ptr align 8 %_8) store ptr %self1, ptr %_11, align 8 %3 = getelementptr inbounds i8, ptr %_11, i64 8 store i64 %len, ptr %3, align 8 %4 = load ptr, ptr %_11, align 8, !noundef !3 %5 = getelementptr inbounds i8, ptr %_11, i64 8 %6 = load i64, ptr %5, align 8, !noundef !3 store ptr %4, ptr %_10, align 8 %7 = getelementptr inbounds i8, ptr %_10, i64 8 store i64 %6, ptr %7, align 8 %_0.0 = load ptr, ptr %_10, align 8, !noundef !3 %8 = getelementptr inbounds i8, ptr %_10, i64 8 %_0.1 = load i64, ptr %8, align 8, !noundef !3 %9 = insertvalue { ptr, i64 } poison, ptr %_0.0, 0 %10 = insertvalue { ptr, i64 } %9, i64 %_0.1, 1 ret { ptr, i64 } %10 } ; alloc::vec::into_iter::IntoIter::forget_allocation_drop_remaining ; Function Attrs: nonlazybind uwtable define void @"_ZN5alloc3vec9into_iter21IntoIter$LT$T$C$A$GT$32forget_allocation_drop_remaining17h242576e2fb3aada7E"(ptr align 8 %self) unnamed_addr #1 { start: %_5 = alloca %"alloc::raw_vec::RawVec<[u64; 4]>", align 8 ; call alloc::vec::into_iter::IntoIter::as_raw_mut_slice %0 = call { ptr, i64 } @"_ZN5alloc3vec9into_iter21IntoIter$LT$T$C$A$GT$16as_raw_mut_slice17hd7a4439668dc6f16E"(ptr align 8 %self) %remaining.0 = extractvalue { ptr, i64 } %0, 0 %remaining.1 = extractvalue { ptr, i64 } %0, 1 %1 = getelementptr inbounds i8, ptr %self, i64 16 store i64 0, ptr %1, align 8 store i64 0, ptr %_5, align 8 %2 = getelementptr inbounds i8, ptr %_5, i64 8 store ptr inttoptr (i64 8 to ptr), ptr %2, align 8 %3 = getelementptr inbounds i8, ptr %_5, i64 8 %unique = load ptr, ptr %3, align 8, !nonnull !3, !noundef !3 store ptr %unique, ptr %self, align 8 ; call core::ptr::drop_in_place> call void @"_ZN4core3ptr75drop_in_place$LT$alloc..raw_vec..RawVec$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$GT$17hb3c58f5a0a28a399E"(ptr align 8 %_5) %_6 = load ptr, ptr %self, align 8, !nonnull !3, !noundef !3 %4 = getelementptr inbounds i8, ptr %self, i64 8 store ptr %_6, ptr %4, align 8 %self1 = load ptr, ptr %self, align 8, !nonnull !3, !noundef !3 %5 = getelementptr inbounds i8, ptr %self, i64 24 store ptr %self1, ptr %5, align 8 ret void } ; alloc::alloc::alloc ; Function Attrs: inlinehint nonlazybind uwtable define internal ptr @_ZN5alloc5alloc5alloc17hbf2ab93860bf2912E(i64 %0, i64 %1) unnamed_addr #0 { start: %2 = alloca i8, align 1 %_13 = alloca i64, align 8 %layout = alloca %"core::alloc::layout::Layout", align 8 store i64 %0, ptr %layout, align 8 %3 = getelementptr inbounds i8, ptr %layout, i64 8 store i64 %1, ptr %3, align 8 br label %bb4 bb4: ; preds = %bb3, %start %4 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 store i8 %4, ptr %2, align 1 %_2 = load i8, ptr %2, align 1, !noundef !3 %5 = getelementptr inbounds i8, ptr %layout, i64 8 %_5 = load i64, ptr %5, align 8, !noundef !3 %self = load i64, ptr %layout, align 8, !range !9, !noundef !3 store i64 %self, ptr %_13, align 8 %_14 = load i64, ptr %_13, align 8, !range !9, !noundef !3 %_15 = icmp uge i64 %_14, 1 %_16 = icmp ule i64 %_14, -9223372036854775808 %_17 = and i1 %_15, %_16 %_0 = call ptr @__rust_alloc(i64 %_5, i64 %_14) #18 ret ptr %_0 bb3: ; No predecessors! ; call core::ptr::read_volatile::precondition_check call void @_ZN4core3ptr13read_volatile18precondition_check17hf100eaf1342d9573E(ptr @__rust_no_alloc_shim_is_unstable, i64 1) #18 br label %bb4 } ; alloc::alloc::Global::alloc_impl ; Function Attrs: inlinehint nonlazybind uwtable define internal { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h292652c215e4535aE(ptr align 1 %self, i64 %0, i64 %1, i1 zeroext %zeroed) unnamed_addr #0 { start: %_62 = alloca %"core::ptr::metadata::PtrComponents<[u8]>", align 8 %_61 = alloca %"core::ptr::metadata::PtrRepr<[u8]>", align 8 %_49 = alloca ptr, align 8 %_44 = alloca i64, align 8 %_35 = alloca ptr, align 8 %_34 = alloca %"core::ptr::metadata::PtrComponents<[u8]>", align 8 %_33 = alloca %"core::ptr::metadata::PtrRepr<[u8]>", align 8 %data_pointer = alloca ptr, align 8 %data4 = alloca ptr, align 8 %ptr = alloca { ptr, i64 }, align 8 %_29 = alloca ptr, align 8 %_21 = alloca i64, align 8 %_17 = alloca %"core::ptr::non_null::NonNull<[u8]>", align 8 %self3 = alloca ptr, align 8 %self2 = alloca ptr, align 8 %_12 = alloca ptr, align 8 %layout1 = alloca %"core::alloc::layout::Layout", align 8 %raw_ptr = alloca ptr, align 8 %data = alloca ptr, align 8 %_6 = alloca %"core::ptr::non_null::NonNull<[u8]>", align 8 %_0 = alloca %"core::result::Result, core::alloc::AllocError>", align 8 %layout = alloca %"core::alloc::layout::Layout", align 8 store i64 %0, ptr %layout, align 8 %2 = getelementptr inbounds i8, ptr %layout, i64 8 store i64 %1, ptr %2, align 8 %3 = getelementptr inbounds i8, ptr %layout, i64 8 %size = load i64, ptr %3, align 8, !noundef !3 %4 = icmp eq i64 %size, 0 br i1 %4, label %bb2, label %bb1 bb2: ; preds = %start %self5 = load i64, ptr %layout, align 8, !range !9, !noundef !3 store i64 %self5, ptr %_21, align 8 %_22 = load i64, ptr %_21, align 8, !range !9, !noundef !3 %_23 = icmp uge i64 %_22, 1 %_24 = icmp ule i64 %_22, -9223372036854775808 %_25 = and i1 %_23, %_24 %ptr6 = inttoptr i64 %_22 to ptr br label %bb9 bb1: ; preds = %start br i1 %zeroed, label %bb3, label %bb4 bb9: ; preds = %bb2 store ptr %ptr6, ptr %_29, align 8 %5 = load ptr, ptr %_29, align 8, !noundef !3 store ptr %5, ptr %data, align 8 store ptr %ptr6, ptr %data4, align 8 store ptr %ptr6, ptr %data_pointer, align 8 store ptr %ptr6, ptr %_35, align 8 %6 = load ptr, ptr %_35, align 8, !noundef !3 store ptr %6, ptr %_34, align 8 %7 = getelementptr inbounds i8, ptr %_34, i64 8 store i64 0, ptr %7, align 8 %8 = load ptr, ptr %_34, align 8, !noundef !3 %9 = getelementptr inbounds i8, ptr %_34, i64 8 %10 = load i64, ptr %9, align 8, !noundef !3 store ptr %8, ptr %_33, align 8 %11 = getelementptr inbounds i8, ptr %_33, i64 8 store i64 %10, ptr %11, align 8 %12 = load ptr, ptr %_33, align 8, !noundef !3 %13 = getelementptr inbounds i8, ptr %_33, i64 8 %14 = load i64, ptr %13, align 8, !noundef !3 store ptr %12, ptr %ptr, align 8 %15 = getelementptr inbounds i8, ptr %ptr, i64 8 store i64 %14, ptr %15, align 8 br label %bb11 bb11: ; preds = %bb10, %bb9 %_38.0 = load ptr, ptr %ptr, align 8, !noundef !3 %16 = getelementptr inbounds i8, ptr %ptr, i64 8 %_38.1 = load i64, ptr %16, align 8, !noundef !3 store ptr %_38.0, ptr %_6, align 8 %17 = getelementptr inbounds i8, ptr %_6, i64 8 store i64 %_38.1, ptr %17, align 8 %18 = load ptr, ptr %_6, align 8, !nonnull !3, !noundef !3 %19 = getelementptr inbounds i8, ptr %_6, i64 8 %20 = load i64, ptr %19, align 8, !noundef !3 store ptr %18, ptr %_0, align 8 %21 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %20, ptr %21, align 8 br label %bb7 bb8: ; No predecessors! ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h21c8f7e2345c8932E"(ptr %ptr6) #18 store ptr %ptr6, ptr %_29, align 8 %22 = load ptr, ptr %_29, align 8, !noundef !3 store ptr %22, ptr %data, align 8 store ptr %ptr6, ptr %data4, align 8 store ptr %ptr6, ptr %data_pointer, align 8 store ptr %ptr6, ptr %_35, align 8 %23 = load ptr, ptr %_35, align 8, !noundef !3 store ptr %23, ptr %_34, align 8 %24 = getelementptr inbounds i8, ptr %_34, i64 8 store i64 0, ptr %24, align 8 %25 = load ptr, ptr %_34, align 8, !noundef !3 %26 = getelementptr inbounds i8, ptr %_34, i64 8 %27 = load i64, ptr %26, align 8, !noundef !3 store ptr %25, ptr %_33, align 8 %28 = getelementptr inbounds i8, ptr %_33, i64 8 store i64 %27, ptr %28, align 8 %29 = load ptr, ptr %_33, align 8, !noundef !3 %30 = getelementptr inbounds i8, ptr %_33, i64 8 %31 = load i64, ptr %30, align 8, !noundef !3 store ptr %29, ptr %ptr, align 8 %32 = getelementptr inbounds i8, ptr %ptr, i64 8 store i64 %31, ptr %32, align 8 br label %bb10 bb10: ; preds = %bb8 %_37 = load ptr, ptr %ptr, align 8, !noundef !3 %33 = getelementptr inbounds i8, ptr %ptr, i64 8 %34 = load i64, ptr %33, align 8, !noundef !3 ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h21c8f7e2345c8932E"(ptr %_37) #18 br label %bb11 bb7: ; preds = %bb18, %bb13, %bb11 %35 = load ptr, ptr %_0, align 8, !noundef !3 %36 = getelementptr inbounds i8, ptr %_0, i64 8 %37 = load i64, ptr %36, align 8 %38 = insertvalue { ptr, i64 } poison, ptr %35, 0 %39 = insertvalue { ptr, i64 } %38, i64 %37, 1 ret { ptr, i64 } %39 bb4: ; preds = %bb1 %_11.0 = load i64, ptr %layout, align 8, !range !9, !noundef !3 %40 = getelementptr inbounds i8, ptr %layout, i64 8 %_11.1 = load i64, ptr %40, align 8, !noundef !3 ; call alloc::alloc::alloc %41 = call ptr @_ZN5alloc5alloc5alloc17hbf2ab93860bf2912E(i64 %_11.0, i64 %_11.1) store ptr %41, ptr %raw_ptr, align 8 br label %bb6 bb3: ; preds = %bb1 %42 = load i64, ptr %layout, align 8, !range !9, !noundef !3 %43 = getelementptr inbounds i8, ptr %layout, i64 8 %44 = load i64, ptr %43, align 8, !noundef !3 store i64 %42, ptr %layout1, align 8 %45 = getelementptr inbounds i8, ptr %layout1, i64 8 store i64 %44, ptr %45, align 8 %46 = getelementptr inbounds i8, ptr %layout1, i64 8 %_39 = load i64, ptr %46, align 8, !noundef !3 %self7 = load i64, ptr %layout1, align 8, !range !9, !noundef !3 store i64 %self7, ptr %_44, align 8 %_45 = load i64, ptr %_44, align 8, !range !9, !noundef !3 %_46 = icmp uge i64 %_45, 1 %_47 = icmp ule i64 %_45, -9223372036854775808 %_48 = and i1 %_46, %_47 %47 = call ptr @__rust_alloc_zeroed(i64 %_39, i64 %_45) #18 store ptr %47, ptr %raw_ptr, align 8 br label %bb6 bb6: ; preds = %bb3, %bb4 %ptr8 = load ptr, ptr %raw_ptr, align 8, !noundef !3 %_50 = ptrtoint ptr %ptr8 to i64 %48 = icmp eq i64 %_50, 0 br i1 %48, label %bb13, label %bb14 bb13: ; preds = %bb6 store ptr null, ptr %self3, align 8 store ptr null, ptr %self2, align 8 %49 = load ptr, ptr @0, align 8, !noundef !3 %50 = load i64, ptr getelementptr inbounds (i8, ptr @0, i64 8), align 8 store ptr %49, ptr %_0, align 8 %51 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %50, ptr %51, align 8 br label %bb7 bb14: ; preds = %bb6 br label %bb16 bb16: ; preds = %bb15, %bb14 store ptr %ptr8, ptr %_49, align 8 %52 = load ptr, ptr %_49, align 8, !nonnull !3, !noundef !3 store ptr %52, ptr %self3, align 8 %v = load ptr, ptr %self3, align 8, !nonnull !3, !noundef !3 store ptr %v, ptr %self2, align 8 %v9 = load ptr, ptr %self2, align 8, !nonnull !3, !noundef !3 store ptr %v9, ptr %_12, align 8 %ptr10 = load ptr, ptr %_12, align 8, !nonnull !3, !noundef !3 store ptr %ptr10, ptr %_62, align 8 %53 = getelementptr inbounds i8, ptr %_62, i64 8 store i64 %size, ptr %53, align 8 %54 = load ptr, ptr %_62, align 8, !noundef !3 %55 = getelementptr inbounds i8, ptr %_62, i64 8 %56 = load i64, ptr %55, align 8, !noundef !3 store ptr %54, ptr %_61, align 8 %57 = getelementptr inbounds i8, ptr %_61, i64 8 store i64 %56, ptr %57, align 8 %ptr.0 = load ptr, ptr %_61, align 8, !noundef !3 %58 = getelementptr inbounds i8, ptr %_61, i64 8 %ptr.1 = load i64, ptr %58, align 8, !noundef !3 br label %bb18 bb15: ; No predecessors! ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h21c8f7e2345c8932E"(ptr %ptr8) #18 br label %bb16 bb18: ; preds = %bb17, %bb16 store ptr %ptr.0, ptr %_17, align 8 %59 = getelementptr inbounds i8, ptr %_17, i64 8 store i64 %ptr.1, ptr %59, align 8 %60 = load ptr, ptr %_17, align 8, !nonnull !3, !noundef !3 %61 = getelementptr inbounds i8, ptr %_17, i64 8 %62 = load i64, ptr %61, align 8, !noundef !3 store ptr %60, ptr %_0, align 8 %63 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %62, ptr %63, align 8 br label %bb7 bb17: ; No predecessors! ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h21c8f7e2345c8932E"(ptr %ptr.0) #18 br label %bb18 } ; alloc::alloc::Global::grow_impl ; Function Attrs: inlinehint nonlazybind uwtable define internal { ptr, i64 } @_ZN5alloc5alloc6Global9grow_impl17hbc83ef3fed33ecd9E(ptr align 1 %self, ptr %ptr, i64 %0, i64 %1, i64 %2, i64 %3, i1 zeroext %zeroed) unnamed_addr #0 { start: %self6 = alloca ptr, align 8 %_85 = alloca ptr, align 8 %_84 = alloca %"core::ptr::metadata::PtrComponents<[u8]>", align 8 %_83 = alloca %"core::ptr::metadata::PtrRepr<[u8]>", align 8 %data_pointer = alloca ptr, align 8 %_81 = alloca ptr, align 8 %data5 = alloca ptr, align 8 %ptr4 = alloca { ptr, i64 }, align 8 %_70 = alloca ptr, align 8 %_65 = alloca i64, align 8 %_52 = alloca i64, align 8 %_46 = alloca i64, align 8 %self3 = alloca %"core::result::Result, core::alloc::AllocError>", align 8 %_38 = alloca %"core::ops::control_flow::ControlFlow, core::ptr::non_null::NonNull<[u8]>>", align 8 %len = alloca i64, align 8 %data = alloca ptr, align 8 %_34 = alloca %"core::ptr::non_null::NonNull<[u8]>", align 8 %self2 = alloca ptr, align 8 %self1 = alloca ptr, align 8 %_27 = alloca ptr, align 8 %layout = alloca %"core::alloc::layout::Layout", align 8 %_9 = alloca i64, align 8 %_0 = alloca %"core::result::Result, core::alloc::AllocError>", align 8 %new_layout = alloca %"core::alloc::layout::Layout", align 8 %old_layout = alloca %"core::alloc::layout::Layout", align 8 store i64 %0, ptr %old_layout, align 8 %4 = getelementptr inbounds i8, ptr %old_layout, i64 8 store i64 %1, ptr %4, align 8 store i64 %2, ptr %new_layout, align 8 %5 = getelementptr inbounds i8, ptr %new_layout, i64 8 store i64 %3, ptr %5, align 8 %6 = getelementptr inbounds i8, ptr %old_layout, i64 8 %7 = load i64, ptr %6, align 8, !noundef !3 store i64 %7, ptr %_9, align 8 %8 = load i64, ptr %_9, align 8, !noundef !3 %9 = icmp eq i64 %8, 0 br i1 %9, label %bb1, label %bb3 bb1: ; preds = %start %_11.0 = load i64, ptr %new_layout, align 8, !range !9, !noundef !3 %10 = getelementptr inbounds i8, ptr %new_layout, i64 8 %_11.1 = load i64, ptr %10, align 8, !noundef !3 ; call alloc::alloc::Global::alloc_impl %11 = call { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h292652c215e4535aE(ptr align 1 %self, i64 %_11.0, i64 %_11.1, i1 zeroext %zeroed) %12 = extractvalue { ptr, i64 } %11, 0 %13 = extractvalue { ptr, i64 } %11, 1 store ptr %12, ptr %_0, align 8 %14 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %13, ptr %14, align 8 br label %bb10 bb3: ; preds = %start %self7 = load i64, ptr %old_layout, align 8, !range !9, !noundef !3 store i64 %self7, ptr %_46, align 8 %_47 = load i64, ptr %_46, align 8, !range !9, !noundef !3 %_48 = icmp uge i64 %_47, 1 %_49 = icmp ule i64 %_47, -9223372036854775808 %_50 = and i1 %_48, %_49 %self8 = load i64, ptr %new_layout, align 8, !range !9, !noundef !3 store i64 %self8, ptr %_52, align 8 %_53 = load i64, ptr %_52, align 8, !range !9, !noundef !3 %_54 = icmp uge i64 %_53, 1 %_55 = icmp ule i64 %_53, -9223372036854775808 %_56 = and i1 %_54, %_55 %_14 = icmp eq i64 %_47, %_53 br i1 %_14, label %bb4, label %bb5 bb10: ; preds = %bb24, %bb28, %bb1 br label %bb12 bb5: ; preds = %bb3 %old_size = load i64, ptr %_9, align 8, !noundef !3 %_40.0 = load i64, ptr %new_layout, align 8, !range !9, !noundef !3 %15 = getelementptr inbounds i8, ptr %new_layout, i64 8 %_40.1 = load i64, ptr %15, align 8, !noundef !3 ; call alloc::alloc::Global::alloc_impl %16 = call { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h292652c215e4535aE(ptr align 1 %self, i64 %_40.0, i64 %_40.1, i1 zeroext %zeroed) %17 = extractvalue { ptr, i64 } %16, 0 %18 = extractvalue { ptr, i64 } %16, 1 store ptr %17, ptr %self3, align 8 %19 = getelementptr inbounds i8, ptr %self3, i64 8 store i64 %18, ptr %19, align 8 %20 = load ptr, ptr %self3, align 8, !noundef !3 %21 = ptrtoint ptr %20 to i64 %22 = icmp eq i64 %21, 0 %_89 = select i1 %22, i64 1, i64 0 %23 = icmp eq i64 %_89, 0 br i1 %23, label %bb26, label %bb25 bb4: ; preds = %bb3 %old_size9 = load i64, ptr %_9, align 8, !noundef !3 %24 = getelementptr inbounds i8, ptr %new_layout, i64 8 %new_size = load i64, ptr %24, align 8, !noundef !3 %25 = getelementptr inbounds i8, ptr %old_layout, i64 8 %_22 = load i64, ptr %25, align 8, !noundef !3 %cond = icmp uge i64 %new_size, %_22 br label %bb14 bb26: ; preds = %bb5 %v.0 = load ptr, ptr %self3, align 8, !nonnull !3, !noundef !3 %26 = getelementptr inbounds i8, ptr %self3, i64 8 %v.1 = load i64, ptr %26, align 8, !noundef !3 store ptr %v.0, ptr %_38, align 8 %27 = getelementptr inbounds i8, ptr %_38, i64 8 store i64 %v.1, ptr %27, align 8 %new_ptr.0 = load ptr, ptr %_38, align 8, !nonnull !3, !noundef !3 %28 = getelementptr inbounds i8, ptr %_38, i64 8 %new_ptr.1 = load i64, ptr %28, align 8, !noundef !3 store ptr %new_ptr.0, ptr %self6, align 8 br label %bb28 bb25: ; preds = %bb5 %29 = load ptr, ptr @0, align 8, !noundef !3 %30 = load i64, ptr getelementptr inbounds (i8, ptr @0, i64 8), align 8 store ptr %29, ptr %_0, align 8 %31 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %30, ptr %31, align 8 br label %bb11 bb28: ; preds = %bb27, %bb26 %32 = mul i64 %old_size, 1 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %new_ptr.0, ptr align 1 %ptr, i64 %32, i1 false) %_44.0 = load i64, ptr %old_layout, align 8, !range !9, !noundef !3 %33 = getelementptr inbounds i8, ptr %old_layout, i64 8 %_44.1 = load i64, ptr %33, align 8, !noundef !3 ; call ::deallocate call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h62d14ce2d9245f26E"(ptr align 1 %self, ptr %ptr, i64 %_44.0, i64 %_44.1) store ptr %new_ptr.0, ptr %_0, align 8 %34 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %new_ptr.1, ptr %34, align 8 br label %bb10 bb27: ; No predecessors! ; call core::intrinsics::copy_nonoverlapping::precondition_check call void @_ZN4core10intrinsics19copy_nonoverlapping18precondition_check17h1b1a839f79683a97E(ptr %ptr, ptr %new_ptr.0, i64 1, i64 1, i64 %old_size) #18 br label %bb28 bb11: ; preds = %bb16, %bb25 br label %bb12 bb29: ; No predecessors! unreachable bb14: ; preds = %bb13, %bb4 %35 = load i64, ptr %old_layout, align 8, !range !9, !noundef !3 %36 = getelementptr inbounds i8, ptr %old_layout, i64 8 %37 = load i64, ptr %36, align 8, !noundef !3 store i64 %35, ptr %layout, align 8 %38 = getelementptr inbounds i8, ptr %layout, i64 8 store i64 %37, ptr %38, align 8 %39 = getelementptr inbounds i8, ptr %layout, i64 8 %_60 = load i64, ptr %39, align 8, !noundef !3 %self10 = load i64, ptr %layout, align 8, !range !9, !noundef !3 store i64 %self10, ptr %_65, align 8 %_66 = load i64, ptr %_65, align 8, !range !9, !noundef !3 %_67 = icmp uge i64 %_66, 1 %_68 = icmp ule i64 %_66, -9223372036854775808 %_69 = and i1 %_67, %_68 %raw_ptr = call ptr @__rust_realloc(ptr %ptr, i64 %_60, i64 %_66, i64 %new_size) #18 %_71 = ptrtoint ptr %raw_ptr to i64 %40 = icmp eq i64 %_71, 0 br i1 %40, label %bb16, label %bb17 bb13: ; No predecessors! ; call core::hint::assert_unchecked::precondition_check call void @_ZN4core4hint16assert_unchecked18precondition_check17h2ff0c3733cd6e185E(i1 zeroext %cond) #18 br label %bb14 bb16: ; preds = %bb14 store ptr null, ptr %self2, align 8 store ptr null, ptr %self1, align 8 %41 = load ptr, ptr @0, align 8, !noundef !3 %42 = load i64, ptr getelementptr inbounds (i8, ptr @0, i64 8), align 8 store ptr %41, ptr %_0, align 8 %43 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %42, ptr %43, align 8 br label %bb11 bb17: ; preds = %bb14 br label %bb19 bb12: ; preds = %bb10, %bb11 %44 = load ptr, ptr %_0, align 8, !noundef !3 %45 = getelementptr inbounds i8, ptr %_0, i64 8 %46 = load i64, ptr %45, align 8 %47 = insertvalue { ptr, i64 } poison, ptr %44, 0 %48 = insertvalue { ptr, i64 } %47, i64 %46, 1 ret { ptr, i64 } %48 bb19: ; preds = %bb18, %bb17 store ptr %raw_ptr, ptr %_70, align 8 %49 = load ptr, ptr %_70, align 8, !nonnull !3, !noundef !3 store ptr %49, ptr %self2, align 8 %v = load ptr, ptr %self2, align 8, !nonnull !3, !noundef !3 store ptr %v, ptr %self1, align 8 %v11 = load ptr, ptr %self1, align 8, !nonnull !3, !noundef !3 store ptr %v11, ptr %_27, align 8 %ptr12 = load ptr, ptr %_27, align 8, !nonnull !3, !noundef !3 br i1 %zeroed, label %bb6, label %bb7 bb18: ; No predecessors! ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h21c8f7e2345c8932E"(ptr %raw_ptr) #18 br label %bb19 bb7: ; preds = %bb22, %bb19 store ptr %ptr12, ptr %data, align 8 store i64 %new_size, ptr %len, align 8 store ptr %ptr12, ptr %_81, align 8 %50 = load ptr, ptr %_81, align 8, !noundef !3 store ptr %50, ptr %data5, align 8 %51 = load ptr, ptr %_81, align 8, !noundef !3 store ptr %51, ptr %data_pointer, align 8 %52 = load ptr, ptr %_81, align 8, !noundef !3 store ptr %52, ptr %_85, align 8 %53 = load ptr, ptr %_85, align 8, !noundef !3 store ptr %53, ptr %_84, align 8 %54 = getelementptr inbounds i8, ptr %_84, i64 8 store i64 %new_size, ptr %54, align 8 %55 = load ptr, ptr %_84, align 8, !noundef !3 %56 = getelementptr inbounds i8, ptr %_84, i64 8 %57 = load i64, ptr %56, align 8, !noundef !3 store ptr %55, ptr %_83, align 8 %58 = getelementptr inbounds i8, ptr %_83, i64 8 store i64 %57, ptr %58, align 8 %59 = load ptr, ptr %_83, align 8, !noundef !3 %60 = getelementptr inbounds i8, ptr %_83, i64 8 %61 = load i64, ptr %60, align 8, !noundef !3 store ptr %59, ptr %ptr4, align 8 %62 = getelementptr inbounds i8, ptr %ptr4, i64 8 store i64 %61, ptr %62, align 8 br label %bb24 bb6: ; preds = %bb19 %self13 = getelementptr inbounds i8, ptr %raw_ptr, i64 %old_size9 %count = sub i64 %new_size, %old_size9 br label %bb22 bb22: ; preds = %bb6 %63 = mul i64 1, %count call void @llvm.memset.p0.i64(ptr align 1 %self13, i8 0, i64 %63, i1 false) br label %bb7 bb24: ; preds = %bb23, %bb7 %_88.0 = load ptr, ptr %ptr4, align 8, !noundef !3 %64 = getelementptr inbounds i8, ptr %ptr4, i64 8 %_88.1 = load i64, ptr %64, align 8, !noundef !3 store ptr %_88.0, ptr %_34, align 8 %65 = getelementptr inbounds i8, ptr %_34, i64 8 store i64 %_88.1, ptr %65, align 8 %66 = load ptr, ptr %_34, align 8, !nonnull !3, !noundef !3 %67 = getelementptr inbounds i8, ptr %_34, i64 8 %68 = load i64, ptr %67, align 8, !noundef !3 store ptr %66, ptr %_0, align 8 %69 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %68, ptr %69, align 8 br label %bb10 bb21: ; No predecessors! ; call core::intrinsics::write_bytes::precondition_check call void @_ZN4core10intrinsics11write_bytes18precondition_check17hd3ee39194b8d54d1E(ptr %self13, i64 1) #18 %70 = mul i64 1, %count call void @llvm.memset.p0.i64(ptr align 1 %self13, i8 0, i64 %70, i1 false) store ptr %ptr12, ptr %data, align 8 store i64 %new_size, ptr %len, align 8 store ptr %ptr12, ptr %_81, align 8 %71 = load ptr, ptr %_81, align 8, !noundef !3 store ptr %71, ptr %data5, align 8 %72 = load ptr, ptr %_81, align 8, !noundef !3 store ptr %72, ptr %data_pointer, align 8 %73 = load ptr, ptr %_81, align 8, !noundef !3 store ptr %73, ptr %_85, align 8 %74 = load ptr, ptr %_85, align 8, !noundef !3 store ptr %74, ptr %_84, align 8 %75 = getelementptr inbounds i8, ptr %_84, i64 8 store i64 %new_size, ptr %75, align 8 %76 = load ptr, ptr %_84, align 8, !noundef !3 %77 = getelementptr inbounds i8, ptr %_84, i64 8 %78 = load i64, ptr %77, align 8, !noundef !3 store ptr %76, ptr %_83, align 8 %79 = getelementptr inbounds i8, ptr %_83, i64 8 store i64 %78, ptr %79, align 8 %80 = load ptr, ptr %_83, align 8, !noundef !3 %81 = getelementptr inbounds i8, ptr %_83, i64 8 %82 = load i64, ptr %81, align 8, !noundef !3 store ptr %80, ptr %ptr4, align 8 %83 = getelementptr inbounds i8, ptr %ptr4, i64 8 store i64 %82, ptr %83, align 8 br label %bb23 bb23: ; preds = %bb21 %_87 = load ptr, ptr %ptr4, align 8, !noundef !3 %84 = getelementptr inbounds i8, ptr %ptr4, i64 8 %85 = load i64, ptr %84, align 8, !noundef !3 ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h21c8f7e2345c8932E"(ptr %_87) #18 br label %bb24 } ; alloc::raw_vec::finish_grow ; Function Attrs: noinline nonlazybind uwtable define void @_ZN5alloc7raw_vec11finish_grow17h3c7fbbcb8d63796eE(ptr sret(%"core::result::Result, alloc::collections::TryReserveError>") align 8 %_0, i64 %0, i64 %1, ptr align 8 %current_memory, ptr align 1 %alloc) unnamed_addr #5 { start: %self3 = alloca %"alloc::collections::TryReserveErrorKind", align 8 %_59 = alloca %"alloc::collections::TryReserveError", align 8 %_50 = alloca i64, align 8 %_44 = alloca i64, align 8 %_39 = alloca %"alloc::collections::TryReserveError", align 8 %_37 = alloca %"core::result::Result::Err", align 8 %self2 = alloca %"core::result::Result, core::alloc::AllocError>", align 8 %old_layout = alloca %"core::alloc::layout::Layout", align 8 %memory = alloca %"core::result::Result, core::alloc::AllocError>", align 8 %residual = alloca %"core::result::Result::Err", align 8 %self = alloca %"core::result::Result", align 8 %_5 = alloca %"core::ops::control_flow::ControlFlow, core::alloc::layout::Layout>", align 8 %new_layout1 = alloca %"core::alloc::layout::Layout", align 8 %new_layout = alloca %"core::result::Result", align 8 store i64 %0, ptr %new_layout, align 8 %2 = getelementptr inbounds i8, ptr %new_layout, i64 8 store i64 %1, ptr %2, align 8 %3 = load i64, ptr %new_layout, align 8, !range !10, !noundef !3 %4 = icmp eq i64 %3, 0 %_33 = select i1 %4, i64 1, i64 0 %5 = icmp eq i64 %_33, 0 br i1 %5, label %bb8, label %bb7 bb8: ; preds = %start %t.0 = load i64, ptr %new_layout, align 8, !range !9, !noundef !3 %6 = getelementptr inbounds i8, ptr %new_layout, i64 8 %t.1 = load i64, ptr %6, align 8, !noundef !3 %7 = getelementptr inbounds i8, ptr %self, i64 8 store i64 %t.0, ptr %7, align 8 %8 = getelementptr inbounds i8, ptr %7, i64 8 store i64 %t.1, ptr %8, align 8 store i64 0, ptr %self, align 8 %9 = getelementptr inbounds i8, ptr %self, i64 8 %v.0 = load i64, ptr %9, align 8, !range !9, !noundef !3 %10 = getelementptr inbounds i8, ptr %9, i64 8 %v.1 = load i64, ptr %10, align 8, !noundef !3 %11 = getelementptr inbounds i8, ptr %_5, i64 8 store i64 %v.0, ptr %11, align 8 %12 = getelementptr inbounds i8, ptr %11, i64 8 store i64 %v.1, ptr %12, align 8 store i64 0, ptr %_5, align 8 %13 = getelementptr inbounds i8, ptr %_5, i64 8 %val.0 = load i64, ptr %13, align 8, !range !9, !noundef !3 %14 = getelementptr inbounds i8, ptr %13, i64 8 %val.1 = load i64, ptr %14, align 8, !noundef !3 store i64 %val.0, ptr %new_layout1, align 8 %15 = getelementptr inbounds i8, ptr %new_layout1, i64 8 store i64 %val.1, ptr %15, align 8 %16 = getelementptr inbounds i8, ptr %new_layout1, i64 8 %alloc_size = load i64, ptr %16, align 8, !noundef !3 %17 = getelementptr inbounds i8, ptr %current_memory, i64 8 %18 = load i64, ptr %17, align 8, !range !10, !noundef !3 %19 = icmp eq i64 %18, 0 %_14 = select i1 %19, i64 0, i64 1 %20 = icmp eq i64 %_14, 1 br i1 %20, label %bb2, label %bb1 bb7: ; preds = %start %21 = load i64, ptr @0, align 8, !range !10, !noundef !3 %22 = load i64, ptr getelementptr inbounds (i8, ptr @0, i64 8), align 8 %23 = getelementptr inbounds i8, ptr %self, i64 8 store i64 %21, ptr %23, align 8 %24 = getelementptr inbounds i8, ptr %23, i64 8 store i64 %22, ptr %24, align 8 store i64 1, ptr %self, align 8 %25 = getelementptr inbounds i8, ptr %self, i64 8 %e.0 = load i64, ptr %25, align 8, !range !10, !noundef !3 %26 = getelementptr inbounds i8, ptr %25, i64 8 %e.1 = load i64, ptr %26, align 8 store i64 %e.0, ptr %_37, align 8 %27 = getelementptr inbounds i8, ptr %_37, i64 8 store i64 %e.1, ptr %27, align 8 %28 = load i64, ptr %_37, align 8, !range !10, !noundef !3 %29 = getelementptr inbounds i8, ptr %_37, i64 8 %30 = load i64, ptr %29, align 8 %31 = getelementptr inbounds i8, ptr %_5, i64 8 store i64 %28, ptr %31, align 8 %32 = getelementptr inbounds i8, ptr %31, i64 8 store i64 %30, ptr %32, align 8 store i64 1, ptr %_5, align 8 %33 = getelementptr inbounds i8, ptr %_5, i64 8 %34 = load i64, ptr %33, align 8, !range !10, !noundef !3 %35 = getelementptr inbounds i8, ptr %33, i64 8 %36 = load i64, ptr %35, align 8 store i64 %34, ptr %residual, align 8 %37 = getelementptr inbounds i8, ptr %residual, i64 8 store i64 %36, ptr %37, align 8 %e.08 = load i64, ptr %residual, align 8, !range !10, !noundef !3 %38 = getelementptr inbounds i8, ptr %residual, i64 8 %e.19 = load i64, ptr %38, align 8 store i64 %e.08, ptr %_39, align 8 %39 = getelementptr inbounds i8, ptr %_39, i64 8 store i64 %e.19, ptr %39, align 8 %40 = load i64, ptr %_39, align 8, !range !10, !noundef !3 %41 = getelementptr inbounds i8, ptr %_39, i64 8 %42 = load i64, ptr %41, align 8 %43 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %40, ptr %43, align 8 %44 = getelementptr inbounds i8, ptr %43, i64 8 store i64 %42, ptr %44, align 8 store i64 1, ptr %_0, align 8 br label %bb6 bb2: ; preds = %bb8 %ptr = load ptr, ptr %current_memory, align 8, !nonnull !3, !noundef !3 %45 = getelementptr inbounds i8, ptr %current_memory, i64 8 %46 = load i64, ptr %45, align 8, !range !9, !noundef !3 %47 = getelementptr inbounds i8, ptr %45, i64 8 %48 = load i64, ptr %47, align 8, !noundef !3 store i64 %46, ptr %old_layout, align 8 %49 = getelementptr inbounds i8, ptr %old_layout, i64 8 store i64 %48, ptr %49, align 8 %self4 = load i64, ptr %old_layout, align 8, !range !9, !noundef !3 store i64 %self4, ptr %_44, align 8 %_45 = load i64, ptr %_44, align 8, !range !9, !noundef !3 %_46 = icmp uge i64 %_45, 1 %_47 = icmp ule i64 %_45, -9223372036854775808 %_48 = and i1 %_46, %_47 %self5 = load i64, ptr %new_layout1, align 8, !range !9, !noundef !3 store i64 %self5, ptr %_50, align 8 %_51 = load i64, ptr %_50, align 8, !range !9, !noundef !3 %_52 = icmp uge i64 %_51, 1 %_53 = icmp ule i64 %_51, -9223372036854775808 %_54 = and i1 %_52, %_53 %cond = icmp eq i64 %_45, %_51 br label %bb10 bb1: ; preds = %bb8 %_30.0 = load i64, ptr %new_layout1, align 8, !range !9, !noundef !3 %50 = getelementptr inbounds i8, ptr %new_layout1, i64 8 %_30.1 = load i64, ptr %50, align 8, !noundef !3 ; call ::allocate %51 = call { ptr, i64 } @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17hc29c19551377ac42E"(ptr align 1 %alloc, i64 %_30.0, i64 %_30.1) %52 = extractvalue { ptr, i64 } %51, 0 %53 = extractvalue { ptr, i64 } %51, 1 store ptr %52, ptr %memory, align 8 %54 = getelementptr inbounds i8, ptr %memory, i64 8 store i64 %53, ptr %54, align 8 br label %bb5 bb10: ; preds = %bb9, %bb2 %_27.0 = load i64, ptr %old_layout, align 8, !range !9, !noundef !3 %55 = getelementptr inbounds i8, ptr %old_layout, i64 8 %_27.1 = load i64, ptr %55, align 8, !noundef !3 %_28.0 = load i64, ptr %new_layout1, align 8, !range !9, !noundef !3 %56 = getelementptr inbounds i8, ptr %new_layout1, i64 8 %_28.1 = load i64, ptr %56, align 8, !noundef !3 ; call ::grow %57 = call { ptr, i64 } @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h83b06026c1fe00bdE"(ptr align 1 %alloc, ptr %ptr, i64 %_27.0, i64 %_27.1, i64 %_28.0, i64 %_28.1) %58 = extractvalue { ptr, i64 } %57, 0 %59 = extractvalue { ptr, i64 } %57, 1 store ptr %58, ptr %memory, align 8 %60 = getelementptr inbounds i8, ptr %memory, i64 8 store i64 %59, ptr %60, align 8 br label %bb5 bb9: ; No predecessors! ; call core::hint::assert_unchecked::precondition_check call void @_ZN4core4hint16assert_unchecked18precondition_check17h2ff0c3733cd6e185E(i1 zeroext %cond) #18 br label %bb10 bb5: ; preds = %bb1, %bb10 %61 = load ptr, ptr %memory, align 8, !noundef !3 %62 = getelementptr inbounds i8, ptr %memory, i64 8 %63 = load i64, ptr %62, align 8 store ptr %61, ptr %self2, align 8 %64 = getelementptr inbounds i8, ptr %self2, i64 8 store i64 %63, ptr %64, align 8 %65 = load ptr, ptr %self2, align 8, !noundef !3 %66 = ptrtoint ptr %65 to i64 %67 = icmp eq i64 %66, 0 %_57 = select i1 %67, i64 1, i64 0 %68 = icmp eq i64 %_57, 0 br i1 %68, label %bb13, label %bb12 bb13: ; preds = %bb5 %t.06 = load ptr, ptr %self2, align 8, !nonnull !3, !noundef !3 %69 = getelementptr inbounds i8, ptr %self2, i64 8 %t.17 = load i64, ptr %69, align 8, !noundef !3 %70 = getelementptr inbounds i8, ptr %_0, i64 8 store ptr %t.06, ptr %70, align 8 %71 = getelementptr inbounds i8, ptr %70, i64 8 store i64 %t.17, ptr %71, align 8 store i64 0, ptr %_0, align 8 br label %bb11 bb12: ; preds = %bb5 %_61.0 = load i64, ptr %new_layout1, align 8, !range !9, !noundef !3 %72 = getelementptr inbounds i8, ptr %new_layout1, i64 8 %_61.1 = load i64, ptr %72, align 8, !noundef !3 store i64 %_61.0, ptr %self3, align 8 %73 = getelementptr inbounds i8, ptr %self3, i64 8 store i64 %_61.1, ptr %73, align 8 %74 = load i64, ptr %self3, align 8, !range !10, !noundef !3 %75 = getelementptr inbounds i8, ptr %self3, i64 8 %76 = load i64, ptr %75, align 8 store i64 %74, ptr %_59, align 8 %77 = getelementptr inbounds i8, ptr %_59, i64 8 store i64 %76, ptr %77, align 8 %78 = load i64, ptr %_59, align 8, !range !10, !noundef !3 %79 = getelementptr inbounds i8, ptr %_59, i64 8 %80 = load i64, ptr %79, align 8 %81 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %78, ptr %81, align 8 %82 = getelementptr inbounds i8, ptr %81, i64 8 store i64 %80, ptr %82, align 8 store i64 1, ptr %_0, align 8 br label %bb11 bb11: ; preds = %bb12, %bb13 br label %bb6 bb6: ; preds = %bb7, %bb11 ret void bb14: ; No predecessors! unreachable } ; alloc::raw_vec::handle_reserve ; Function Attrs: inlinehint nonlazybind uwtable define internal void @_ZN5alloc7raw_vec14handle_reserve17he6f601baa2bb5369E(i64 %0, i64 %1) unnamed_addr #0 { start: %e = alloca %"alloc::collections::TryReserveError", align 8 %_9 = alloca %"alloc::collections::TryReserveErrorKind", align 8 %_2 = alloca %"core::result::Result<(), alloc::collections::TryReserveErrorKind>", align 8 %result = alloca %"core::result::Result<(), alloc::collections::TryReserveError>", align 8 store i64 %0, ptr %result, align 8 %2 = getelementptr inbounds i8, ptr %result, i64 8 store i64 %1, ptr %2, align 8 %3 = load i64, ptr %result, align 8, !range !11, !noundef !3 %4 = icmp eq i64 %3, -9223372036854775807 %_7 = select i1 %4, i64 0, i64 1 %5 = icmp eq i64 %_7, 0 br i1 %5, label %bb3, label %bb2 bb3: ; preds = %start br label %bb1 bb2: ; preds = %start %e.0 = load i64, ptr %result, align 8, !range !10, !noundef !3 %6 = getelementptr inbounds i8, ptr %result, i64 8 %e.1 = load i64, ptr %6, align 8 store i64 %e.0, ptr %e, align 8 %7 = getelementptr inbounds i8, ptr %e, i64 8 store i64 %e.1, ptr %7, align 8 %8 = load i64, ptr %e, align 8, !range !10, !noundef !3 %9 = icmp eq i64 %8, 0 %_13 = select i1 %9, i64 0, i64 1 %10 = icmp eq i64 %_13, 0 br i1 %10, label %bb5, label %bb4 bb1: ; preds = %bb4, %bb3 ret void bb5: ; preds = %bb2 ; call alloc::raw_vec::capacity_overflow call void @_ZN5alloc7raw_vec17capacity_overflow17h82d021ba93491920E() #19 unreachable bb4: ; preds = %bb2 %__self_1 = getelementptr i8, ptr %e, i64 16 %_16.0 = load i64, ptr %e, align 8, !range !9, !noundef !3 %11 = getelementptr inbounds i8, ptr %e, i64 8 %_16.1 = load i64, ptr %11, align 8, !noundef !3 store i64 %_16.0, ptr %_9, align 8 %12 = getelementptr inbounds i8, ptr %_9, i64 8 store i64 %_16.1, ptr %12, align 8 %13 = load i64, ptr %_9, align 8, !range !10, !noundef !3 %14 = getelementptr inbounds i8, ptr %_9, i64 8 %15 = load i64, ptr %14, align 8 store i64 %13, ptr %_2, align 8 %16 = getelementptr inbounds i8, ptr %_2, i64 8 store i64 %15, ptr %16, align 8 %17 = load i64, ptr %_2, align 8, !range !11, !noundef !3 %18 = icmp eq i64 %17, -9223372036854775807 %_3 = select i1 %18, i64 0, i64 1 %19 = icmp eq i64 %_3, 0 br i1 %19, label %bb1, label %bb7 bb7: ; preds = %bb4 %layout.0 = load i64, ptr %_2, align 8, !range !9, !noundef !3 %20 = getelementptr inbounds i8, ptr %_2, i64 8 %layout.1 = load i64, ptr %20, align 8, !noundef !3 ; call alloc::alloc::handle_alloc_error call void @_ZN5alloc5alloc18handle_alloc_error17h6b3004e98c688004E(i64 %layout.0, i64 %layout.1) #19 unreachable bb6: ; No predecessors! unreachable } ; alloc::raw_vec::RawVec::allocate_in ; Function Attrs: nonlazybind uwtable define { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h713bd34ca98ba10eE"(i64 %capacity, i1 zeroext %0) unnamed_addr #1 personality ptr @rust_eh_personality { start: %1 = alloca { ptr, i32, [1 x i32] }, align 8 %_27 = alloca i8, align 1 %_25 = alloca i64, align 8 %pointer = alloca ptr, align 8 %_23 = alloca ptr, align 8 %result = alloca %"core::result::Result, core::alloc::AllocError>", align 8 %_7 = alloca %"core::result::Result", align 8 %layout = alloca %"core::alloc::layout::Layout", align 8 %_0 = alloca %"alloc::raw_vec::RawVec", align 8 %alloc = alloca %"alloc::alloc::Global", align 1 %init = alloca i8, align 1 %2 = zext i1 %0 to i8 store i8 %2, ptr %init, align 1 store i8 1, ptr %_27, align 1 br label %bb1 bb1: ; preds = %start %3 = icmp eq i64 %capacity, 0 br i1 %3, label %bb2, label %bb4 bb2: ; preds = %bb1 store i8 0, ptr %_27, align 1 ; invoke alloc::raw_vec::RawVec::new_in %4 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6new_in17h007f429350a62071E"() to label %bb3 unwind label %cleanup bb4: ; preds = %bb1 ; invoke core::alloc::layout::Layout::array::inner %5 = invoke { i64, i64 } @_ZN4core5alloc6layout6Layout5array5inner17h460b03bc2b414558E(i64 32, i64 8, i64 %capacity) to label %bb18 unwind label %cleanup bb17: ; preds = %cleanup %6 = load i8, ptr %_27, align 1, !range !5, !noundef !3 %7 = trunc i8 %6 to i1 br i1 %7, label %bb16, label %bb15 cleanup: ; preds = %bb2, %bb5, %bb12, %bb7, %bb8, %bb4 %8 = landingpad { ptr, i32 } cleanup %9 = extractvalue { ptr, i32 } %8, 0 %10 = extractvalue { ptr, i32 } %8, 1 store ptr %9, ptr %1, align 8 %11 = getelementptr inbounds i8, ptr %1, i64 8 store i32 %10, ptr %11, align 8 br label %bb17 bb18: ; preds = %bb4 %12 = extractvalue { i64, i64 } %5, 0 %13 = extractvalue { i64, i64 } %5, 1 store i64 %12, ptr %_7, align 8 %14 = getelementptr inbounds i8, ptr %_7, i64 8 store i64 %13, ptr %14, align 8 %15 = load i64, ptr %_7, align 8, !range !10, !noundef !3 %16 = icmp eq i64 %15, 0 %_8 = select i1 %16, i64 1, i64 0 %17 = icmp eq i64 %_8, 0 br i1 %17, label %bb6, label %bb5 bb6: ; preds = %bb18 %layout.0 = load i64, ptr %_7, align 8, !range !9, !noundef !3 %18 = getelementptr inbounds i8, ptr %_7, i64 8 %layout.1 = load i64, ptr %18, align 8, !noundef !3 store i64 %layout.0, ptr %layout, align 8 %19 = getelementptr inbounds i8, ptr %layout, i64 8 store i64 %layout.1, ptr %19, align 8 %20 = getelementptr inbounds i8, ptr %layout, i64 8 %alloc_size = load i64, ptr %20, align 8, !noundef !3 %21 = load i8, ptr %init, align 1, !range !5, !noundef !3 %22 = trunc i8 %21 to i1 %_14 = zext i1 %22 to i64 %23 = icmp eq i64 %_14, 0 br i1 %23, label %bb8, label %bb7 bb5: ; preds = %bb18 ; invoke alloc::raw_vec::capacity_overflow invoke void @_ZN5alloc7raw_vec17capacity_overflow17h82d021ba93491920E() #19 to label %unreachable unwind label %cleanup bb8: ; preds = %bb6 %_16.0 = load i64, ptr %layout, align 8, !range !9, !noundef !3 %24 = getelementptr inbounds i8, ptr %layout, i64 8 %_16.1 = load i64, ptr %24, align 8, !noundef !3 ; invoke ::allocate %25 = invoke { ptr, i64 } @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17hc29c19551377ac42E"(ptr align 1 %alloc, i64 %_16.0, i64 %_16.1) to label %bb9 unwind label %cleanup bb7: ; preds = %bb6 %_18.0 = load i64, ptr %layout, align 8, !range !9, !noundef !3 %26 = getelementptr inbounds i8, ptr %layout, i64 8 %_18.1 = load i64, ptr %26, align 8, !noundef !3 ; invoke ::allocate_zeroed %27 = invoke { ptr, i64 } @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$15allocate_zeroed17h6a43219d39eaeb07E"(ptr align 1 %alloc, i64 %_18.0, i64 %_18.1) to label %bb10 unwind label %cleanup bb9: ; preds = %bb8 %28 = extractvalue { ptr, i64 } %25, 0 %29 = extractvalue { ptr, i64 } %25, 1 store ptr %28, ptr %result, align 8 %30 = getelementptr inbounds i8, ptr %result, i64 8 store i64 %29, ptr %30, align 8 br label %bb11 bb11: ; preds = %bb10, %bb9 %31 = load ptr, ptr %result, align 8, !noundef !3 %32 = ptrtoint ptr %31 to i64 %33 = icmp eq i64 %32, 0 %_19 = select i1 %33, i64 1, i64 0 %34 = icmp eq i64 %_19, 0 br i1 %34, label %bb13, label %bb12 bb10: ; preds = %bb7 %35 = extractvalue { ptr, i64 } %27, 0 %36 = extractvalue { ptr, i64 } %27, 1 store ptr %35, ptr %result, align 8 %37 = getelementptr inbounds i8, ptr %result, i64 8 store i64 %36, ptr %37, align 8 br label %bb11 bb13: ; preds = %bb11 %ptr.0 = load ptr, ptr %result, align 8, !nonnull !3, !noundef !3 %38 = getelementptr inbounds i8, ptr %result, i64 8 %ptr.1 = load i64, ptr %38, align 8, !noundef !3 store ptr %ptr.0, ptr %pointer, align 8 %39 = load ptr, ptr %pointer, align 8, !nonnull !3, !noundef !3 store ptr %39, ptr %_23, align 8 store i64 %capacity, ptr %_25, align 8 %40 = load ptr, ptr %_23, align 8, !nonnull !3, !noundef !3 %41 = getelementptr inbounds i8, ptr %_0, i64 8 store ptr %40, ptr %41, align 8 %42 = load i64, ptr %_25, align 8, !range !7, !noundef !3 store i64 %42, ptr %_0, align 8 br label %bb14 bb12: ; preds = %bb11 %_22.0 = load i64, ptr %layout, align 8, !range !9, !noundef !3 %43 = getelementptr inbounds i8, ptr %layout, i64 8 %_22.1 = load i64, ptr %43, align 8, !noundef !3 ; invoke alloc::alloc::handle_alloc_error invoke void @_ZN5alloc5alloc18handle_alloc_error17h6b3004e98c688004E(i64 %_22.0, i64 %_22.1) #19 to label %unreachable unwind label %cleanup bb14: ; preds = %bb3, %bb13 %44 = load i64, ptr %_0, align 8, !range !7, !noundef !3 %45 = getelementptr inbounds i8, ptr %_0, i64 8 %46 = load ptr, ptr %45, align 8, !nonnull !3, !noundef !3 %47 = insertvalue { i64, ptr } poison, i64 %44, 0 %48 = insertvalue { i64, ptr } %47, ptr %46, 1 ret { i64, ptr } %48 unreachable: ; preds = %bb5, %bb12 unreachable bb19: ; No predecessors! unreachable bb3: ; preds = %bb2 %49 = extractvalue { i64, ptr } %4, 0 %50 = extractvalue { i64, ptr } %4, 1 store i64 %49, ptr %_0, align 8 %51 = getelementptr inbounds i8, ptr %_0, i64 8 store ptr %50, ptr %51, align 8 br label %bb14 bb15: ; preds = %bb16, %bb17 %52 = load ptr, ptr %1, align 8, !noundef !3 %53 = getelementptr inbounds i8, ptr %1, i64 8 %54 = load i32, ptr %53, align 8, !noundef !3 %55 = insertvalue { ptr, i32 } poison, ptr %52, 0 %56 = insertvalue { ptr, i32 } %55, i32 %54, 1 resume { ptr, i32 } %56 bb16: ; preds = %bb17 br label %bb15 } ; alloc::raw_vec::RawVec::current_memory ; Function Attrs: nonlazybind uwtable define void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2884d1dac932fca8E"(ptr sret(%"core::option::Option<(core::ptr::non_null::NonNull, core::alloc::layout::Layout)>") align 8 %_0, ptr align 8 %self) unnamed_addr #1 { start: %self1 = alloca ptr, align 8 %_9 = alloca { ptr, %"core::alloc::layout::Layout" }, align 8 %layout = alloca %"core::alloc::layout::Layout", align 8 br label %bb1 bb1: ; preds = %start %_3 = load i64, ptr %self, align 8, !noundef !3 %0 = icmp eq i64 %_3, 0 br i1 %0, label %bb2, label %bb4 bb2: ; preds = %bb1 br label %bb3 bb4: ; preds = %bb1 %rhs = load i64, ptr %self, align 8, !noundef !3 %size = mul nuw i64 32, %rhs %1 = getelementptr inbounds i8, ptr %layout, i64 8 store i64 %size, ptr %1, align 8 store i64 8, ptr %layout, align 8 %2 = getelementptr inbounds i8, ptr %self, i64 8 %self2 = load ptr, ptr %2, align 8, !nonnull !3, !noundef !3 store ptr %self2, ptr %self1, align 8 %3 = load ptr, ptr %self1, align 8, !nonnull !3, !noundef !3 store ptr %3, ptr %_9, align 8 %4 = load i64, ptr %layout, align 8, !range !9, !noundef !3 %5 = getelementptr inbounds i8, ptr %layout, i64 8 %6 = load i64, ptr %5, align 8, !noundef !3 %7 = getelementptr inbounds i8, ptr %_9, i64 8 store i64 %4, ptr %7, align 8 %8 = getelementptr inbounds i8, ptr %7, i64 8 store i64 %6, ptr %8, align 8 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_0, ptr align 8 %_9, i64 24, i1 false) br label %bb5 bb3: ; preds = %bb2 %9 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 0, ptr %9, align 8 br label %bb5 bb5: ; preds = %bb3, %bb4 ret void } ; alloc::raw_vec::RawVec::current_memory ; Function Attrs: nonlazybind uwtable define void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h73cff50e42fddf4dE"(ptr sret(%"core::option::Option<(core::ptr::non_null::NonNull, core::alloc::layout::Layout)>") align 8 %_0, ptr align 8 %self) unnamed_addr #1 { start: %self1 = alloca ptr, align 8 %_9 = alloca { ptr, %"core::alloc::layout::Layout" }, align 8 %layout = alloca %"core::alloc::layout::Layout", align 8 br label %bb1 bb1: ; preds = %start %_3 = load i64, ptr %self, align 8, !noundef !3 %0 = icmp eq i64 %_3, 0 br i1 %0, label %bb2, label %bb4 bb2: ; preds = %bb1 br label %bb3 bb4: ; preds = %bb1 %rhs = load i64, ptr %self, align 8, !noundef !3 %size = mul nuw i64 32, %rhs %1 = getelementptr inbounds i8, ptr %layout, i64 8 store i64 %size, ptr %1, align 8 store i64 8, ptr %layout, align 8 %2 = getelementptr inbounds i8, ptr %self, i64 8 %self2 = load ptr, ptr %2, align 8, !nonnull !3, !noundef !3 store ptr %self2, ptr %self1, align 8 %3 = load ptr, ptr %self1, align 8, !nonnull !3, !noundef !3 store ptr %3, ptr %_9, align 8 %4 = load i64, ptr %layout, align 8, !range !9, !noundef !3 %5 = getelementptr inbounds i8, ptr %layout, i64 8 %6 = load i64, ptr %5, align 8, !noundef !3 %7 = getelementptr inbounds i8, ptr %_9, i64 8 store i64 %4, ptr %7, align 8 %8 = getelementptr inbounds i8, ptr %7, i64 8 store i64 %6, ptr %8, align 8 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_0, ptr align 8 %_9, i64 24, i1 false) br label %bb5 bb3: ; preds = %bb2 %9 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 0, ptr %9, align 8 br label %bb5 bb5: ; preds = %bb3, %bb4 ret void } ; alloc::raw_vec::RawVec::grow_amortized ; Function Attrs: nonlazybind uwtable define { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17h9a6b576507d666f7E"(ptr align 8 %self, i64 %len, i64 %additional) unnamed_addr #1 { start: %0 = alloca i8, align 1 %_45 = alloca i64, align 8 %pointer = alloca ptr, align 8 %_43 = alloca ptr, align 8 %_42 = alloca %"core::result::Result::Err", align 8 %_34 = alloca %"alloc::collections::TryReserveError", align 8 %_32 = alloca %"core::result::Result::Err", align 8 %residual4 = alloca %"core::result::Result::Err", align 8 %_17 = alloca %"core::option::Option<(core::ptr::non_null::NonNull, core::alloc::layout::Layout)>", align 8 %self3 = alloca %"core::result::Result, alloc::collections::TryReserveError>", align 8 %_15 = alloca %"core::ops::control_flow::ControlFlow, core::ptr::non_null::NonNull<[u8]>>", align 8 %residual = alloca %"core::result::Result::Err", align 8 %self2 = alloca %"core::option::Option", align 8 %self1 = alloca %"core::result::Result", align 8 %_5 = alloca %"core::ops::control_flow::ControlFlow, usize>", align 8 %_0 = alloca %"core::result::Result<(), alloc::collections::TryReserveError>", align 8 br label %bb2 bb2: ; preds = %start %1 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %len, i64 %additional) %_25.0 = extractvalue { i64, i1 } %1, 0 %_25.1 = extractvalue { i64, i1 } %1, 1 %2 = call i1 @llvm.expect.i1(i1 %_25.1, i1 false) %3 = zext i1 %2 to i8 store i8 %3, ptr %0, align 1 %4 = load i8, ptr %0, align 1, !range !5, !noundef !3 %_22 = trunc i8 %4 to i1 br i1 %_22, label %bb8, label %bb9 bb9: ; preds = %bb2 %5 = getelementptr inbounds i8, ptr %self2, i64 8 store i64 %_25.0, ptr %5, align 8 store i64 1, ptr %self2, align 8 %6 = getelementptr inbounds i8, ptr %self2, i64 8 %v = load i64, ptr %6, align 8, !noundef !3 %7 = getelementptr inbounds i8, ptr %self1, i64 8 store i64 %v, ptr %7, align 8 store i64 -9223372036854775807, ptr %self1, align 8 %8 = getelementptr inbounds i8, ptr %self1, i64 8 %v5 = load i64, ptr %8, align 8, !noundef !3 %9 = getelementptr inbounds i8, ptr %_5, i64 8 store i64 %v5, ptr %9, align 8 store i64 -9223372036854775807, ptr %_5, align 8 %10 = getelementptr inbounds i8, ptr %_5, i64 8 %required_cap = load i64, ptr %10, align 8, !noundef !3 %_12 = load i64, ptr %self, align 8, !noundef !3 %v1 = mul i64 %_12, 2 ; call core::cmp::max_by %cap = call i64 @_ZN4core3cmp6max_by17h8137c37b8c7f7867E(i64 %v1, i64 %required_cap) ; call core::cmp::max_by %cap6 = call i64 @_ZN4core3cmp6max_by17h8137c37b8c7f7867E(i64 4, i64 %cap) ; call core::alloc::layout::Layout::array::inner %11 = call { i64, i64 } @_ZN4core5alloc6layout6Layout5array5inner17h460b03bc2b414558E(i64 32, i64 8, i64 %cap6) %new_layout.0 = extractvalue { i64, i64 } %11, 0 %new_layout.1 = extractvalue { i64, i64 } %11, 1 ; call alloc::raw_vec::RawVec::current_memory call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h73cff50e42fddf4dE"(ptr sret(%"core::option::Option<(core::ptr::non_null::NonNull, core::alloc::layout::Layout)>") align 8 %_17, ptr align 8 %self) %_19 = getelementptr i8, ptr %self, i64 16 ; call alloc::raw_vec::finish_grow call void @_ZN5alloc7raw_vec11finish_grow17h3c7fbbcb8d63796eE(ptr sret(%"core::result::Result, alloc::collections::TryReserveError>") align 8 %self3, i64 %new_layout.0, i64 %new_layout.1, ptr align 8 %_17, ptr align 1 %_19) %_39 = load i64, ptr %self3, align 8, !range !4, !noundef !3 %12 = icmp eq i64 %_39, 0 br i1 %12, label %bb14, label %bb13 bb8: ; preds = %bb2 %13 = load i64, ptr @0, align 8, !range !4, !noundef !3 %14 = load i64, ptr getelementptr inbounds (i8, ptr @0, i64 8), align 8 store i64 %13, ptr %self2, align 8 %15 = getelementptr inbounds i8, ptr %self2, i64 8 store i64 %14, ptr %15, align 8 %16 = load i64, ptr @0, align 8, !range !10, !noundef !3 %17 = load i64, ptr getelementptr inbounds (i8, ptr @0, i64 8), align 8 store i64 %16, ptr %self1, align 8 %18 = getelementptr inbounds i8, ptr %self1, i64 8 store i64 %17, ptr %18, align 8 %e.09 = load i64, ptr %self1, align 8, !range !10, !noundef !3 %19 = getelementptr inbounds i8, ptr %self1, i64 8 %e.110 = load i64, ptr %19, align 8 store i64 %e.09, ptr %_32, align 8 %20 = getelementptr inbounds i8, ptr %_32, i64 8 store i64 %e.110, ptr %20, align 8 %21 = load i64, ptr %_32, align 8, !range !10, !noundef !3 %22 = getelementptr inbounds i8, ptr %_32, i64 8 %23 = load i64, ptr %22, align 8 store i64 %21, ptr %_5, align 8 %24 = getelementptr inbounds i8, ptr %_5, i64 8 store i64 %23, ptr %24, align 8 %25 = load i64, ptr %_5, align 8, !range !10, !noundef !3 %26 = getelementptr inbounds i8, ptr %_5, i64 8 %27 = load i64, ptr %26, align 8 store i64 %25, ptr %residual, align 8 %28 = getelementptr inbounds i8, ptr %residual, i64 8 store i64 %27, ptr %28, align 8 %e.011 = load i64, ptr %residual, align 8, !range !10, !noundef !3 %29 = getelementptr inbounds i8, ptr %residual, i64 8 %e.112 = load i64, ptr %29, align 8 store i64 %e.011, ptr %_34, align 8 %30 = getelementptr inbounds i8, ptr %_34, i64 8 store i64 %e.112, ptr %30, align 8 %31 = load i64, ptr %_34, align 8, !range !10, !noundef !3 %32 = getelementptr inbounds i8, ptr %_34, i64 8 %33 = load i64, ptr %32, align 8 store i64 %31, ptr %_0, align 8 %34 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %33, ptr %34, align 8 br label %bb5 bb14: ; preds = %bb9 %35 = getelementptr inbounds i8, ptr %self3, i64 8 %v.0 = load ptr, ptr %35, align 8, !nonnull !3, !noundef !3 %36 = getelementptr inbounds i8, ptr %35, i64 8 %v.1 = load i64, ptr %36, align 8, !noundef !3 %37 = getelementptr inbounds i8, ptr %_15, i64 8 store ptr %v.0, ptr %37, align 8 %38 = getelementptr inbounds i8, ptr %37, i64 8 store i64 %v.1, ptr %38, align 8 store i64 0, ptr %_15, align 8 %39 = getelementptr inbounds i8, ptr %_15, i64 8 %ptr.0 = load ptr, ptr %39, align 8, !nonnull !3, !noundef !3 %40 = getelementptr inbounds i8, ptr %39, i64 8 %ptr.1 = load i64, ptr %40, align 8, !noundef !3 store ptr %ptr.0, ptr %pointer, align 8 %41 = load ptr, ptr %pointer, align 8, !nonnull !3, !noundef !3 store ptr %41, ptr %_43, align 8 %42 = getelementptr inbounds i8, ptr %self, i64 8 %43 = load ptr, ptr %_43, align 8, !nonnull !3, !noundef !3 store ptr %43, ptr %42, align 8 store i64 %cap6, ptr %_45, align 8 %44 = load i64, ptr %_45, align 8, !range !7, !noundef !3 store i64 %44, ptr %self, align 8 %45 = load i64, ptr @1, align 8, !range !11, !noundef !3 %46 = load i64, ptr getelementptr inbounds (i8, ptr @1, i64 8), align 8 store i64 %45, ptr %_0, align 8 %47 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %46, ptr %47, align 8 br label %bb6 bb13: ; preds = %bb9 %48 = getelementptr inbounds i8, ptr %self3, i64 8 %e.0 = load i64, ptr %48, align 8, !range !10, !noundef !3 %49 = getelementptr inbounds i8, ptr %48, i64 8 %e.1 = load i64, ptr %49, align 8 store i64 %e.0, ptr %_42, align 8 %50 = getelementptr inbounds i8, ptr %_42, i64 8 store i64 %e.1, ptr %50, align 8 %51 = load i64, ptr %_42, align 8, !range !10, !noundef !3 %52 = getelementptr inbounds i8, ptr %_42, i64 8 %53 = load i64, ptr %52, align 8 %54 = getelementptr inbounds i8, ptr %_15, i64 8 store i64 %51, ptr %54, align 8 %55 = getelementptr inbounds i8, ptr %54, i64 8 store i64 %53, ptr %55, align 8 store i64 1, ptr %_15, align 8 %56 = getelementptr inbounds i8, ptr %_15, i64 8 %57 = load i64, ptr %56, align 8, !range !10, !noundef !3 %58 = getelementptr inbounds i8, ptr %56, i64 8 %59 = load i64, ptr %58, align 8 store i64 %57, ptr %residual4, align 8 %60 = getelementptr inbounds i8, ptr %residual4, i64 8 store i64 %59, ptr %60, align 8 %e.07 = load i64, ptr %residual4, align 8, !range !10, !noundef !3 %61 = getelementptr inbounds i8, ptr %residual4, i64 8 %e.18 = load i64, ptr %61, align 8 store i64 %e.07, ptr %_0, align 8 %62 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %e.18, ptr %62, align 8 br label %bb5 bb6: ; preds = %bb1, %bb5, %bb14 %63 = load i64, ptr %_0, align 8, !range !11, !noundef !3 %64 = getelementptr inbounds i8, ptr %_0, i64 8 %65 = load i64, ptr %64, align 8 %66 = insertvalue { i64, i64 } poison, i64 %63, 0 %67 = insertvalue { i64, i64 } %66, i64 %65, 1 ret { i64, i64 } %67 bb5: ; preds = %bb8, %bb13 br label %bb6 bb15: ; No predecessors! unreachable bb1: ; No predecessors! %68 = load i64, ptr @0, align 8, !range !11, !noundef !3 %69 = load i64, ptr getelementptr inbounds (i8, ptr @0, i64 8), align 8 store i64 %68, ptr %_0, align 8 %70 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %69, ptr %70, align 8 br label %bb6 } ; alloc::raw_vec::RawVec::new_in ; Function Attrs: nonlazybind uwtable define { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6new_in17h007f429350a62071E"() unnamed_addr #1 { start: %_3 = alloca ptr, align 8 %_2 = alloca ptr, align 8 %_0 = alloca %"alloc::raw_vec::RawVec", align 8 br label %bb2 bb2: ; preds = %bb1, %start store ptr inttoptr (i64 8 to ptr), ptr %_3, align 8 %0 = load ptr, ptr %_3, align 8, !nonnull !3, !noundef !3 store ptr %0, ptr %_2, align 8 %1 = load ptr, ptr %_2, align 8, !nonnull !3, !noundef !3 %2 = getelementptr inbounds i8, ptr %_0, i64 8 store ptr %1, ptr %2, align 8 store i64 0, ptr %_0, align 8 %3 = load i64, ptr %_0, align 8, !range !7, !noundef !3 %4 = getelementptr inbounds i8, ptr %_0, i64 8 %5 = load ptr, ptr %4, align 8, !nonnull !3, !noundef !3 %6 = insertvalue { i64, ptr } poison, i64 %3, 0 %7 = insertvalue { i64, ptr } %6, ptr %5, 1 ret { i64, ptr } %7 bb1: ; No predecessors! ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h21c8f7e2345c8932E"(ptr inttoptr (i64 8 to ptr)) #18 br label %bb2 } ; alloc::raw_vec::RawVec::reserve::do_reserve_and_handle ; Function Attrs: cold nonlazybind uwtable define void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h43950ae47031d4f6E"(ptr align 8 %slf, i64 %len, i64 %additional) unnamed_addr #6 { start: ; call alloc::raw_vec::RawVec::grow_amortized %0 = call { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17h9a6b576507d666f7E"(ptr align 8 %slf, i64 %len, i64 %additional) %_5.0 = extractvalue { i64, i64 } %0, 0 %_5.1 = extractvalue { i64, i64 } %0, 1 ; call alloc::raw_vec::handle_reserve call void @_ZN5alloc7raw_vec14handle_reserve17he6f601baa2bb5369E(i64 %_5.0, i64 %_5.1) ret void } ; ::into_iter ; Function Attrs: inlinehint nonlazybind uwtable define void @"_ZN63_$LT$I$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17hc6146173c647b980E"(ptr sret(%"core::iter::adapters::map::Map, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>") align 8 %_0, ptr align 8 %self) unnamed_addr #0 { start: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_0, ptr align 8 %self, i64 32, i1 false) ret void } ; ::deallocate ; Function Attrs: inlinehint nonlazybind uwtable define internal void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h62d14ce2d9245f26E"(ptr align 1 %self, ptr %ptr, i64 %0, i64 %1) unnamed_addr #0 { start: %_14 = alloca i64, align 8 %layout1 = alloca %"core::alloc::layout::Layout", align 8 %layout = alloca %"core::alloc::layout::Layout", align 8 store i64 %0, ptr %layout, align 8 %2 = getelementptr inbounds i8, ptr %layout, i64 8 store i64 %1, ptr %2, align 8 %3 = getelementptr inbounds i8, ptr %layout, i64 8 %_4 = load i64, ptr %3, align 8, !noundef !3 %4 = icmp eq i64 %_4, 0 br i1 %4, label %bb2, label %bb1 bb2: ; preds = %start br label %bb3 bb1: ; preds = %start %5 = load i64, ptr %layout, align 8, !range !9, !noundef !3 %6 = getelementptr inbounds i8, ptr %layout, i64 8 %7 = load i64, ptr %6, align 8, !noundef !3 store i64 %5, ptr %layout1, align 8 %8 = getelementptr inbounds i8, ptr %layout1, i64 8 store i64 %7, ptr %8, align 8 %9 = getelementptr inbounds i8, ptr %layout1, i64 8 %_9 = load i64, ptr %9, align 8, !noundef !3 %self2 = load i64, ptr %layout1, align 8, !range !9, !noundef !3 store i64 %self2, ptr %_14, align 8 %_15 = load i64, ptr %_14, align 8, !range !9, !noundef !3 %_16 = icmp uge i64 %_15, 1 %_17 = icmp ule i64 %_15, -9223372036854775808 %_18 = and i1 %_16, %_17 call void @__rust_dealloc(ptr %ptr, i64 %_9, i64 %_15) #18 br label %bb3 bb3: ; preds = %bb1, %bb2 ret void } ; ::allocate_zeroed ; Function Attrs: inlinehint nonlazybind uwtable define internal { ptr, i64 } @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$15allocate_zeroed17h6a43219d39eaeb07E"(ptr align 1 %self, i64 %layout.0, i64 %layout.1) unnamed_addr #0 { start: ; call alloc::alloc::Global::alloc_impl %0 = call { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h292652c215e4535aE(ptr align 1 %self, i64 %layout.0, i64 %layout.1, i1 zeroext true) %_0.0 = extractvalue { ptr, i64 } %0, 0 %_0.1 = extractvalue { ptr, i64 } %0, 1 %1 = insertvalue { ptr, i64 } poison, ptr %_0.0, 0 %2 = insertvalue { ptr, i64 } %1, i64 %_0.1, 1 ret { ptr, i64 } %2 } ; ::grow ; Function Attrs: inlinehint nonlazybind uwtable define internal { ptr, i64 } @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$4grow17h83b06026c1fe00bdE"(ptr align 1 %self, ptr %ptr, i64 %old_layout.0, i64 %old_layout.1, i64 %new_layout.0, i64 %new_layout.1) unnamed_addr #0 { start: ; call alloc::alloc::Global::grow_impl %0 = call { ptr, i64 } @_ZN5alloc5alloc6Global9grow_impl17hbc83ef3fed33ecd9E(ptr align 1 %self, ptr %ptr, i64 %old_layout.0, i64 %old_layout.1, i64 %new_layout.0, i64 %new_layout.1, i1 zeroext false) %_0.0 = extractvalue { ptr, i64 } %0, 0 %_0.1 = extractvalue { ptr, i64 } %0, 1 %1 = insertvalue { ptr, i64 } poison, ptr %_0.0, 0 %2 = insertvalue { ptr, i64 } %1, i64 %_0.1, 1 ret { ptr, i64 } %2 } ; ::shrink ; Function Attrs: inlinehint nonlazybind uwtable define internal { ptr, i64 } @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5fe99f18c4682133E"(ptr align 1 %self, ptr %ptr, i64 %0, i64 %1, i64 %2, i64 %3) unnamed_addr #0 { start: %self6 = alloca ptr, align 8 %_99 = alloca %"core::ptr::metadata::PtrComponents<[u8]>", align 8 %_98 = alloca %"core::ptr::metadata::PtrRepr<[u8]>", align 8 %_87 = alloca ptr, align 8 %_82 = alloca i64, align 8 %_69 = alloca i64, align 8 %_63 = alloca i64, align 8 %_58 = alloca ptr, align 8 %_57 = alloca %"core::ptr::metadata::PtrComponents<[u8]>", align 8 %_56 = alloca %"core::ptr::metadata::PtrRepr<[u8]>", align 8 %data_pointer = alloca ptr, align 8 %data5 = alloca ptr, align 8 %ptr4 = alloca { ptr, i64 }, align 8 %_52 = alloca ptr, align 8 %_44 = alloca i64, align 8 %self3 = alloca %"core::result::Result, core::alloc::AllocError>", align 8 %_34 = alloca %"core::ops::control_flow::ControlFlow, core::ptr::non_null::NonNull<[u8]>>", align 8 %_32 = alloca %"core::ptr::non_null::NonNull<[u8]>", align 8 %self2 = alloca ptr, align 8 %self1 = alloca ptr, align 8 %_28 = alloca ptr, align 8 %layout = alloca %"core::alloc::layout::Layout", align 8 %data = alloca ptr, align 8 %_12 = alloca %"core::ptr::non_null::NonNull<[u8]>", align 8 %_8 = alloca i64, align 8 %_0 = alloca %"core::result::Result, core::alloc::AllocError>", align 8 %new_layout = alloca %"core::alloc::layout::Layout", align 8 %old_layout = alloca %"core::alloc::layout::Layout", align 8 store i64 %0, ptr %old_layout, align 8 %4 = getelementptr inbounds i8, ptr %old_layout, i64 8 store i64 %1, ptr %4, align 8 store i64 %2, ptr %new_layout, align 8 %5 = getelementptr inbounds i8, ptr %new_layout, i64 8 store i64 %3, ptr %5, align 8 %6 = getelementptr inbounds i8, ptr %new_layout, i64 8 %7 = load i64, ptr %6, align 8, !noundef !3 store i64 %7, ptr %_8, align 8 %8 = load i64, ptr %_8, align 8, !noundef !3 %9 = icmp eq i64 %8, 0 br i1 %9, label %bb1, label %bb3 bb1: ; preds = %start %_11.0 = load i64, ptr %old_layout, align 8, !range !9, !noundef !3 %10 = getelementptr inbounds i8, ptr %old_layout, i64 8 %_11.1 = load i64, ptr %10, align 8, !noundef !3 ; call ::deallocate call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h62d14ce2d9245f26E"(ptr align 1 %self, ptr %ptr, i64 %_11.0, i64 %_11.1) %self7 = load i64, ptr %new_layout, align 8, !range !9, !noundef !3 store i64 %self7, ptr %_44, align 8 %_45 = load i64, ptr %_44, align 8, !range !9, !noundef !3 %_46 = icmp uge i64 %_45, 1 %_47 = icmp ule i64 %_45, -9223372036854775808 %_48 = and i1 %_46, %_47 %ptr8 = inttoptr i64 %_45 to ptr br label %bb11 bb3: ; preds = %start %self9 = load i64, ptr %old_layout, align 8, !range !9, !noundef !3 store i64 %self9, ptr %_63, align 8 %_64 = load i64, ptr %_63, align 8, !range !9, !noundef !3 %_65 = icmp uge i64 %_64, 1 %_66 = icmp ule i64 %_64, -9223372036854775808 %_67 = and i1 %_65, %_66 %self10 = load i64, ptr %new_layout, align 8, !range !9, !noundef !3 store i64 %self10, ptr %_69, align 8 %_70 = load i64, ptr %_69, align 8, !range !9, !noundef !3 %_71 = icmp uge i64 %_70, 1 %_72 = icmp ule i64 %_70, -9223372036854775808 %_73 = and i1 %_71, %_72 %_17 = icmp eq i64 %_64, %_70 br i1 %_17, label %bb4, label %bb5 bb11: ; preds = %bb1 store ptr %ptr8, ptr %_52, align 8 %11 = load ptr, ptr %_52, align 8, !noundef !3 store ptr %11, ptr %data, align 8 store ptr %ptr8, ptr %data5, align 8 store ptr %ptr8, ptr %data_pointer, align 8 store ptr %ptr8, ptr %_58, align 8 %12 = load ptr, ptr %_58, align 8, !noundef !3 store ptr %12, ptr %_57, align 8 %13 = getelementptr inbounds i8, ptr %_57, i64 8 store i64 0, ptr %13, align 8 %14 = load ptr, ptr %_57, align 8, !noundef !3 %15 = getelementptr inbounds i8, ptr %_57, i64 8 %16 = load i64, ptr %15, align 8, !noundef !3 store ptr %14, ptr %_56, align 8 %17 = getelementptr inbounds i8, ptr %_56, i64 8 store i64 %16, ptr %17, align 8 %18 = load ptr, ptr %_56, align 8, !noundef !3 %19 = getelementptr inbounds i8, ptr %_56, i64 8 %20 = load i64, ptr %19, align 8, !noundef !3 store ptr %18, ptr %ptr4, align 8 %21 = getelementptr inbounds i8, ptr %ptr4, i64 8 store i64 %20, ptr %21, align 8 br label %bb13 bb13: ; preds = %bb12, %bb11 %_61.0 = load ptr, ptr %ptr4, align 8, !noundef !3 %22 = getelementptr inbounds i8, ptr %ptr4, i64 8 %_61.1 = load i64, ptr %22, align 8, !noundef !3 store ptr %_61.0, ptr %_12, align 8 %23 = getelementptr inbounds i8, ptr %_12, i64 8 store i64 %_61.1, ptr %23, align 8 %24 = load ptr, ptr %_12, align 8, !nonnull !3, !noundef !3 %25 = getelementptr inbounds i8, ptr %_12, i64 8 %26 = load i64, ptr %25, align 8, !noundef !3 store ptr %24, ptr %_0, align 8 %27 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %26, ptr %27, align 8 br label %bb7 bb10: ; No predecessors! ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h21c8f7e2345c8932E"(ptr %ptr8) #18 store ptr %ptr8, ptr %_52, align 8 %28 = load ptr, ptr %_52, align 8, !noundef !3 store ptr %28, ptr %data, align 8 store ptr %ptr8, ptr %data5, align 8 store ptr %ptr8, ptr %data_pointer, align 8 store ptr %ptr8, ptr %_58, align 8 %29 = load ptr, ptr %_58, align 8, !noundef !3 store ptr %29, ptr %_57, align 8 %30 = getelementptr inbounds i8, ptr %_57, i64 8 store i64 0, ptr %30, align 8 %31 = load ptr, ptr %_57, align 8, !noundef !3 %32 = getelementptr inbounds i8, ptr %_57, i64 8 %33 = load i64, ptr %32, align 8, !noundef !3 store ptr %31, ptr %_56, align 8 %34 = getelementptr inbounds i8, ptr %_56, i64 8 store i64 %33, ptr %34, align 8 %35 = load ptr, ptr %_56, align 8, !noundef !3 %36 = getelementptr inbounds i8, ptr %_56, i64 8 %37 = load i64, ptr %36, align 8, !noundef !3 store ptr %35, ptr %ptr4, align 8 %38 = getelementptr inbounds i8, ptr %ptr4, i64 8 store i64 %37, ptr %38, align 8 br label %bb12 bb12: ; preds = %bb10 %_60 = load ptr, ptr %ptr4, align 8, !noundef !3 %39 = getelementptr inbounds i8, ptr %ptr4, i64 8 %40 = load i64, ptr %39, align 8, !noundef !3 ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h21c8f7e2345c8932E"(ptr %_60) #18 br label %bb13 bb7: ; preds = %bb23, %bb27, %bb13 br label %bb9 bb5: ; preds = %bb3 %new_size = load i64, ptr %_8, align 8, !noundef !3 %layout.0 = load i64, ptr %new_layout, align 8, !range !9, !noundef !3 %41 = getelementptr inbounds i8, ptr %new_layout, i64 8 %layout.1 = load i64, ptr %41, align 8, !noundef !3 ; call alloc::alloc::Global::alloc_impl %42 = call { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h292652c215e4535aE(ptr align 1 %self, i64 %layout.0, i64 %layout.1, i1 zeroext false) %43 = extractvalue { ptr, i64 } %42, 0 %44 = extractvalue { ptr, i64 } %42, 1 store ptr %43, ptr %self3, align 8 %45 = getelementptr inbounds i8, ptr %self3, i64 8 store i64 %44, ptr %45, align 8 %46 = load ptr, ptr %self3, align 8, !noundef !3 %47 = ptrtoint ptr %46 to i64 %48 = icmp eq i64 %47, 0 %_104 = select i1 %48, i64 1, i64 0 %49 = icmp eq i64 %_104, 0 br i1 %49, label %bb25, label %bb24 bb4: ; preds = %bb3 %new_size11 = load i64, ptr %_8, align 8, !noundef !3 %50 = getelementptr inbounds i8, ptr %old_layout, i64 8 %_23 = load i64, ptr %50, align 8, !noundef !3 %cond = icmp ule i64 %new_size11, %_23 br label %bb16 bb25: ; preds = %bb5 %v.0 = load ptr, ptr %self3, align 8, !nonnull !3, !noundef !3 %51 = getelementptr inbounds i8, ptr %self3, i64 8 %v.1 = load i64, ptr %51, align 8, !noundef !3 store ptr %v.0, ptr %_34, align 8 %52 = getelementptr inbounds i8, ptr %_34, i64 8 store i64 %v.1, ptr %52, align 8 %new_ptr.0 = load ptr, ptr %_34, align 8, !nonnull !3, !noundef !3 %53 = getelementptr inbounds i8, ptr %_34, i64 8 %new_ptr.1 = load i64, ptr %53, align 8, !noundef !3 store ptr %new_ptr.0, ptr %self6, align 8 br label %bb27 bb24: ; preds = %bb5 %54 = load ptr, ptr @0, align 8, !noundef !3 %55 = load i64, ptr getelementptr inbounds (i8, ptr @0, i64 8), align 8 store ptr %54, ptr %_0, align 8 %56 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %55, ptr %56, align 8 br label %bb8 bb27: ; preds = %bb26, %bb25 %57 = mul i64 %new_size, 1 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %new_ptr.0, ptr align 1 %ptr, i64 %57, i1 false) %_40.0 = load i64, ptr %old_layout, align 8, !range !9, !noundef !3 %58 = getelementptr inbounds i8, ptr %old_layout, i64 8 %_40.1 = load i64, ptr %58, align 8, !noundef !3 ; call ::deallocate call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h62d14ce2d9245f26E"(ptr align 1 %self, ptr %ptr, i64 %_40.0, i64 %_40.1) store ptr %new_ptr.0, ptr %_0, align 8 %59 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %new_ptr.1, ptr %59, align 8 br label %bb7 bb26: ; No predecessors! ; call core::intrinsics::copy_nonoverlapping::precondition_check call void @_ZN4core10intrinsics19copy_nonoverlapping18precondition_check17h1b1a839f79683a97E(ptr %ptr, ptr %new_ptr.0, i64 1, i64 1, i64 %new_size) #18 br label %bb27 bb8: ; preds = %bb18, %bb24 br label %bb9 bb28: ; No predecessors! unreachable bb16: ; preds = %bb15, %bb4 %60 = load i64, ptr %old_layout, align 8, !range !9, !noundef !3 %61 = getelementptr inbounds i8, ptr %old_layout, i64 8 %62 = load i64, ptr %61, align 8, !noundef !3 store i64 %60, ptr %layout, align 8 %63 = getelementptr inbounds i8, ptr %layout, i64 8 store i64 %62, ptr %63, align 8 %64 = getelementptr inbounds i8, ptr %layout, i64 8 %_77 = load i64, ptr %64, align 8, !noundef !3 %self12 = load i64, ptr %layout, align 8, !range !9, !noundef !3 store i64 %self12, ptr %_82, align 8 %_83 = load i64, ptr %_82, align 8, !range !9, !noundef !3 %_84 = icmp uge i64 %_83, 1 %_85 = icmp ule i64 %_83, -9223372036854775808 %_86 = and i1 %_84, %_85 %raw_ptr = call ptr @__rust_realloc(ptr %ptr, i64 %_77, i64 %_83, i64 %new_size11) #18 %_88 = ptrtoint ptr %raw_ptr to i64 %65 = icmp eq i64 %_88, 0 br i1 %65, label %bb18, label %bb19 bb15: ; No predecessors! ; call core::hint::assert_unchecked::precondition_check call void @_ZN4core4hint16assert_unchecked18precondition_check17h2ff0c3733cd6e185E(i1 zeroext %cond) #18 br label %bb16 bb18: ; preds = %bb16 store ptr null, ptr %self2, align 8 store ptr null, ptr %self1, align 8 %66 = load ptr, ptr @0, align 8, !noundef !3 %67 = load i64, ptr getelementptr inbounds (i8, ptr @0, i64 8), align 8 store ptr %66, ptr %_0, align 8 %68 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %67, ptr %68, align 8 br label %bb8 bb19: ; preds = %bb16 br label %bb21 bb9: ; preds = %bb7, %bb8 %69 = load ptr, ptr %_0, align 8, !noundef !3 %70 = getelementptr inbounds i8, ptr %_0, i64 8 %71 = load i64, ptr %70, align 8 %72 = insertvalue { ptr, i64 } poison, ptr %69, 0 %73 = insertvalue { ptr, i64 } %72, i64 %71, 1 ret { ptr, i64 } %73 bb21: ; preds = %bb20, %bb19 store ptr %raw_ptr, ptr %_87, align 8 %74 = load ptr, ptr %_87, align 8, !nonnull !3, !noundef !3 store ptr %74, ptr %self2, align 8 %v = load ptr, ptr %self2, align 8, !nonnull !3, !noundef !3 store ptr %v, ptr %self1, align 8 %v13 = load ptr, ptr %self1, align 8, !nonnull !3, !noundef !3 store ptr %v13, ptr %_28, align 8 %ptr14 = load ptr, ptr %_28, align 8, !nonnull !3, !noundef !3 store ptr %ptr14, ptr %_99, align 8 %75 = getelementptr inbounds i8, ptr %_99, i64 8 store i64 %new_size11, ptr %75, align 8 %76 = load ptr, ptr %_99, align 8, !noundef !3 %77 = getelementptr inbounds i8, ptr %_99, i64 8 %78 = load i64, ptr %77, align 8, !noundef !3 store ptr %76, ptr %_98, align 8 %79 = getelementptr inbounds i8, ptr %_98, i64 8 store i64 %78, ptr %79, align 8 %ptr.0 = load ptr, ptr %_98, align 8, !noundef !3 %80 = getelementptr inbounds i8, ptr %_98, i64 8 %ptr.1 = load i64, ptr %80, align 8, !noundef !3 br label %bb23 bb20: ; No predecessors! ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h21c8f7e2345c8932E"(ptr %raw_ptr) #18 br label %bb21 bb23: ; preds = %bb22, %bb21 store ptr %ptr.0, ptr %_32, align 8 %81 = getelementptr inbounds i8, ptr %_32, i64 8 store i64 %ptr.1, ptr %81, align 8 %82 = load ptr, ptr %_32, align 8, !nonnull !3, !noundef !3 %83 = getelementptr inbounds i8, ptr %_32, i64 8 %84 = load i64, ptr %83, align 8, !noundef !3 store ptr %82, ptr %_0, align 8 %85 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %84, ptr %85, align 8 br label %bb7 bb22: ; No predecessors! ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h21c8f7e2345c8932E"(ptr %ptr.0) #18 br label %bb23 } ; ::allocate ; Function Attrs: inlinehint nonlazybind uwtable define internal { ptr, i64 } @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$8allocate17hc29c19551377ac42E"(ptr align 1 %self, i64 %layout.0, i64 %layout.1) unnamed_addr #0 { start: ; call alloc::alloc::Global::alloc_impl %0 = call { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h292652c215e4535aE(ptr align 1 %self, i64 %layout.0, i64 %layout.1, i1 zeroext false) %_0.0 = extractvalue { ptr, i64 } %0, 0 %_0.1 = extractvalue { ptr, i64 } %0, 1 %1 = insertvalue { ptr, i64 } poison, ptr %_0.0, 0 %2 = insertvalue { ptr, i64 } %1, i64 %_0.1, 1 ret { ptr, i64 } %2 } ; as core::fmt::Debug>::fmt ; Function Attrs: inlinehint nonlazybind uwtable define zeroext i1 @"_ZN66_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..fmt..Debug$GT$3fmt17hc443aaa27aff5366E"(ptr align 8 %self, ptr align 8 %f) unnamed_addr #0 { start: %__self_0 = alloca ptr, align 8 %_0 = alloca i8, align 1 %_3 = load i64, ptr %self, align 8, !range !4, !noundef !3 %0 = icmp eq i64 %_3, 0 br i1 %0, label %bb3, label %bb2 bb3: ; preds = %start ; call core::fmt::Formatter::write_str %1 = call zeroext i1 @_ZN4core3fmt9Formatter9write_str17h3930cf4f7eb68faeE(ptr align 8 %f, ptr align 1 @alloc_37d2e53432a03a1f90b3e7253015eaf9, i64 4) %2 = zext i1 %1 to i8 store i8 %2, ptr %_0, align 1 br label %bb5 bb2: ; preds = %start %3 = getelementptr inbounds i8, ptr %self, i64 8 store ptr %3, ptr %__self_0, align 8 ; call core::fmt::Formatter::debug_tuple_field1_finish %4 = call zeroext i1 @_ZN4core3fmt9Formatter25debug_tuple_field1_finish17h1cf835dfb4af074fE(ptr align 8 %f, ptr align 1 @alloc_9535bf4c204f3eb9b19ec2c83e446e52, i64 4, ptr align 1 %__self_0, ptr align 8 @vtable.2) %5 = zext i1 %4 to i8 store i8 %5, ptr %_0, align 1 br label %bb5 bb5: ; preds = %bb2, %bb3 %6 = load i8, ptr %_0, align 1, !range !5, !noundef !3 %7 = trunc i8 %6 to i1 ret i1 %7 bb1: ; No predecessors! unreachable } ; as core::ops::drop::Drop>::drop ; Function Attrs: nonlazybind uwtable define void @"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h486d685ae0af460aE"(ptr align 8 %self) unnamed_addr #1 { start: %_10 = alloca %"core::ptr::metadata::PtrComponents<[Foo]>", align 8 %_9 = alloca %"core::ptr::metadata::PtrRepr<[Foo]>", align 8 %0 = getelementptr inbounds i8, ptr %self, i64 8 %self1 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 %1 = getelementptr inbounds i8, ptr %self, i64 16 %len = load i64, ptr %1, align 8, !noundef !3 store ptr %self1, ptr %_10, align 8 %2 = getelementptr inbounds i8, ptr %_10, i64 8 store i64 %len, ptr %2, align 8 %3 = load ptr, ptr %_10, align 8, !noundef !3 %4 = getelementptr inbounds i8, ptr %_10, i64 8 %5 = load i64, ptr %4, align 8, !noundef !3 store ptr %3, ptr %_9, align 8 %6 = getelementptr inbounds i8, ptr %_9, i64 8 store i64 %5, ptr %6, align 8 %_2.0 = load ptr, ptr %_9, align 8, !noundef !3 %7 = getelementptr inbounds i8, ptr %_9, i64 8 %_2.1 = load i64, ptr %7, align 8, !noundef !3 ret void } ; as core::ops::drop::Drop>::drop ; Function Attrs: nonlazybind uwtable define void @"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h356ee0139acf4d03E"(ptr align 8 %self) unnamed_addr #1 { start: %_2 = alloca %"core::option::Option<(core::ptr::non_null::NonNull, core::alloc::layout::Layout)>", align 8 ; call alloc::raw_vec::RawVec::current_memory call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2884d1dac932fca8E"(ptr sret(%"core::option::Option<(core::ptr::non_null::NonNull, core::alloc::layout::Layout)>") align 8 %_2, ptr align 8 %self) %0 = getelementptr inbounds i8, ptr %_2, i64 8 %1 = load i64, ptr %0, align 8, !range !10, !noundef !3 %2 = icmp eq i64 %1, 0 %_4 = select i1 %2, i64 0, i64 1 %3 = icmp eq i64 %_4, 1 br i1 %3, label %bb2, label %bb4 bb2: ; preds = %start %ptr = load ptr, ptr %_2, align 8, !nonnull !3, !noundef !3 %4 = getelementptr inbounds i8, ptr %_2, i64 8 %layout.0 = load i64, ptr %4, align 8, !range !9, !noundef !3 %5 = getelementptr inbounds i8, ptr %4, i64 8 %layout.1 = load i64, ptr %5, align 8, !noundef !3 %_7 = getelementptr i8, ptr %self, i64 16 ; call ::deallocate call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h62d14ce2d9245f26E"(ptr align 1 %_7, ptr %ptr, i64 %layout.0, i64 %layout.1) br label %bb4 bb4: ; preds = %bb2, %start ret void } ; as core::ops::drop::Drop>::drop ; Function Attrs: nonlazybind uwtable define void @"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hebf3da7734fbab18E"(ptr align 8 %self) unnamed_addr #1 { start: %_2 = alloca %"core::option::Option<(core::ptr::non_null::NonNull, core::alloc::layout::Layout)>", align 8 ; call alloc::raw_vec::RawVec::current_memory call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h73cff50e42fddf4dE"(ptr sret(%"core::option::Option<(core::ptr::non_null::NonNull, core::alloc::layout::Layout)>") align 8 %_2, ptr align 8 %self) %0 = getelementptr inbounds i8, ptr %_2, i64 8 %1 = load i64, ptr %0, align 8, !range !10, !noundef !3 %2 = icmp eq i64 %1, 0 %_4 = select i1 %2, i64 0, i64 1 %3 = icmp eq i64 %_4, 1 br i1 %3, label %bb2, label %bb4 bb2: ; preds = %start %ptr = load ptr, ptr %_2, align 8, !nonnull !3, !noundef !3 %4 = getelementptr inbounds i8, ptr %_2, i64 8 %layout.0 = load i64, ptr %4, align 8, !range !9, !noundef !3 %5 = getelementptr inbounds i8, ptr %4, i64 8 %layout.1 = load i64, ptr %5, align 8, !noundef !3 %_7 = getelementptr i8, ptr %self, i64 16 ; call ::deallocate call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h62d14ce2d9245f26E"(ptr align 1 %_7, ptr %ptr, i64 %layout.0, i64 %layout.1) br label %bb4 bb4: ; preds = %bb2, %start ret void } ; ::index_from_end_unchecked_inner ; Function Attrs: inlinehint nonlazybind uwtable define void @"_ZN79_$LT$I$u20$as$u20$core..iter..traits..unchecked_iterator..SpecIndexedAccess$GT$30index_from_end_unchecked_inner17h727d6efa915e51e5E"(ptr sret([4 x i64]) align 8 %_0, ptr align 8 %self, i64 %idx) unnamed_addr #0 { start: ; call as core::iter::traits::iterator::Iterator>::index_from_end_unchecked call void @"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$24index_from_end_unchecked17h43b8872b965e6d69E"(ptr sret([4 x i64]) align 8 %_0, ptr align 8 %self, i64 %idx) ret void } ; >::collect_in_place ; Function Attrs: inlinehint nonlazybind uwtable define i64 @"_ZN83_$LT$I$u20$as$u20$alloc..vec..in_place_collect..SpecInPlaceCollect$LT$T$C$I$GT$$GT$16collect_in_place17h56b8fd95ce366a3bE"(ptr align 8 %0, ptr %dst_buf, ptr %end) unnamed_addr #0 personality ptr @rust_eh_personality { start: %1 = alloca { ptr, i32, [1 x i32] }, align 8 %_21 = alloca i8, align 1 %val = alloca %Foo, align 8 %state = alloca %">::collect_in_place::LoopGuard<'_, core::iter::adapters::map::Map, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>>", align 8 %_5 = alloca { i64, %"core::option::Option" }, align 8 %_0 = alloca i64, align 8 %self = alloca ptr, align 8 store ptr %0, ptr %self, align 8 %_23 = load ptr, ptr %self, align 8, !nonnull !3, !align !6, !noundef !3 ; call as core::iter::traits::iterator::Iterator>::size_hint call void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h0fd19486d6554446E"(ptr sret({ i64, %"core::option::Option" }) align 8 %_5, ptr align 8 %_23) %len = load i64, ptr %_5, align 8, !noundef !3 %2 = icmp eq i64 %len, 0 br i1 %2, label %bb1, label %bb2 bb1: ; preds = %start store i64 0, ptr %_0, align 8 br label %bb10 bb2: ; preds = %start %_8 = load ptr, ptr %self, align 8, !nonnull !3, !align !6, !noundef !3 store i8 1, ptr %_21, align 1 store ptr %_8, ptr %state, align 8 %3 = getelementptr inbounds i8, ptr %state, i64 8 store i64 %len, ptr %3, align 8 %4 = getelementptr inbounds i8, ptr %state, i64 16 store i64 0, ptr %4, align 8 %5 = getelementptr inbounds i8, ptr %state, i64 24 store ptr %dst_buf, ptr %5, align 8 br label %bb3 bb10: ; preds = %bb9, %bb1 %6 = load i64, ptr %_0, align 8, !noundef !3 ret i64 %6 bb3: ; preds = %bb6, %bb2 %7 = getelementptr inbounds i8, ptr %state, i64 16 %idx = load i64, ptr %7, align 8, !noundef !3 %_10 = add nuw i64 %idx, 1 %8 = getelementptr inbounds i8, ptr %state, i64 16 store i64 %_10, ptr %8, align 8 %9 = getelementptr inbounds i8, ptr %state, i64 24 %self1 = load ptr, ptr %9, align 8, !noundef !3 %dst = getelementptr inbounds %Foo, ptr %self1, i64 %idx %_20 = load ptr, ptr %state, align 8, !nonnull !3, !align !6, !noundef !3 %_14 = sub i64 %len, %idx ; invoke as core::iter::traits::iterator::Iterator>::index_from_end_unchecked invoke void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$24index_from_end_unchecked17hfc88e8970d8e3af0E"(ptr sret(%Foo) align 8 %val, ptr align 8 %_20, i64 %_14) to label %bb4 unwind label %cleanup bb13: ; preds = %cleanup %10 = load i8, ptr %_21, align 1, !range !5, !noundef !3 %11 = trunc i8 %10 to i1 br i1 %11, label %bb12, label %bb11 cleanup: ; preds = %bb7, %bb3 %12 = landingpad { ptr, i32 } cleanup %13 = extractvalue { ptr, i32 } %12, 0 %14 = extractvalue { ptr, i32 } %12, 1 store ptr %13, ptr %1, align 8 %15 = getelementptr inbounds i8, ptr %1, i64 8 store i32 %14, ptr %15, align 8 br label %bb13 bb4: ; preds = %bb3 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %dst, ptr align 8 %val, i64 32, i1 false) %16 = getelementptr inbounds i8, ptr %state, i64 16 %_16 = load i64, ptr %16, align 8, !noundef !3 %_15 = icmp eq i64 %_16, %len br i1 %_15, label %bb5, label %bb6 bb6: ; preds = %bb4 br label %bb3 bb5: ; preds = %bb4 store i8 0, ptr %_21, align 1 %t = load ptr, ptr %state, align 8, !nonnull !3, !align !6, !noundef !3 %17 = getelementptr inbounds i8, ptr %state, i64 8 %t2 = load i64, ptr %17, align 8, !noundef !3 %18 = getelementptr inbounds i8, ptr %state, i64 16 %t3 = load i64, ptr %18, align 8, !noundef !3 %19 = getelementptr inbounds i8, ptr %state, i64 24 %t4 = load ptr, ptr %19, align 8, !noundef !3 br label %bb9 bb9: ; preds = %bb8, %bb5 store i64 %len, ptr %_0, align 8 br label %bb10 bb7: ; No predecessors! %_19 = load ptr, ptr %self, align 8, !nonnull !3, !align !6, !noundef !3 ; invoke as core::iter::traits::unchecked_iterator::UncheckedIndexedIterator>::set_front_index_from_end_unchecked invoke void @"_ZN128_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..unchecked_iterator..UncheckedIndexedIterator$GT$34set_front_index_from_end_unchecked17hb4f7509a317df289E"(ptr align 8 %_19, i64 0, i64 %len) to label %bb8 unwind label %cleanup bb8: ; preds = %bb7 br label %bb9 bb11: ; preds = %bb12, %bb13 %20 = load ptr, ptr %1, align 8, !noundef !3 %21 = getelementptr inbounds i8, ptr %1, i64 8 %22 = load i32, ptr %21, align 8, !noundef !3 %23 = insertvalue { ptr, i32 } poison, ptr %20, 0 %24 = insertvalue { ptr, i32 } %23, i32 %22, 1 resume { ptr, i32 } %24 bb12: ; preds = %bb13 ; invoke core::ptr::drop_in_place<>::collect_in_place::LoopGuard,vec_in_place2::vec_iterator_cast_aggregate::{{closure}}>>> invoke void @"_ZN4core3ptr315drop_in_place$LT$$LT$I$u20$as$u20$alloc..vec..in_place_collect..SpecInPlaceCollect$LT$T$C$I$GT$$GT$..collect_in_place..LoopGuard$LT$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$u5b$u64$u3b$$u20$4$u5d$$GT$$C$vec_in_place2..vec_iterator_cast_aggregate..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h17479c421d91325bE"(ptr align 8 %state) #20 to label %bb11 unwind label %terminate terminate: ; preds = %bb12 %25 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer %26 = extractvalue { ptr, i32 } %25, 0 %27 = extractvalue { ptr, i32 } %25, 1 ; call core::panicking::panic_in_cleanup call void @_ZN4core9panicking16panic_in_cleanup17hb44fd56a4133bb74E() #21 unreachable } ; ::drop ; Function Attrs: inlinehint nonlazybind uwtable define internal void @"_ZN83_$LT$alloc..vec..set_len_on_drop..SetLenOnDrop$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2e0e8c5544749d8bE"(ptr align 8 %self) unnamed_addr #0 { start: %0 = getelementptr inbounds i8, ptr %self, i64 8 %_2 = load i64, ptr %0, align 8, !noundef !3 %_3 = load ptr, ptr %self, align 8, !nonnull !3, !align !6, !noundef !3 store i64 %_2, ptr %_3, align 8 ret void } ; as core::ops::drop::Drop>::drop ; Function Attrs: nonlazybind uwtable define void @"_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h40ee06d6ccf9617eE"(ptr align 8 %self) unnamed_addr #1 personality ptr @rust_eh_personality { start: %0 = alloca { ptr, i32, [1 x i32] }, align 8 %guard = alloca ptr, align 8 store ptr %self, ptr %guard, align 8 %_5 = load ptr, ptr %guard, align 8, !nonnull !3, !align !6, !noundef !3 ; invoke alloc::vec::into_iter::IntoIter::as_raw_mut_slice %1 = invoke { ptr, i64 } @"_ZN5alloc3vec9into_iter21IntoIter$LT$T$C$A$GT$16as_raw_mut_slice17hd7a4439668dc6f16E"(ptr align 8 %_5) to label %bb1 unwind label %cleanup bb4: ; preds = %cleanup ; invoke core::ptr::drop_in_place< as core::ops::drop::Drop>::drop::DropGuard<[u64; 4],alloc::alloc::Global>> invoke void @"_ZN4core3ptr178drop_in_place$LT$$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$$u5b$u64$u3b$$u20$4$u5d$$C$alloc..alloc..Global$GT$$GT$17hd3842f868ba59ebaE"(ptr align 8 %guard) #20 to label %bb5 unwind label %terminate cleanup: ; preds = %start %2 = landingpad { ptr, i32 } cleanup %3 = extractvalue { ptr, i32 } %2, 0 %4 = extractvalue { ptr, i32 } %2, 1 store ptr %3, ptr %0, align 8 %5 = getelementptr inbounds i8, ptr %0, i64 8 store i32 %4, ptr %5, align 8 br label %bb4 bb1: ; preds = %start %_4.0 = extractvalue { ptr, i64 } %1, 0 %_4.1 = extractvalue { ptr, i64 } %1, 1 br label %bb2 bb2: ; preds = %bb1 ; call core::ptr::drop_in_place< as core::ops::drop::Drop>::drop::DropGuard<[u64; 4],alloc::alloc::Global>> call void @"_ZN4core3ptr178drop_in_place$LT$$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$$u5b$u64$u3b$$u20$4$u5d$$C$alloc..alloc..Global$GT$$GT$17hd3842f868ba59ebaE"(ptr align 8 %guard) ret void terminate: ; preds = %bb4 %6 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer %7 = extractvalue { ptr, i32 } %6, 0 %8 = extractvalue { ptr, i32 } %6, 1 ; call core::panicking::panic_in_cleanup call void @_ZN4core9panicking16panic_in_cleanup17hb44fd56a4133bb74E() #21 unreachable bb5: ; preds = %bb4 %9 = load ptr, ptr %0, align 8, !noundef !3 %10 = getelementptr inbounds i8, ptr %0, i64 8 %11 = load i32, ptr %10, align 8, !noundef !3 %12 = insertvalue { ptr, i32 } poison, ptr %9, 0 %13 = insertvalue { ptr, i32 } %12, i32 %11, 1 resume { ptr, i32 } %13 } ; as core::iter::traits::collect::IntoIterator>::into_iter ; Function Attrs: inlinehint nonlazybind uwtable define void @"_ZN90_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17he352ce3d58cff200E"(ptr sret(%"alloc::vec::into_iter::IntoIter<[u64; 4]>") align 8 %_0, ptr align 8 %self) unnamed_addr #0 { start: %0 = alloca ptr, align 8 %_37 = alloca %"core::ptr::metadata::PtrComponents<[u64; 4]>", align 8 %_36 = alloca %"core::ptr::metadata::PtrRepr<[u64; 4]>", align 8 %cap = alloca i64, align 8 %end = alloca ptr, align 8 %me = alloca %"core::mem::manually_drop::ManuallyDrop>", align 8 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %me, ptr align 8 %self, i64 24, i1 false) %src = getelementptr i8, ptr %me, i64 16 %1 = getelementptr inbounds i8, ptr %me, i64 8 %buf = load ptr, ptr %1, align 8, !nonnull !3, !noundef !3 br label %bb2 bb2: ; preds = %start %2 = getelementptr inbounds i8, ptr %me, i64 16 %count = load i64, ptr %2, align 8, !noundef !3 %_19 = getelementptr inbounds [4 x i64], ptr %buf, i64 %count store ptr %_19, ptr %end, align 8 br label %bb3 bb3: ; preds = %bb1, %bb2 br label %bb6 bb1: ; No predecessors! %3 = getelementptr inbounds i8, ptr %me, i64 16 %count1 = load i64, ptr %3, align 8, !noundef !3 %4 = getelementptr i8, ptr %buf, i64 %count1 store ptr %4, ptr %0, align 8 %_33 = load ptr, ptr %0, align 8, !noundef !3 store ptr %_33, ptr %_37, align 8 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_36, ptr align 8 %_37, i64 8, i1 false) %_14 = load ptr, ptr %_36, align 8, !noundef !3 store ptr %_14, ptr %end, align 8 br label %bb3 bb6: ; preds = %bb3 %5 = load i64, ptr %me, align 8, !noundef !3 store i64 %5, ptr %cap, align 8 br label %bb7 bb7: ; preds = %bb5, %bb6 %_26 = load i64, ptr %cap, align 8, !noundef !3 %_27 = load ptr, ptr %end, align 8, !noundef !3 store ptr %buf, ptr %_0, align 8 %6 = getelementptr inbounds i8, ptr %_0, i64 16 store i64 %_26, ptr %6, align 8 %7 = getelementptr inbounds i8, ptr %_0, i64 8 store ptr %buf, ptr %7, align 8 %8 = getelementptr inbounds i8, ptr %_0, i64 24 store ptr %_27, ptr %8, align 8 ret void bb5: ; No predecessors! store i64 -1, ptr %cap, align 8 br label %bb7 } ; as core::iter::traits::collect::FromIterator>::from_iter ; Function Attrs: inlinehint nonlazybind uwtable define void @"_ZN95_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$core..iter..traits..collect..FromIterator$LT$T$GT$$GT$9from_iter17h512159278f3cfbe5E"(ptr sret(%"alloc::vec::Vec") align 8 %_0, ptr align 8 %iter) unnamed_addr #0 { start: %_2 = alloca %"core::iter::adapters::map::Map, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>", align 8 ; call ::into_iter call void @"_ZN63_$LT$I$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17hc6146173c647b980E"(ptr sret(%"core::iter::adapters::map::Map, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>") align 8 %_2, ptr align 8 %iter) ; call alloc::vec::in_place_collect:: for alloc::vec::Vec>::from_iter call void @"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9from_iter17h3c7c786b418efdf9E"(ptr sret(%"alloc::vec::Vec") align 8 %_0, ptr align 8 %_2) ret void } ; as core::iter::adapters::SourceIter>::as_inner ; Function Attrs: inlinehint nonlazybind uwtable define align 8 ptr @"_ZN96_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..adapters..SourceIter$GT$8as_inner17h1ee1d6a421c5f6d2E"(ptr align 8 %self) unnamed_addr #0 { start: ; call as core::iter::adapters::SourceIter>::as_inner %_0 = call align 8 ptr @"_ZN97_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..adapters..SourceIter$GT$8as_inner17hd37462ec9e241014E"(ptr align 8 %self) ret ptr %_0 } ; as alloc::vec::spec_extend::SpecExtend>::spec_extend ; Function Attrs: nonlazybind uwtable define void @"_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$T$C$I$GT$$GT$11spec_extend17hf78b34d7ace68196E"(ptr align 8 %self, ptr align 8 %iterator) unnamed_addr #1 { start: ; call alloc::vec::Vec::extend_trusted call void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17h60622799cda94542E"(ptr align 8 %self, ptr align 8 %iterator) ret void } ; as core::iter::adapters::SourceIter>::as_inner ; Function Attrs: inlinehint nonlazybind uwtable define align 8 ptr @"_ZN97_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..adapters..SourceIter$GT$8as_inner17hd37462ec9e241014E"(ptr align 8 %self) unnamed_addr #0 { start: ret ptr %self } ; Function Attrs: nonlazybind uwtable define void @vec_iterator_cast_aggregate(ptr sret(%"alloc::vec::Vec") align 8 %_0, ptr align 8 %vec) unnamed_addr #1 { start: %_3 = alloca %"alloc::vec::into_iter::IntoIter<[u64; 4]>", align 8 %_2 = alloca %"core::iter::adapters::map::Map, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>", align 8 ; call as core::iter::traits::collect::IntoIterator>::into_iter call void @"_ZN90_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17he352ce3d58cff200E"(ptr sret(%"alloc::vec::into_iter::IntoIter<[u64; 4]>") align 8 %_3, ptr align 8 %vec) ; call core::iter::traits::iterator::Iterator::map call void @_ZN4core4iter6traits8iterator8Iterator3map17h06debcae554deceaE(ptr sret(%"core::iter::adapters::map::Map, {closure@/home/the8472/workspace/rust/tests/codegen/vec-in-place2.rs:21:25: 21:28}>") align 8 %_2, ptr align 8 %_3) ; call core::iter::traits::iterator::Iterator::collect call void @_ZN4core4iter6traits8iterator8Iterator7collect17h0e504f43a548eaceE(ptr sret(%"alloc::vec::Vec") align 8 %_0, ptr align 8 %_2) ret void } ; vec_in_place2::vec_iterator_cast_aggregate::{{closure}} ; Function Attrs: inlinehint nonlazybind uwtable define internal void @"_ZN13vec_in_place227vec_iterator_cast_aggregate28_$u7b$$u7b$closure$u7d$$u7d$17h49196cbc0edbd238E"(ptr sret(%Foo) align 8 %_0, ptr align 1 %_1, ptr align 8 %e) unnamed_addr #0 { start: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_0, ptr align 8 %e, i64 32, i1 false) ret void } ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite) declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #7 ; Function Attrs: nonlazybind uwtable declare i32 @rust_eh_personality(i32, i32, i64, ptr, ptr) unnamed_addr #1 ; core::panicking::panic_in_cleanup ; Function Attrs: cold noinline noreturn nounwind nonlazybind uwtable declare void @_ZN4core9panicking16panic_in_cleanup17hb44fd56a4133bb74E() unnamed_addr #8 ; core::panicking::panic_fmt ; Function Attrs: cold noinline noreturn nonlazybind uwtable declare void @_ZN4core9panicking9panic_fmt17hf5ccdde0d2de76d8E(ptr align 8, ptr align 8) unnamed_addr #4 ; core::panicking::panic_cannot_unwind ; Function Attrs: cold noinline noreturn nounwind nonlazybind uwtable declare void @_ZN4core9panicking19panic_cannot_unwind17h242e4893dd20b38dE() unnamed_addr #8 ; core::panicking::panic_nounwind ; Function Attrs: cold noinline noreturn nounwind nonlazybind uwtable declare void @_ZN4core9panicking14panic_nounwind17hb0185ea8bd09ec4aE(ptr align 1, i64) unnamed_addr #8 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #9 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none) declare i1 @llvm.expect.i1(i1, i1) #10 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.ctpop.i64(i64) #9 ; core::fmt::num::imp::::fmt ; Function Attrs: nonlazybind uwtable declare zeroext i1 @"_ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h66b0bcd87e086639E"(ptr align 8, ptr align 8) unnamed_addr #1 ; core::fmt::num::::fmt ; Function Attrs: nonlazybind uwtable declare zeroext i1 @"_ZN4core3fmt3num55_$LT$impl$u20$core..fmt..UpperHex$u20$for$u20$usize$GT$3fmt17h172fd4b3da5ae80cE"(ptr align 8, ptr align 8) unnamed_addr #1 ; core::fmt::num::::fmt ; Function Attrs: nonlazybind uwtable declare zeroext i1 @"_ZN4core3fmt3num55_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$usize$GT$3fmt17h1913b21aac0d547dE"(ptr align 8, ptr align 8) unnamed_addr #1 ; core::panicking::panic ; Function Attrs: cold noinline noreturn nonlazybind uwtable declare void @_ZN4core9panicking5panic17hda1a45a0f4216ff2E(ptr align 1, i64, ptr align 8) unnamed_addr #4 ; core::panicking::assert_failed_inner ; Function Attrs: cold noinline noreturn nonlazybind uwtable declare void @_ZN4core9panicking19assert_failed_inner17hc70ba3784903f34dE(i8, ptr align 1, ptr align 8, ptr align 1, ptr align 8, ptr align 8, ptr align 8) unnamed_addr #4 ; alloc::alloc::handle_alloc_error ; Function Attrs: cold noreturn nonlazybind uwtable declare void @_ZN5alloc5alloc18handle_alloc_error17h6b3004e98c688004E(i64, i64) unnamed_addr #11 ; Function Attrs: nounwind nonlazybind allockind("alloc,uninitialized,aligned") allocsize(0) uwtable declare noalias ptr @__rust_alloc(i64, i64 allocalign) unnamed_addr #12 ; Function Attrs: nounwind nonlazybind allockind("alloc,zeroed,aligned") allocsize(0) uwtable declare noalias ptr @__rust_alloc_zeroed(i64, i64 allocalign) unnamed_addr #13 ; Function Attrs: nounwind nonlazybind allockind("realloc,aligned") allocsize(3) uwtable declare noalias ptr @__rust_realloc(ptr allocptr, i64, i64 allocalign, i64) unnamed_addr #14 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #15 ; alloc::raw_vec::capacity_overflow ; Function Attrs: noinline noreturn nonlazybind uwtable declare void @_ZN5alloc7raw_vec17capacity_overflow17h82d021ba93491920E() unnamed_addr #16 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare { i64, i1 } @llvm.uadd.with.overflow.i64(i64, i64) #9 ; Function Attrs: nounwind nonlazybind allockind("free") uwtable declare void @__rust_dealloc(ptr allocptr, i64, i64) unnamed_addr #17 ; core::fmt::Formatter::write_str ; Function Attrs: nonlazybind uwtable declare zeroext i1 @_ZN4core3fmt9Formatter9write_str17h3930cf4f7eb68faeE(ptr align 8, ptr align 1, i64) unnamed_addr #1 ; core::fmt::Formatter::debug_tuple_field1_finish ; Function Attrs: nonlazybind uwtable declare zeroext i1 @_ZN4core3fmt9Formatter25debug_tuple_field1_finish17h1cf835dfb4af074fE(ptr align 8, ptr align 1, i64, ptr align 1, ptr align 8) unnamed_addr #1 attributes #0 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { inlinehint nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { cold noinline noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #5 = { noinline nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #8 = { cold noinline noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #9 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #10 = { nocallback nofree nosync nounwind willreturn memory(none) } attributes #11 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #12 = { nounwind nonlazybind allockind("alloc,uninitialized,aligned") allocsize(0) uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #13 = { nounwind nonlazybind allockind("alloc,zeroed,aligned") allocsize(0) uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #14 = { nounwind nonlazybind allockind("realloc,aligned") allocsize(3) uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #15 = { nocallback nofree nounwind willreturn memory(argmem: write) } attributes #16 = { noinline noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #17 = { nounwind nonlazybind allockind("free") uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #18 = { nounwind } attributes #19 = { noreturn } attributes #20 = { cold } attributes #21 = { cold noreturn nounwind } attributes #22 = { noreturn nounwind } !llvm.module.flags = !{!0, !1} !llvm.ident = !{!2} !0 = !{i32 8, !"PIC Level", i32 2} !1 = !{i32 2, !"RtLibUseGOT", i32 1} !2 = !{!"rustc version 1.78.0-dev"} !3 = !{} !4 = !{i64 0, i64 2} !5 = !{i8 0, i8 2} !6 = !{i64 8} !7 = !{i64 0, i64 -9223372036854775808} !8 = !{i8 -1, i8 2} !9 = !{i64 1, i64 -9223372036854775807} !10 = !{i64 0, i64 -9223372036854775807} !11 = !{i64 0, i64 -9223372036854775806}