Thanks for using Compiler Explorer
Sponsors
Jakt
C++
Ada
Algol68
Analysis
Android Java
Android Kotlin
Assembly
C
C3
Carbon
C with Coccinelle
C++ with Coccinelle
C++ (Circle)
CIRCT
Clean
CMake
CMakeScript
COBOL
C++ for OpenCL
MLIR
Cppx
Cppx-Blue
Cppx-Gold
Cpp2-cppfront
Crystal
C#
CUDA C++
D
Dart
Elixir
Erlang
Fortran
F#
GLSL
Go
Haskell
HLSL
Hook
Hylo
IL
ispc
Java
Julia
Kotlin
LLVM IR
LLVM MIR
Modula-2
Mojo
Nim
Numba
Nix
Objective-C
Objective-C++
OCaml
Odin
OpenCL C
Pascal
Pony
PTX
Python
Racket
Raku
Ruby
Rust
Sail
Snowball
Scala
Slang
Solidity
Spice
SPIR-V
Swift
LLVM TableGen
Toit
Triton
TypeScript Native
V
Vala
Visual Basic
Vyper
WASM
Zig
Javascript
GIMPLE
Ygen
sway
llvm source #1
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
clang (assertions trunk)
clang (trunk)
clang 10.0.0
clang 10.0.1
clang 11.0.0
clang 11.0.1
clang 12.0.0
clang 12.0.1
clang 13.0.0
clang 14.0.0
clang 15.0.0
clang 16.0.0
clang 17.0.1
clang 18.1.0
clang 19.1.0
clang 20.1.0
clang 4.0.1
clang 5.0.0
clang 6.0.0
clang 7.0.0
clang 8.0.0
clang 9.0.0
hexagon-clang 16.0.5
llc (assertions trunk)
llc (trunk)
llc 10.0.0
llc 10.0.1
llc 11.0.0
llc 11.0.1
llc 12.0.0
llc 12.0.1
llc 13.0.0
llc 14.0.0
llc 15.0.0
llc 16.0.0
llc 17.0.1
llc 18.1.0
llc 19.1.0
llc 20.1.0
llc 3.2
llc 3.3
llc 3.9.1
llc 4.0.0
llc 4.0.1
llc 5.0.0
llc 6.0.0
llc 7.0.0
llc 8.0.0
llc 9.0.0
opt (assertions trunk)
opt (trunk)
opt 10.0.0
opt 10.0.1
opt 11.0.0
opt 11.0.1
opt 12.0.0
opt 12.0.1
opt 13.0.0
opt 14.0.0
opt 15.0.0
opt 16.0.0
opt 17.0.1
opt 18.1.0
opt 19.1.0
opt 20.1.0
opt 3.2
opt 3.3
opt 3.9.1
opt 4.0.0
opt 4.0.1
opt 5.0.0
opt 6.0.0
opt 7.0.0
opt 8.0.0
opt 9.0.0
Options
Source code
; ModuleID = 'example.12330c6e08a78a31-cgu.0' source_filename = "example.12330c6e08a78a31-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" %"core::ptr::metadata::PtrComponents<[core::mem::maybe_uninit::MaybeUninit<u16>]>" = type { ptr, i64 } %"core::ptr::metadata::PtrRepr<[core::mem::maybe_uninit::MaybeUninit<u16>]>" = type { [2 x i64] } %"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::mem::manually_drop::ManuallyDrop<[core::mem::maybe_uninit::MaybeUninit<u16>; 8]>" = type { [8 x i16] } %"core::mem::maybe_uninit::MaybeUninit<[core::mem::maybe_uninit::MaybeUninit<u16>; 8]>" = type { [8 x i16] } %"core::ops::control_flow::ControlFlow<core::ops::try_trait::NeverShortCircuitResidual>::Continue" = type { {} } %"core::array::Guard<'_, u16>" = type { { ptr, i64 }, i64 } %"{closure@core::array::try_from_trusted_iterator::next<core::ops::try_trait::NeverShortCircuit<u16>, core::iter::adapters::map::Map<core::array::drain::Drain<'_, u16>, {closure@core::ops::try_trait::NeverShortCircuit<u16>::wrap_mut_1<u16, {closure@/app/example.rs:18:28: 18:33}>::{closure#0}}>>::{closure#0}}" = type { %"core::iter::adapters::map::Map<core::array::drain::Drain<'_, u16>, {closure@core::ops::try_trait::NeverShortCircuit<u16>::wrap_mut_1<u16, {closure@/app/example.rs:18:28: 18:33}>::{closure#0}}>" } %"core::iter::adapters::map::Map<core::array::drain::Drain<'_, u16>, {closure@core::ops::try_trait::NeverShortCircuit<u16>::wrap_mut_1<u16, {closure@/app/example.rs:18:28: 18:33}>::{closure#0}}>" = type { %"core::array::drain::Drain<'_, u16>", %"{closure@core::ops::try_trait::NeverShortCircuit<u16>::wrap_mut_1<u16, {closure@/app/example.rs:18:28: 18:33}>::{closure#0}}" } %"core::array::drain::Drain<'_, u16>" = type { %"core::slice::iter::IterMut<'_, u16>" } %"core::slice::iter::IterMut<'_, u16>" = type { ptr, ptr, %"core::marker::PhantomData<&mut u16>" } %"core::marker::PhantomData<&mut u16>" = type {} %"{closure@core::ops::try_trait::NeverShortCircuit<u16>::wrap_mut_1<u16, {closure@/app/example.rs:18:28: 18:33}>::{closure#0}}" = type { %"{closure@/app/example.rs:18:28: 18:33}" } %"{closure@/app/example.rs:18:28: 18:33}" = type {} %"core::option::Option<usize>" = type { i64, [1 x i64] } %"core::ptr::non_null::NonNull<[u16]>" = type { { ptr, i64 } } %"core::mem::manually_drop::ManuallyDrop<[u16; 8]>" = type { [8 x i16] } %"core::ptr::metadata::PtrComponents<[u16]>" = type { ptr, i64 } %"core::ptr::metadata::PtrRepr<[u16]>" = type { [2 x i64] } %"core::ops::range::Range<usize>" = type { i64, i64 } %"core::ops::try_trait::NeverShortCircuit<[u16; 8]>" = type { [8 x i16] } @alloc_e4c0784e4975da2173a354afd99193ad = private unnamed_addr constant <{ [101 x i8] }> <{ [101 x i8] c"unsafe precondition(s) violated: slice::get_unchecked_mut requires that the range is within the slice" }>, 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_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_2e067a5abaeab1ee6041dfa0d7860d3c = private unnamed_addr constant <{ [81 x i8] }> <{ [81 x i8] c"/rustc/efd9d2df12b5e17fac0b4d0fb89f612ecd79f259/library/core/src/ptr/const_ptr.rs" }>, align 1 @alloc_9026530c428e0124751c0dab347ebdf4 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @alloc_2e067a5abaeab1ee6041dfa0d7860d3c, [16 x i8] c"Q\00\00\00\00\00\00\00b\06\00\00\0D\00\00\00" }>, align 8 @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_28a2d80bab2e9e5903a53b521ce46ce9 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @alloc_2e067a5abaeab1ee6041dfa0d7860d3c, [16 x i8] c"Q\00\00\00\00\00\00\00H\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_83d39f8d46f6e989bad9ef26045950d9 = private unnamed_addr constant <{ [41 x i8] }> <{ [41 x i8] c"assertion failed: iter.size_hint().0 >= N" }>, align 1 @alloc_7eab19cec00821d7ee0bff437c2379f1 = private unnamed_addr constant <{ [77 x i8] }> <{ [77 x i8] c"/rustc/efd9d2df12b5e17fac0b4d0fb89f612ecd79f259/library/core/src/array/mod.rs" }>, align 1 @alloc_d48e408034c5781876be80e060782f57 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @alloc_7eab19cec00821d7ee0bff437c2379f1, [16 x i8] c"M\00\00\00\00\00\00\00\0E\03\00\00\05\00\00\00" }>, align 8 @alloc_aa44101450e90c001a3b3f1f0d84d7f1 = private unnamed_addr constant <{ [78 x i8] }> <{ [78 x i8] c"/rustc/efd9d2df12b5e17fac0b4d0fb89f612ecd79f259/library/core/src/intrinsics.rs" }>, align 1 @alloc_f69883c4809950577c27dc26fd224972 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @alloc_aa44101450e90c001a3b3f1f0d84d7f1, [16 x i8] c"N\00\00\00\00\00\00\00\0A\0B\00\006\00\00\00" }>, align 8 @str.0 = internal unnamed_addr constant [25 x i8] c"attempt to divide by zero" @alloc_d685bb4d9a1abf4f5af46d1af0d9ef8a = private unnamed_addr constant <{ [166 x i8] }> <{ [166 x i8] c"unsafe precondition(s) violated: slice::from_raw_parts_mut requires the pointer to be aligned and non-null, and the total size of the slice not to exceed `isize::MAX`" }>, align 1 @alloc_e96fb6e25c55edb0aec8b24d111f5d7f = private unnamed_addr constant <{ [101 x i8] }> <{ [101 x i8] c"unsafe precondition(s) violated: slice::get_unchecked_mut requires that the index is within the slice" }>, align 1 ; <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::size_hint ; Function Attrs: inlinehint nonlazybind uwtable define internal void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h0c346c96d8b7b9b7E"(ptr noalias nocapture noundef sret([24 x i8]) align 8 dereferenceable(24) %_0, ptr noalias noundef readonly align 8 dereferenceable(16) %self) unnamed_addr #0 { start: ; call <core::array::drain::Drain<T> as core::iter::traits::iterator::Iterator>::size_hint call void @"_ZN93_$LT$core..array..drain..Drain$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h1aa22b616a349ee4E"(ptr noalias nocapture noundef sret([24 x i8]) align 8 dereferenceable(24) %_0, ptr noalias noundef readonly align 8 dereferenceable(16) %self) ret void } ; <core::ops::try_trait::NeverShortCircuit<T> as core::ops::try_trait::FromResidual>::from_residual ; Function Attrs: inlinehint nonlazybind uwtable define internal void @"_ZN103_$LT$core..ops..try_trait..NeverShortCircuit$LT$T$GT$$u20$as$u20$core..ops..try_trait..FromResidual$GT$13from_residual17h2e13cf4e26ca11bcE"(ptr noalias nocapture noundef sret([16 x i8]) align 2 dereferenceable(16) %_0) unnamed_addr #0 { start: unreachable } ; <core::array::drain::Drain<T> as core::iter::traits::exact_size::ExactSizeIterator>::len ; Function Attrs: inlinehint nonlazybind uwtable define internal noundef i64 @"_ZN104_$LT$core..array..drain..Drain$LT$T$GT$$u20$as$u20$core..iter..traits..exact_size..ExactSizeIterator$GT$3len17h9f8ecd0761aeb69dE"(ptr noalias noundef readonly align 8 dereferenceable(16) %self) unnamed_addr #0 { start: %_0 = alloca i64, align 8 br label %bb2 bb2: ; preds = %start %self1 = getelementptr inbounds i8, ptr %self, i64 8 %end = load ptr, ptr %self1, align 8, !nonnull !3, !noundef !3 %subtracted = load ptr, ptr %self, align 8, !nonnull !3, !noundef !3 ; call core::ptr::const_ptr::<impl *const T>::sub_ptr %0 = call noundef i64 @"_ZN4core3ptr9const_ptr33_$LT$impl$u20$$BP$const$u20$T$GT$7sub_ptr17h105aae44360756fdE"(ptr noundef %end, ptr noundef %subtracted) store i64 %0, ptr %_0, align 8 br label %bb3 bb3: ; preds = %bb2 %1 = load i64, ptr %_0, align 8, !noundef !3 ret i64 %1 bb1: ; No predecessors! unreachable } ; <core::ops::range::Range<usize> as core::slice::index::SliceIndex<[T]>>::get_unchecked_mut ; Function Attrs: inlinehint nonlazybind uwtable define internal { ptr, i64 } @"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$17get_unchecked_mut17h3ecdffc95c0243efE"(i64 noundef %self.0, i64 noundef %self.1, ptr noundef %slice.0, i64 noundef %slice.1) unnamed_addr #0 { start: %_17 = alloca %"core::ptr::metadata::PtrComponents<[core::mem::maybe_uninit::MaybeUninit<u16>]>", align 8 %_16 = alloca %"core::ptr::metadata::PtrRepr<[core::mem::maybe_uninit::MaybeUninit<u16>]>", align 8 %_14 = alloca %"core::ptr::metadata::PtrRepr<[core::mem::maybe_uninit::MaybeUninit<u16>]>", align 8 br label %bb3 bb3: ; preds = %start %new_len = sub nuw i64 %self.1, %self.0 %data = getelementptr inbounds i16, ptr %slice.0, i64 %self.0 call void @llvm.lifetime.start.p0(i64 16, ptr %_16) call void @llvm.lifetime.start.p0(i64 16, ptr %_17) store ptr %data, ptr %_17, align 8 %0 = getelementptr inbounds i8, ptr %_17, i64 8 store i64 %new_len, ptr %0, align 8 %1 = load ptr, ptr %_17, align 8, !noundef !3 %2 = getelementptr inbounds i8, ptr %_17, i64 8 %3 = load i64, ptr %2, align 8, !noundef !3 store ptr %1, ptr %_16, align 8 %4 = getelementptr inbounds i8, ptr %_16, i64 8 store i64 %3, ptr %4, align 8 call void @llvm.lifetime.end.p0(i64 16, ptr %_17) %_0.0 = load ptr, ptr %_16, align 8, !noundef !3 %5 = getelementptr inbounds i8, ptr %_16, i64 8 %_0.1 = load i64, ptr %5, align 8, !noundef !3 call void @llvm.lifetime.end.p0(i64 16, ptr %_16) %6 = insertvalue { ptr, i64 } poison, ptr %_0.0, 0 %7 = insertvalue { ptr, i64 } %6, i64 %_0.1, 1 ret { ptr, i64 } %7 bb1: ; No predecessors! unreachable bb2: ; No predecessors! unreachable } ; <core::ops::range::Range<usize> as core::slice::index::SliceIndex<[T]>>::get_unchecked_mut::precondition_check ; Function Attrs: inlinehint nounwind nonlazybind uwtable define internal void @"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$17get_unchecked_mut18precondition_check17h525e9cef21481124E"(i64 noundef %start1, i64 noundef %end, i64 noundef %len) unnamed_addr #1 { start: %_4 = icmp uge i64 %end, %start1 br i1 %_4, label %bb1, label %bb3 bb3: ; preds = %bb1, %start ; call core::panicking::panic_nounwind call void @_ZN4core9panicking14panic_nounwind17h4a808e37c3ed7c53E(ptr noalias noundef nonnull readonly align 1 @alloc_e4c0784e4975da2173a354afd99193ad, i64 noundef 101) #10 unreachable bb1: ; preds = %start %_5 = icmp ule i64 %end, %len br i1 %_5, label %bb2, label %bb3 bb2: ; preds = %bb1 ret void } ; <core::array::drain::Drain<T> as core::iter::traits::unchecked_iterator::UncheckedIterator>::next_unchecked ; Function Attrs: nonlazybind uwtable define internal noundef i16 @"_ZN112_$LT$core..array..drain..Drain$LT$T$GT$$u20$as$u20$core..iter..traits..unchecked_iterator..UncheckedIterator$GT$14next_unchecked17h1a2b5a1c34627795E"(ptr noalias noundef align 8 dereferenceable(16) %self) unnamed_addr #2 { start: ; call <core::slice::iter::IterMut<T> as core::iter::traits::unchecked_iterator::UncheckedIterator>::next_unchecked %p = call noundef align 2 dereferenceable(2) ptr @"_ZN113_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..unchecked_iterator..UncheckedIterator$GT$14next_unchecked17h7e528d56fadb8a27E"(ptr noalias noundef align 8 dereferenceable(16) %self) %_0 = load i16, ptr %p, align 2, !noundef !3 ret i16 %_0 } ; <core::slice::iter::IterMut<T> as core::iter::traits::unchecked_iterator::UncheckedIterator>::next_unchecked ; Function Attrs: nonlazybind uwtable define internal noundef align 2 dereferenceable(2) ptr @"_ZN113_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..unchecked_iterator..UncheckedIterator$GT$14next_unchecked17h7e528d56fadb8a27E"(ptr noalias noundef align 8 dereferenceable(16) %self) unnamed_addr #2 { start: %_11 = alloca ptr, align 8 %old = alloca ptr, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr %old) %0 = load ptr, ptr %self, align 8, !nonnull !3, !noundef !3 store ptr %0, ptr %old, align 8 br label %bb2 bb2: ; preds = %start %self1 = getelementptr inbounds i8, ptr %self, i64 8 call void @llvm.lifetime.start.p0(i64 8, ptr %_11) %self2 = load ptr, ptr %self, align 8, !nonnull !3, !noundef !3 %_13 = getelementptr inbounds i16, ptr %self2, i64 1 store ptr %_13, ptr %_11, align 8 %1 = load ptr, ptr %_11, align 8, !nonnull !3, !noundef !3 store ptr %1, ptr %self, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr %_11) br label %bb3 bb3: ; preds = %bb2 %self3 = load ptr, ptr %old, align 8, !nonnull !3, !noundef !3 call void @llvm.lifetime.end.p0(i64 8, ptr %old) ret ptr %self3 bb1: ; No predecessors! unreachable } ; <core::iter::adapters::map::Map<I,F> as core::iter::traits::unchecked_iterator::UncheckedIterator>::next_unchecked ; Function Attrs: nonlazybind uwtable define internal noundef i16 @"_ZN121_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..unchecked_iterator..UncheckedIterator$GT$14next_unchecked17h2f3bfe8aa8ecce1bE"(ptr noalias noundef align 8 dereferenceable(16) %self) unnamed_addr #2 { start: %_5 = alloca i16, align 2 ; call <core::array::drain::Drain<T> as core::iter::traits::unchecked_iterator::UncheckedIterator>::next_unchecked %item = call noundef i16 @"_ZN112_$LT$core..array..drain..Drain$LT$T$GT$$u20$as$u20$core..iter..traits..unchecked_iterator..UncheckedIterator$GT$14next_unchecked17h1a2b5a1c34627795E"(ptr noalias noundef align 8 dereferenceable(16) %self) %_4 = getelementptr inbounds i8, ptr %self, i64 16 call void @llvm.lifetime.start.p0(i64 2, ptr %_5) store i16 %item, ptr %_5, align 2 %0 = load i16, ptr %_5, align 2, !noundef !3 ; call core::ops::try_trait::NeverShortCircuit<T>::wrap_mut_1::{{closure}} %_0 = call noundef i16 @"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_128_$u7b$$u7b$closure$u7d$$u7d$17hfaef573cab920bb7E"(ptr noalias noundef nonnull align 1 %_4, i16 noundef %0) call void @llvm.lifetime.end.p0(i64 2, ptr %_5) ret i16 %_0 } ; core::intrinsics::is_aligned_and_not_null ; Function Attrs: inlinehint nonlazybind uwtable define internal noundef zeroext i1 @_ZN4core10intrinsics23is_aligned_and_not_null17h373e7e13f232aac0E(ptr noundef %ptr, i64 noundef %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 call void @llvm.lifetime.start.p0(i64 8, ptr %0) %2 = call i64 @llvm.ctpop.i64(i64 %align) store i64 %2, ptr %0, align 8 %_9 = load i64, ptr %0, align 8, !noundef !3 call void @llvm.lifetime.end.p0(i64 8, ptr %0) %_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 !4, !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 call void @llvm.lifetime.start.p0(i64 48, ptr %_6) 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 !5, !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_fmt17h18a3c8b0a37e1072E(ptr noalias nocapture noundef readonly align 8 dereferenceable(48) %_6, ptr noalias noundef readonly align 8 dereferenceable(24) @alloc_9026530c428e0124751c0dab347ebdf4) #11 unreachable } ; core::ops::try_trait::NeverShortCircuit<T>::wrap_mut_1::{{closure}} ; Function Attrs: inlinehint nonlazybind uwtable define internal noundef i16 @"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_128_$u7b$$u7b$closure$u7d$$u7d$17hfaef573cab920bb7E"(ptr noalias noundef nonnull align 1 %_1, i16 noundef %a) unnamed_addr #0 { start: %_5 = alloca i16, align 2 %_0 = alloca i16, align 2 call void @llvm.lifetime.start.p0(i64 2, ptr %_5) store i16 %a, ptr %_5, align 2 %0 = load i16, ptr %_5, align 2, !noundef !3 ; call example::convert2::{{closure}} %_3 = call noundef i16 @"_ZN7example8convert228_$u7b$$u7b$closure$u7d$$u7d$17h2d11c71722613eeaE"(ptr noalias noundef nonnull align 1 %_1, i16 noundef %0) call void @llvm.lifetime.end.p0(i64 2, ptr %_5) store i16 %_3, ptr %_0, align 2 %1 = load i16, ptr %_0, align 2, !noundef !3 ret i16 %1 } ; core::ptr::drop_in_place<core::iter::adapters::map::Map<core::array::drain::Drain<u16>,core::ops::try_trait::NeverShortCircuit<u16>::wrap_mut_1<u16,example::convert2::{{closure}}>::{{closure}}>> ; Function Attrs: nonlazybind uwtable define internal void @"_ZN4core3ptr249drop_in_place$LT$core..iter..adapters..map..Map$LT$core..array..drain..Drain$LT$u16$GT$$C$core..ops..try_trait..NeverShortCircuit$LT$u16$GT$..wrap_mut_1$LT$u16$C$example..convert2..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h33377b1bd6a696a3E"(ptr noalias noundef align 8 dereferenceable(16) %_1) unnamed_addr #2 { start: ; call core::ptr::drop_in_place<core::array::drain::Drain<u16>> call void @"_ZN4core3ptr57drop_in_place$LT$core..array..drain..Drain$LT$u16$GT$$GT$17h274d9f3da966a57aE"(ptr noalias noundef align 8 dereferenceable(16) %_1) ret void } ; core::ptr::drop_in_place<core::array::try_from_trusted_iterator::next<core::ops::try_trait::NeverShortCircuit<u16>,core::iter::adapters::map::Map<core::array::drain::Drain<u16>,core::ops::try_trait::NeverShortCircuit<u16>::wrap_mut_1<u16,example::convert2::{{closure}}>::{{closure}}>>::{{closure}}> ; Function Attrs: nonlazybind uwtable define internal void @"_ZN4core3ptr383drop_in_place$LT$core..array..try_from_trusted_iterator..next$LT$core..ops..try_trait..NeverShortCircuit$LT$u16$GT$$C$core..iter..adapters..map..Map$LT$core..array..drain..Drain$LT$u16$GT$$C$core..ops..try_trait..NeverShortCircuit$LT$u16$GT$..wrap_mut_1$LT$u16$C$example..convert2..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h9c3559248cc7fa14E"(ptr noalias noundef align 8 dereferenceable(16) %_1) unnamed_addr #2 { start: ; call core::ptr::drop_in_place<core::iter::adapters::map::Map<core::array::drain::Drain<u16>,core::ops::try_trait::NeverShortCircuit<u16>::wrap_mut_1<u16,example::convert2::{{closure}}>::{{closure}}>> call void @"_ZN4core3ptr249drop_in_place$LT$core..iter..adapters..map..Map$LT$core..array..drain..Drain$LT$u16$GT$$C$core..ops..try_trait..NeverShortCircuit$LT$u16$GT$..wrap_mut_1$LT$u16$C$example..convert2..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h33377b1bd6a696a3E"(ptr noalias noundef align 8 dereferenceable(16) %_1) ret void } ; core::ptr::drop_in_place<core::array::Guard<u16>> ; Function Attrs: nonlazybind uwtable define internal void @"_ZN4core3ptr50drop_in_place$LT$core..array..Guard$LT$u16$GT$$GT$17h6c9e5dd3966902afE"(ptr noalias noundef align 8 dereferenceable(24) %_1) unnamed_addr #2 { start: ; call <core::array::Guard<T> as core::ops::drop::Drop>::drop call void @"_ZN69_$LT$core..array..Guard$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha1f4517e85dd3e0dE"(ptr noalias noundef align 8 dereferenceable(24) %_1) ret void } ; core::ptr::drop_in_place<core::array::drain::Drain<u16>> ; Function Attrs: nonlazybind uwtable define internal void @"_ZN4core3ptr57drop_in_place$LT$core..array..drain..Drain$LT$u16$GT$$GT$17h274d9f3da966a57aE"(ptr noalias noundef align 8 dereferenceable(16) %_1) unnamed_addr #2 { start: ; call <core::array::drain::Drain<T> as core::ops::drop::Drop>::drop call void @"_ZN76_$LT$core..array..drain..Drain$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3f9c792113a32ef7E"(ptr noalias noundef align 8 dereferenceable(16) %_1) ret void } ; core::ptr::const_ptr::<impl *const T>::sub_ptr ; Function Attrs: inlinehint nonlazybind uwtable define internal noundef i64 @"_ZN4core3ptr9const_ptr33_$LT$impl$u20$$BP$const$u20$T$GT$7sub_ptr17h105aae44360756fdE"(ptr noundef %self, ptr noundef %origin) unnamed_addr #0 { start: %0 = alloca i64, align 8 br label %bb3 bb3: ; preds = %start br label %bb4 bb1: ; No predecessors! unreachable bb2: ; No predecessors! unreachable bb4: ; preds = %bb3 br label %bb5 bb5: ; preds = %bb4 call void @llvm.lifetime.start.p0(i64 8, ptr %0) %1 = ptrtoint ptr %self to i64 %2 = ptrtoint ptr %origin to i64 %3 = sub nuw i64 %1, %2 %4 = udiv exact i64 %3, 2 store i64 %4, ptr %0, align 8 %_0 = load i64, ptr %0, align 8, !noundef !3 call void @llvm.lifetime.end.p0(i64 8, ptr %0) ret i64 %_0 bb6: ; No predecessors! ; call core::panicking::panic call void @_ZN4core9panicking5panic17h23a4bd28941baf7cE(ptr noalias noundef nonnull readonly align 1 @alloc_ec595fc0e82ef92fc59bd74f68296eae, i64 noundef 73, ptr noalias noundef readonly align 8 dereferenceable(24) @alloc_28a2d80bab2e9e5903a53b521ce46ce9) #11 unreachable } ; core::ptr::const_ptr::<impl *const T>::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_check17he57ecdc14eb6bfcfE"(ptr noundef %this, ptr noundef %origin) unnamed_addr #1 { 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_nounwind17h4a808e37c3ed7c53E(ptr noalias noundef nonnull readonly align 1 @alloc_7efb3a7632b3620f628ce83a521b4d9b, i64 noundef 71) #10 unreachable bb1: ; preds = %start ret void } ; core::array::try_from_fn ; Function Attrs: inlinehint nonlazybind uwtable define internal void @_ZN4core5array11try_from_fn17hff267c8843585cfaE(ptr noalias nocapture noundef sret([16 x i8]) align 2 dereferenceable(16) %_0, ptr noundef nonnull %cb.0, ptr noundef %cb.1) unnamed_addr #0 { start: %slot = alloca %"core::mem::manually_drop::ManuallyDrop<[core::mem::maybe_uninit::MaybeUninit<u16>; 8]>", align 2 %self = alloca %"core::mem::maybe_uninit::MaybeUninit<[core::mem::maybe_uninit::MaybeUninit<u16>; 8]>", align 2 %array1 = alloca [8 x i16], align 2 %_8 = alloca [8 x i16], align 2 %_3 = alloca %"core::ops::control_flow::ControlFlow<core::ops::try_trait::NeverShortCircuitResidual>::Continue", align 1 %array = alloca [8 x i16], align 2 call void @llvm.lifetime.start.p0(i64 16, ptr %array) call void @llvm.lifetime.start.p0(i64 16, ptr %self) call void @llvm.lifetime.start.p0(i64 16, ptr %slot) call void @llvm.memcpy.p0.p0.i64(ptr align 2 %slot, ptr align 2 %self, i64 16, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr align 2 %array, ptr align 2 %slot, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 16, ptr %slot) call void @llvm.lifetime.end.p0(i64 16, ptr %self) ; call core::array::try_from_fn_erased call void @_ZN4core5array18try_from_fn_erased17h5763a2255b07f357E(ptr noalias noundef nonnull align 2 %array, i64 noundef 8, ptr noundef nonnull %cb.0, ptr noundef %cb.1) br label %bb3 bb3: ; preds = %start call void @llvm.lifetime.start.p0(i64 16, ptr %_8) call void @llvm.lifetime.start.p0(i64 16, ptr %array1) call void @llvm.memcpy.p0.p0.i64(ptr align 2 %array1, ptr align 2 %array, i64 16, i1 false) %0 = load <8 x i16>, ptr %array1, align 2 store <8 x i16> %0, ptr %_8, align 2 call void @llvm.lifetime.end.p0(i64 16, ptr %array1) ; call <core::ops::try_trait::NeverShortCircuit<T> as core::ops::try_trait::Try>::from_output call void @"_ZN94_$LT$core..ops..try_trait..NeverShortCircuit$LT$T$GT$$u20$as$u20$core..ops..try_trait..Try$GT$11from_output17h8b1b45e7d5afb4c5E"(ptr noalias nocapture noundef sret([16 x i8]) align 2 dereferenceable(16) %_0, ptr noalias nocapture noundef align 2 dereferenceable(16) %_8) call void @llvm.lifetime.end.p0(i64 16, ptr %_8) br label %bb6 bb6: ; preds = %bb4, %bb3 call void @llvm.lifetime.end.p0(i64 16, ptr %array) ret void bb4: ; No predecessors! ; call <core::ops::try_trait::NeverShortCircuit<T> as core::ops::try_trait::FromResidual>::from_residual call void @"_ZN103_$LT$core..ops..try_trait..NeverShortCircuit$LT$T$GT$$u20$as$u20$core..ops..try_trait..FromResidual$GT$13from_residual17h2e13cf4e26ca11bcE"(ptr noalias nocapture noundef sret([16 x i8]) align 2 dereferenceable(16) %_0) br label %bb6 bb2: ; No predecessors! unreachable } ; core::array::Guard<T>::push_unchecked ; Function Attrs: inlinehint nonlazybind uwtable define internal void @"_ZN4core5array14Guard$LT$T$GT$14push_unchecked17h11562470f0820113E"(ptr noalias noundef align 8 dereferenceable(24) %self, i16 noundef %item) unnamed_addr #0 { start: %_16 = alloca i16, align 2 %_15 = alloca i16, align 2 %_14 = alloca %"core::ptr::metadata::PtrRepr<[core::mem::maybe_uninit::MaybeUninit<u16>]>", align 8 %self.0 = load ptr, ptr %self, align 8, !nonnull !3, !align !6, !noundef !3 %0 = getelementptr inbounds i8, ptr %self, i64 8 %self.1 = load i64, ptr %0, align 8, !noundef !3 %1 = getelementptr inbounds i8, ptr %self, i64 16 %index = load i64, ptr %1, align 8, !noundef !3 br label %bb3 bb3: ; preds = %start %self1 = getelementptr inbounds i16, ptr %self.0, i64 %index call void @llvm.lifetime.start.p0(i64 2, ptr %_15) call void @llvm.lifetime.start.p0(i64 2, ptr %_16) store i16 %item, ptr %_16, align 2 %2 = load i16, ptr %_16, align 2, !noundef !3 store i16 %2, ptr %_15, align 2 call void @llvm.lifetime.end.p0(i64 2, ptr %_16) %3 = load i16, ptr %_15, align 2 store i16 %3, ptr %self1, align 2 call void @llvm.lifetime.end.p0(i64 2, ptr %_15) %4 = getelementptr inbounds i8, ptr %self, i64 16 %self2 = load i64, ptr %4, align 8, !noundef !3 %_4 = add nuw i64 %self2, 1 %5 = getelementptr inbounds i8, ptr %self, i64 16 store i64 %_4, ptr %5, align 8 ret void bb1: ; No predecessors! unreachable bb2: ; No predecessors! unreachable } ; core::array::try_from_fn_erased ; Function Attrs: inlinehint nonlazybind uwtable define internal void @_ZN4core5array18try_from_fn_erased17h5763a2255b07f357E(ptr noalias noundef nonnull align 2 %buffer.0, i64 noundef %buffer.1, ptr noundef nonnull %0, ptr noundef %1) unnamed_addr #0 personality ptr @rust_eh_personality { start: %2 = alloca { ptr, i32, [1 x i32] }, align 8 %_11 = alloca i64, align 8 %self = alloca i16, align 2 %_7 = alloca i16, align 2 %guard = alloca %"core::array::Guard<'_, u16>", align 8 %generator = alloca %"{closure@core::array::try_from_trusted_iterator::next<core::ops::try_trait::NeverShortCircuit<u16>, core::iter::adapters::map::Map<core::array::drain::Drain<'_, u16>, {closure@core::ops::try_trait::NeverShortCircuit<u16>::wrap_mut_1<u16, {closure@/app/example.rs:18:28: 18:33}>::{closure#0}}>>::{closure#0}}", align 8 store ptr %0, ptr %generator, align 8 %3 = getelementptr inbounds i8, ptr %generator, i64 8 store ptr %1, ptr %3, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr %guard) store ptr %buffer.0, ptr %guard, align 8 %4 = getelementptr inbounds i8, ptr %guard, i64 8 store i64 %buffer.1, ptr %4, align 8 %5 = getelementptr inbounds i8, ptr %guard, i64 16 store i64 0, ptr %5, align 8 br label %bb1 bb1: ; preds = %bb6, %start %6 = getelementptr inbounds i8, ptr %guard, i64 16 %_5 = load i64, ptr %6, align 8, !noundef !3 %_17.0 = load ptr, ptr %guard, align 8, !nonnull !3, !align !6, !noundef !3 %7 = getelementptr inbounds i8, ptr %guard, i64 8 %_17.1 = load i64, ptr %7, align 8, !noundef !3 %_4 = icmp ult i64 %_5, %_17.1 br i1 %_4, label %bb2, label %bb7 bb7: ; preds = %bb1 %t.0 = load ptr, ptr %guard, align 8, !nonnull !3, !align !6, !noundef !3 %8 = getelementptr inbounds i8, ptr %guard, i64 8 %t.1 = load i64, ptr %8, align 8, !noundef !3 %9 = getelementptr inbounds i8, ptr %guard, i64 16 %t = load i64, ptr %9, align 8, !noundef !3 call void @llvm.lifetime.end.p0(i64 24, ptr %guard) ; call core::ptr::drop_in_place<core::array::try_from_trusted_iterator::next<core::ops::try_trait::NeverShortCircuit<u16>,core::iter::adapters::map::Map<core::array::drain::Drain<u16>,core::ops::try_trait::NeverShortCircuit<u16>::wrap_mut_1<u16,example::convert2::{{closure}}>::{{closure}}>>::{{closure}}> call void @"_ZN4core3ptr383drop_in_place$LT$core..array..try_from_trusted_iterator..next$LT$core..ops..try_trait..NeverShortCircuit$LT$u16$GT$$C$core..iter..adapters..map..Map$LT$core..array..drain..Drain$LT$u16$GT$$C$core..ops..try_trait..NeverShortCircuit$LT$u16$GT$..wrap_mut_1$LT$u16$C$example..convert2..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h9c3559248cc7fa14E"(ptr noalias noundef align 8 dereferenceable(16) %generator) br label %bb9 bb2: ; preds = %bb1 call void @llvm.lifetime.start.p0(i64 2, ptr %_7) call void @llvm.lifetime.start.p0(i64 2, ptr %self) call void @llvm.lifetime.start.p0(i64 8, ptr %_11) %10 = getelementptr inbounds i8, ptr %guard, i64 16 %_12 = load i64, ptr %10, align 8, !noundef !3 store i64 %_12, ptr %_11, align 8 %11 = load i64, ptr %_11, align 8, !noundef !3 ; invoke core::array::try_from_trusted_iterator::next::{{closure}} %_9 = invoke noundef i16 @"_ZN4core5array25try_from_trusted_iterator4next28_$u7b$$u7b$closure$u7d$$u7d$17h6ade974bd1f85fa7E"(ptr noalias noundef align 8 dereferenceable(16) %generator, i64 noundef %11) to label %bb3 unwind label %cleanup bb9: ; preds = %bb8, %bb7 ret void bb12: ; preds = %cleanup ; invoke core::ptr::drop_in_place<core::array::Guard<u16>> invoke void @"_ZN4core3ptr50drop_in_place$LT$core..array..Guard$LT$u16$GT$$GT$17h6c9e5dd3966902afE"(ptr noalias noundef align 8 dereferenceable(24) %guard) #12 to label %bb10 unwind label %terminate cleanup: ; preds = %bb14, %bb3, %bb2 %12 = landingpad { ptr, i32 } cleanup %13 = extractvalue { ptr, i32 } %12, 0 %14 = extractvalue { ptr, i32 } %12, 1 call void @llvm.lifetime.start.p0(i64 16, ptr %2) store ptr %13, ptr %2, align 8 %15 = getelementptr inbounds i8, ptr %2, i64 8 store i32 %14, ptr %15, align 8 br label %bb12 bb3: ; preds = %bb2 call void @llvm.lifetime.end.p0(i64 8, ptr %_11) ; invoke <core::ops::try_trait::NeverShortCircuit<T> as core::ops::try_trait::Try>::branch %16 = invoke noundef i16 @"_ZN94_$LT$core..ops..try_trait..NeverShortCircuit$LT$T$GT$$u20$as$u20$core..ops..try_trait..Try$GT$6branch17h3e3889eec482ed9eE"(i16 noundef %_9) to label %bb4 unwind label %cleanup bb4: ; preds = %bb3 store i16 %16, ptr %self, align 2 br label %bb14 bb14: ; preds = %bb4 %c = load i16, ptr %self, align 2, !noundef !3 store i16 %c, ptr %_7, align 2 call void @llvm.lifetime.end.p0(i64 2, ptr %self) %item = load i16, ptr %_7, align 2, !noundef !3 call void @llvm.lifetime.end.p0(i64 2, ptr %_7) ; invoke core::array::Guard<T>::push_unchecked invoke void @"_ZN4core5array14Guard$LT$T$GT$14push_unchecked17h11562470f0820113E"(ptr noalias noundef align 8 dereferenceable(24) %guard, i16 noundef %item) to label %bb6 unwind label %cleanup bb6: ; preds = %bb14 br label %bb1 bb13: ; No predecessors! call void @llvm.trap() call void @llvm.lifetime.end.p0(i64 2, ptr %self) call void @llvm.lifetime.end.p0(i64 2, ptr %_7) ; invoke core::ptr::drop_in_place<core::array::Guard<u16>> invoke void @"_ZN4core3ptr50drop_in_place$LT$core..array..Guard$LT$u16$GT$$GT$17h6c9e5dd3966902afE"(ptr noalias noundef align 8 dereferenceable(24) %guard) to label %bb8 unwind label %cleanup1 bb10: ; preds = %bb12, %cleanup1 ; invoke core::ptr::drop_in_place<core::array::try_from_trusted_iterator::next<core::ops::try_trait::NeverShortCircuit<u16>,core::iter::adapters::map::Map<core::array::drain::Drain<u16>,core::ops::try_trait::NeverShortCircuit<u16>::wrap_mut_1<u16,example::convert2::{{closure}}>::{{closure}}>>::{{closure}}> invoke void @"_ZN4core3ptr383drop_in_place$LT$core..array..try_from_trusted_iterator..next$LT$core..ops..try_trait..NeverShortCircuit$LT$u16$GT$$C$core..iter..adapters..map..Map$LT$core..array..drain..Drain$LT$u16$GT$$C$core..ops..try_trait..NeverShortCircuit$LT$u16$GT$..wrap_mut_1$LT$u16$C$example..convert2..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h9c3559248cc7fa14E"(ptr noalias noundef align 8 dereferenceable(16) %generator) #12 to label %bb11 unwind label %terminate cleanup1: ; preds = %bb13 %17 = landingpad { ptr, i32 } cleanup %18 = extractvalue { ptr, i32 } %17, 0 %19 = extractvalue { ptr, i32 } %17, 1 call void @llvm.lifetime.start.p0(i64 16, ptr %2) store ptr %18, ptr %2, align 8 %20 = getelementptr inbounds i8, ptr %2, i64 8 store i32 %19, ptr %20, align 8 br label %bb10 bb8: ; preds = %bb13 call void @llvm.lifetime.end.p0(i64 24, ptr %guard) ; call core::ptr::drop_in_place<core::array::try_from_trusted_iterator::next<core::ops::try_trait::NeverShortCircuit<u16>,core::iter::adapters::map::Map<core::array::drain::Drain<u16>,core::ops::try_trait::NeverShortCircuit<u16>::wrap_mut_1<u16,example::convert2::{{closure}}>::{{closure}}>>::{{closure}}> call void @"_ZN4core3ptr383drop_in_place$LT$core..array..try_from_trusted_iterator..next$LT$core..ops..try_trait..NeverShortCircuit$LT$u16$GT$$C$core..iter..adapters..map..Map$LT$core..array..drain..Drain$LT$u16$GT$$C$core..ops..try_trait..NeverShortCircuit$LT$u16$GT$..wrap_mut_1$LT$u16$C$example..convert2..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h9c3559248cc7fa14E"(ptr noalias noundef align 8 dereferenceable(16) %generator) br label %bb9 bb5: ; No predecessors! unreachable terminate: ; preds = %bb10, %bb12 %21 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer %22 = extractvalue { ptr, i32 } %21, 0 %23 = extractvalue { ptr, i32 } %21, 1 ; call core::panicking::panic_in_cleanup call void @_ZN4core9panicking16panic_in_cleanup17h2c733f4485a4a460E() #13 unreachable bb11: ; preds = %bb10 %24 = load ptr, ptr %2, align 8, !noundef !3 %25 = getelementptr inbounds i8, ptr %2, i64 8 %26 = load i32, ptr %25, align 8, !noundef !3 call void @llvm.lifetime.end.p0(i64 16, ptr %2) %27 = insertvalue { ptr, i32 } poison, ptr %24, 0 %28 = insertvalue { ptr, i32 } %27, i32 %26, 1 resume { ptr, i32 } %28 } ; core::array::try_from_trusted_iterator ; Function Attrs: inlinehint nonlazybind uwtable define internal void @_ZN4core5array25try_from_trusted_iterator17ha1b5a8e095fc8dbeE(ptr noalias nocapture noundef sret([16 x i8]) align 2 dereferenceable(16) %_0, ptr noundef nonnull %0, ptr noundef %1) unnamed_addr #0 personality ptr @rust_eh_personality { start: %2 = alloca { ptr, i32, [1 x i32] }, align 8 %_9 = alloca i8, align 1 %_7 = alloca %"{closure@core::array::try_from_trusted_iterator::next<core::ops::try_trait::NeverShortCircuit<u16>, core::iter::adapters::map::Map<core::array::drain::Drain<'_, u16>, {closure@core::ops::try_trait::NeverShortCircuit<u16>::wrap_mut_1<u16, {closure@/app/example.rs:18:28: 18:33}>::{closure#0}}>>::{closure#0}}", align 8 %_4 = alloca { i64, %"core::option::Option<usize>" }, align 8 %iter = alloca %"core::iter::adapters::map::Map<core::array::drain::Drain<'_, u16>, {closure@core::ops::try_trait::NeverShortCircuit<u16>::wrap_mut_1<u16, {closure@/app/example.rs:18:28: 18:33}>::{closure#0}}>", align 8 store ptr %0, ptr %iter, align 8 %3 = getelementptr inbounds i8, ptr %iter, i64 8 store ptr %1, ptr %3, align 8 store i8 1, ptr %_9, align 1 call void @llvm.lifetime.start.p0(i64 24, ptr %_4) ; invoke <core::iter::adapters::map::Map<I,F> 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_hint17h0c346c96d8b7b9b7E"(ptr noalias nocapture noundef sret([24 x i8]) align 8 dereferenceable(24) %_4, ptr noalias noundef readonly align 8 dereferenceable(16) %iter) to label %bb1 unwind label %cleanup bb7: ; preds = %cleanup %4 = load i8, ptr %_9, align 1, !range !4, !noundef !3 %5 = trunc i8 %4 to i1 br i1 %5, label %bb6, label %bb5 cleanup: ; preds = %bb2, %bb3, %start %6 = landingpad { ptr, i32 } cleanup %7 = extractvalue { ptr, i32 } %6, 0 %8 = extractvalue { ptr, i32 } %6, 1 call void @llvm.lifetime.start.p0(i64 16, ptr %2) store ptr %7, ptr %2, align 8 %9 = getelementptr inbounds i8, ptr %2, i64 8 store i32 %8, ptr %9, align 8 br label %bb7 bb1: ; preds = %start %_3 = load i64, ptr %_4, align 8, !noundef !3 %_2 = icmp uge i64 %_3, 8 br i1 %_2, label %bb2, label %bb3 bb3: ; preds = %bb1 call void @llvm.lifetime.end.p0(i64 24, ptr %_4) ; invoke core::panicking::panic invoke void @_ZN4core9panicking5panic17h23a4bd28941baf7cE(ptr noalias noundef nonnull readonly align 1 @alloc_83d39f8d46f6e989bad9ef26045950d9, i64 noundef 41, ptr noalias noundef readonly align 8 dereferenceable(24) @alloc_d48e408034c5781876be80e060782f57) #11 to label %unreachable unwind label %cleanup bb2: ; preds = %bb1 call void @llvm.lifetime.end.p0(i64 24, ptr %_4) call void @llvm.lifetime.start.p0(i64 16, ptr %_7) store i8 0, ptr %_9, align 1 %iter.0 = load ptr, ptr %iter, align 8, !nonnull !3, !noundef !3 %10 = getelementptr inbounds i8, ptr %iter, i64 8 %iter.1 = load ptr, ptr %10, align 8, !noundef !3 store ptr %iter.0, ptr %_7, align 8 %11 = getelementptr inbounds i8, ptr %_7, i64 8 store ptr %iter.1, ptr %11, align 8 %12 = load ptr, ptr %_7, align 8, !nonnull !3, !noundef !3 %13 = getelementptr inbounds i8, ptr %_7, i64 8 %14 = load ptr, ptr %13, align 8, !noundef !3 ; invoke core::array::try_from_fn invoke void @_ZN4core5array11try_from_fn17hff267c8843585cfaE(ptr noalias nocapture noundef sret([16 x i8]) align 2 dereferenceable(16) %_0, ptr noundef nonnull %12, ptr noundef %14) to label %bb4 unwind label %cleanup unreachable: ; preds = %bb3 unreachable bb4: ; preds = %bb2 call void @llvm.lifetime.end.p0(i64 16, ptr %_7) ret void bb5: ; preds = %bb6, %bb7 %15 = load ptr, ptr %2, align 8, !noundef !3 %16 = getelementptr inbounds i8, ptr %2, i64 8 %17 = load i32, ptr %16, align 8, !noundef !3 call void @llvm.lifetime.end.p0(i64 16, ptr %2) %18 = insertvalue { ptr, i32 } poison, ptr %15, 0 %19 = insertvalue { ptr, i32 } %18, i32 %17, 1 resume { ptr, i32 } %19 bb6: ; preds = %bb7 ; invoke core::ptr::drop_in_place<core::iter::adapters::map::Map<core::array::drain::Drain<u16>,core::ops::try_trait::NeverShortCircuit<u16>::wrap_mut_1<u16,example::convert2::{{closure}}>::{{closure}}>> invoke void @"_ZN4core3ptr249drop_in_place$LT$core..iter..adapters..map..Map$LT$core..array..drain..Drain$LT$u16$GT$$C$core..ops..try_trait..NeverShortCircuit$LT$u16$GT$..wrap_mut_1$LT$u16$C$example..convert2..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h33377b1bd6a696a3E"(ptr noalias noundef align 8 dereferenceable(16) %iter) #12 to label %bb5 unwind label %terminate terminate: ; preds = %bb6 %20 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer %21 = extractvalue { ptr, i32 } %20, 0 %22 = extractvalue { ptr, i32 } %20, 1 ; call core::panicking::panic_in_cleanup call void @_ZN4core9panicking16panic_in_cleanup17h2c733f4485a4a460E() #13 unreachable } ; core::array::try_from_trusted_iterator::next::{{closure}} ; Function Attrs: inlinehint nonlazybind uwtable define internal noundef i16 @"_ZN4core5array25try_from_trusted_iterator4next28_$u7b$$u7b$closure$u7d$$u7d$17h6ade974bd1f85fa7E"(ptr noalias noundef align 8 dereferenceable(16) %_1, i64 noundef %_2) unnamed_addr #0 { start: ; call <core::iter::adapters::map::Map<I,F> as core::iter::traits::unchecked_iterator::UncheckedIterator>::next_unchecked %_0 = call noundef i16 @"_ZN121_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..unchecked_iterator..UncheckedIterator$GT$14next_unchecked17h2f3bfe8aa8ecce1bE"(ptr noalias noundef align 8 dereferenceable(16) %_1) ret i16 %_0 } ; core::array::<impl [T; N]>::try_map::{{closure}} ; Function Attrs: inlinehint nonlazybind uwtable define internal void @"_ZN4core5array40_$LT$impl$u20$$u5b$T$u3b$$u20$N$u5d$$GT$7try_map28_$u7b$$u7b$closure$u7d$$u7d$17hb18ec162aa479770E"(ptr noalias nocapture noundef sret([16 x i8]) align 2 dereferenceable(16) %_0, ptr noundef nonnull %iter.0, ptr noundef %iter.1) unnamed_addr #0 { start: %_3 = alloca %"core::iter::adapters::map::Map<core::array::drain::Drain<'_, u16>, {closure@core::ops::try_trait::NeverShortCircuit<u16>::wrap_mut_1<u16, {closure@/app/example.rs:18:28: 18:33}>::{closure#0}}>", align 8 call void @llvm.lifetime.start.p0(i64 16, ptr %_3) store ptr %iter.0, ptr %_3, align 8 %0 = getelementptr inbounds i8, ptr %_3, i64 8 store ptr %iter.1, ptr %0, align 8 %1 = load ptr, ptr %_3, align 8, !nonnull !3, !noundef !3 %2 = getelementptr inbounds i8, ptr %_3, i64 8 %3 = load ptr, ptr %2, align 8, !noundef !3 ; call core::array::try_from_trusted_iterator call void @_ZN4core5array25try_from_trusted_iterator17ha1b5a8e095fc8dbeE(ptr noalias nocapture noundef sret([16 x i8]) align 2 dereferenceable(16) %_0, ptr noundef nonnull %1, ptr noundef %3) call void @llvm.lifetime.end.p0(i64 16, ptr %_3) ret void } ; core::array::drain::drain_array_with ; Function Attrs: nonlazybind uwtable define internal void @_ZN4core5array5drain16drain_array_with17h086b2763427fb892E(ptr noalias nocapture noundef sret([16 x i8]) align 2 dereferenceable(16) %_0, ptr noalias nocapture noundef align 2 dereferenceable(16) %array) unnamed_addr #2 { start: %end_or_len = alloca ptr, align 8 %self = alloca %"core::ptr::non_null::NonNull<[u16]>", align 8 %ptr = alloca ptr, align 8 %_9 = alloca { %"core::array::drain::Drain<'_, u16>" }, align 8 %_5 = alloca %"core::slice::iter::IterMut<'_, u16>", align 8 %drain = alloca %"core::array::drain::Drain<'_, u16>", align 8 %array1 = alloca %"core::mem::manually_drop::ManuallyDrop<[u16; 8]>", align 2 call void @llvm.lifetime.start.p0(i64 16, ptr %array1) %0 = load <8 x i16>, ptr %array, align 2 store <8 x i16> %0, ptr %array1, align 2 call void @llvm.lifetime.start.p0(i64 16, ptr %_5) call void @llvm.lifetime.start.p0(i64 8, ptr %ptr) call void @llvm.lifetime.start.p0(i64 16, ptr %self) store ptr %array1, ptr %self, align 8 %1 = getelementptr inbounds i8, ptr %self, i64 8 store i64 8, ptr %1, align 8 store ptr %array1, ptr %ptr, align 8 call void @llvm.lifetime.end.p0(i64 16, ptr %self) call void @llvm.lifetime.start.p0(i64 8, ptr %end_or_len) br label %bb3 bb3: ; preds = %start %2 = getelementptr inbounds i16, ptr %array1, i64 8 store ptr %2, ptr %end_or_len, align 8 br label %bb4 bb4: ; preds = %bb3 %_16 = load ptr, ptr %end_or_len, align 8, !noundef !3 %3 = load ptr, ptr %ptr, align 8, !nonnull !3, !noundef !3 store ptr %3, ptr %_5, align 8 %4 = getelementptr inbounds i8, ptr %_5, i64 8 store ptr %_16, ptr %4, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr %end_or_len) call void @llvm.lifetime.end.p0(i64 8, ptr %ptr) %5 = load ptr, ptr %_5, align 8, !nonnull !3, !noundef !3 %6 = getelementptr inbounds i8, ptr %_5, i64 8 %7 = load ptr, ptr %6, align 8, !noundef !3 store ptr %5, ptr %drain, align 8 %8 = getelementptr inbounds i8, ptr %drain, i64 8 store ptr %7, ptr %8, align 8 call void @llvm.lifetime.end.p0(i64 16, ptr %_5) call void @llvm.lifetime.start.p0(i64 16, ptr %_9) %9 = load ptr, ptr %drain, align 8, !nonnull !3, !noundef !3 %10 = getelementptr inbounds i8, ptr %drain, i64 8 %11 = load ptr, ptr %10, align 8, !noundef !3 store ptr %9, ptr %_9, align 8 %12 = getelementptr inbounds i8, ptr %_9, i64 8 store ptr %11, ptr %12, align 8 %13 = load ptr, ptr %_9, align 8, !nonnull !3, !noundef !3 %14 = getelementptr inbounds i8, ptr %_9, i64 8 %15 = load ptr, ptr %14, align 8, !noundef !3 ; call core::array::<impl [T; N]>::try_map::{{closure}} call void @"_ZN4core5array40_$LT$impl$u20$$u5b$T$u3b$$u20$N$u5d$$GT$7try_map28_$u7b$$u7b$closure$u7d$$u7d$17hb18ec162aa479770E"(ptr noalias nocapture noundef sret([16 x i8]) align 2 dereferenceable(16) %_0, ptr noundef nonnull %13, ptr noundef %15) call void @llvm.lifetime.end.p0(i64 16, ptr %_9) call void @llvm.lifetime.end.p0(i64 16, ptr %array1) ret void bb2: ; No predecessors! unreachable } ; core::slice::raw::from_raw_parts_mut::precondition_check ; Function Attrs: inlinehint nounwind nonlazybind uwtable define internal void @_ZN4core5slice3raw18from_raw_parts_mut18precondition_check17h8200f7e47442600eE(ptr noundef %data, i64 noundef %size, i64 noundef %align, i64 noundef %len) unnamed_addr #1 personality ptr @rust_eh_personality { start: %max_len = alloca i64, align 8 ; invoke core::intrinsics::is_aligned_and_not_null %_5 = invoke noundef zeroext i1 @_ZN4core10intrinsics23is_aligned_and_not_null17h373e7e13f232aac0E(ptr noundef %data, i64 noundef %align) to label %bb1 unwind label %terminate terminate: ; preds = %panic, %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_unwind17hf1277c621e4c8ecfE() #13 unreachable bb1: ; preds = %start br i1 %_5, label %bb2, label %bb5 bb5: ; preds = %bb1 br label %bb6 bb2: ; preds = %bb1 call void @llvm.lifetime.start.p0(i64 8, ptr %max_len) %_10 = icmp eq i64 %size, 0 %3 = icmp eq i64 %size, 0 br i1 %3, label %bb7, label %bb8 bb6: ; preds = %bb4, %bb5 ; call core::panicking::panic_nounwind call void @_ZN4core9panicking14panic_nounwind17h4a808e37c3ed7c53E(ptr noalias noundef nonnull readonly align 1 @alloc_d685bb4d9a1abf4f5af46d1af0d9ef8a, i64 noundef 166) #10 unreachable bb7: ; preds = %bb2 store i64 -1, ptr %max_len, align 8 br label %bb10 bb8: ; preds = %bb2 %4 = call i1 @llvm.expect.i1(i1 %_10, i1 false) br i1 %4, label %panic, label %bb9 bb10: ; preds = %bb9, %bb7 %_11 = load i64, ptr %max_len, align 8, !noundef !3 %_7 = icmp ule i64 %len, %_11 call void @llvm.lifetime.end.p0(i64 8, ptr %max_len) br i1 %_7, label %bb3, label %bb4 bb9: ; preds = %bb8 %5 = udiv i64 9223372036854775807, %size store i64 %5, ptr %max_len, align 8 br label %bb10 panic: ; preds = %bb8 ; invoke core::panicking::panic invoke void @_ZN4core9panicking5panic17h23a4bd28941baf7cE(ptr noalias noundef nonnull readonly align 1 @str.0, i64 noundef 25, ptr noalias noundef readonly align 8 dereferenceable(24) @alloc_f69883c4809950577c27dc26fd224972) #11 to label %unreachable unwind label %terminate unreachable: ; preds = %panic unreachable bb4: ; preds = %bb10 br label %bb6 bb3: ; preds = %bb10 ret void } ; core::slice::iter::IterMut<T>::as_mut_slice ; Function Attrs: nonlazybind uwtable define internal { ptr, i64 } @"_ZN4core5slice4iter16IterMut$LT$T$GT$12as_mut_slice17hd09b9bf931044ab1E"(ptr noalias noundef align 8 dereferenceable(16) %self) unnamed_addr #2 { start: %_24 = alloca %"core::ptr::metadata::PtrComponents<[u16]>", align 8 %_23 = alloca %"core::ptr::metadata::PtrRepr<[u16]>", align 8 %len = alloca i64, align 8 %self1 = load ptr, ptr %self, align 8, !nonnull !3, !noundef !3 call void @llvm.lifetime.start.p0(i64 8, ptr %len) br label %bb2 bb2: ; preds = %start %self2 = getelementptr inbounds i8, ptr %self, i64 8 %end = load ptr, ptr %self2, align 8, !nonnull !3, !noundef !3 %subtracted = load ptr, ptr %self, align 8, !nonnull !3, !noundef !3 ; call core::ptr::const_ptr::<impl *const T>::sub_ptr %0 = call noundef i64 @"_ZN4core3ptr9const_ptr33_$LT$impl$u20$$BP$const$u20$T$GT$7sub_ptr17h105aae44360756fdE"(ptr noundef %end, ptr noundef %subtracted) store i64 %0, ptr %len, align 8 br label %bb3 bb3: ; preds = %bb2 br label %bb7 bb1: ; No predecessors! unreachable bb7: ; preds = %bb3 call void @llvm.lifetime.start.p0(i64 16, ptr %_23) call void @llvm.lifetime.start.p0(i64 16, ptr %_24) store ptr %self1, ptr %_24, align 8 %1 = load i64, ptr %len, align 8, !noundef !3 %2 = getelementptr inbounds i8, ptr %_24, i64 8 store i64 %1, ptr %2, align 8 %3 = load ptr, ptr %_24, align 8, !noundef !3 %4 = getelementptr inbounds i8, ptr %_24, i64 8 %5 = load i64, ptr %4, align 8, !noundef !3 store ptr %3, ptr %_23, align 8 %6 = getelementptr inbounds i8, ptr %_23, i64 8 store i64 %5, ptr %6, align 8 call void @llvm.lifetime.end.p0(i64 16, ptr %_24) %_21.0 = load ptr, ptr %_23, align 8, !noundef !3 %7 = getelementptr inbounds i8, ptr %_23, i64 8 %_21.1 = load i64, ptr %7, align 8, !noundef !3 call void @llvm.lifetime.end.p0(i64 16, ptr %_23) call void @llvm.lifetime.end.p0(i64 8, ptr %len) %8 = insertvalue { ptr, i64 } poison, ptr %_21.0, 0 %9 = insertvalue { ptr, i64 } %8, i64 %_21.1, 1 ret { ptr, i64 } %9 bb5: ; No predecessors! unreachable bb6: ; No predecessors! unreachable } ; <core::array::Guard<T> as core::ops::drop::Drop>::drop ; Function Attrs: nonlazybind uwtable define internal void @"_ZN69_$LT$core..array..Guard$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha1f4517e85dd3e0dE"(ptr noalias noundef align 8 dereferenceable(24) %self) unnamed_addr #2 { start: %_8 = alloca %"core::ops::range::Range<usize>", align 8 %self.0 = load ptr, ptr %self, align 8, !nonnull !3, !align !6, !noundef !3 %0 = getelementptr inbounds i8, ptr %self, i64 8 %self.1 = load i64, ptr %0, align 8, !noundef !3 %1 = getelementptr inbounds i8, ptr %self, i64 16 %index = load i64, ptr %1, align 8, !noundef !3 call void @llvm.lifetime.start.p0(i64 16, ptr %_8) store i64 0, ptr %_8, align 8 %2 = getelementptr inbounds i8, ptr %_8, i64 8 store i64 %index, ptr %2, align 8 %3 = load i64, ptr %_8, align 8, !noundef !3 %4 = getelementptr inbounds i8, ptr %_8, i64 8 %5 = load i64, ptr %4, align 8, !noundef !3 ; call <core::ops::range::Range<usize> as core::slice::index::SliceIndex<[T]>>::get_unchecked_mut %6 = call { ptr, i64 } @"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$17get_unchecked_mut17h3ecdffc95c0243efE"(i64 noundef %3, i64 noundef %5, ptr noundef %self.0, i64 noundef %self.1) %slice.0 = extractvalue { ptr, i64 } %6, 0 %slice.1 = extractvalue { ptr, i64 } %6, 1 call void @llvm.lifetime.end.p0(i64 16, ptr %_8) ret void } ; <usize as core::slice::index::SliceIndex<[T]>>::get_unchecked_mut::precondition_check ; Function Attrs: inlinehint nounwind nonlazybind uwtable define internal void @"_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$17get_unchecked_mut18precondition_check17h8c3e863a425ad190E"(i64 noundef %this, i64 noundef %len) unnamed_addr #1 { start: %_3 = icmp ult i64 %this, %len br i1 %_3, label %bb1, label %bb2 bb2: ; preds = %start ; call core::panicking::panic_nounwind call void @_ZN4core9panicking14panic_nounwind17h4a808e37c3ed7c53E(ptr noalias noundef nonnull readonly align 1 @alloc_e96fb6e25c55edb0aec8b24d111f5d7f, i64 noundef 101) #10 unreachable bb1: ; preds = %start ret void } ; <core::array::drain::Drain<T> as core::ops::drop::Drop>::drop ; Function Attrs: nonlazybind uwtable define internal void @"_ZN76_$LT$core..array..drain..Drain$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3f9c792113a32ef7E"(ptr noalias noundef align 8 dereferenceable(16) %self) unnamed_addr #2 { start: ; call core::slice::iter::IterMut<T>::as_mut_slice %0 = call { ptr, i64 } @"_ZN4core5slice4iter16IterMut$LT$T$GT$12as_mut_slice17hd09b9bf931044ab1E"(ptr noalias noundef align 8 dereferenceable(16) %self) %_3.0 = extractvalue { ptr, i64 } %0, 0 %_3.1 = extractvalue { ptr, i64 } %0, 1 ret void } ; <core::array::drain::Drain<T> as core::iter::traits::iterator::Iterator>::size_hint ; Function Attrs: inlinehint nonlazybind uwtable define internal void @"_ZN93_$LT$core..array..drain..Drain$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h1aa22b616a349ee4E"(ptr noalias nocapture noundef sret([24 x i8]) align 8 dereferenceable(24) %_0, ptr noalias noundef readonly align 8 dereferenceable(16) %self) unnamed_addr #0 { start: %_3 = alloca %"core::option::Option<usize>", align 8 ; call <core::array::drain::Drain<T> as core::iter::traits::exact_size::ExactSizeIterator>::len %n = call noundef i64 @"_ZN104_$LT$core..array..drain..Drain$LT$T$GT$$u20$as$u20$core..iter..traits..exact_size..ExactSizeIterator$GT$3len17h9f8ecd0761aeb69dE"(ptr noalias noundef readonly align 8 dereferenceable(16) %self) call void @llvm.lifetime.start.p0(i64 16, ptr %_3) %0 = getelementptr inbounds i8, ptr %_3, i64 8 store i64 %n, ptr %0, align 8 store i64 1, ptr %_3, align 8 store i64 %n, ptr %_0, align 8 %1 = load i64, ptr %_3, align 8, !range !7, !noundef !3 %2 = getelementptr inbounds i8, ptr %_3, i64 8 %3 = load i64, ptr %2, align 8 %4 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %1, ptr %4, align 8 %5 = getelementptr inbounds i8, ptr %4, i64 8 store i64 %3, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 16, ptr %_3) ret void } ; <core::ops::try_trait::NeverShortCircuit<T> as core::ops::try_trait::Try>::from_output ; Function Attrs: inlinehint nonlazybind uwtable define internal void @"_ZN94_$LT$core..ops..try_trait..NeverShortCircuit$LT$T$GT$$u20$as$u20$core..ops..try_trait..Try$GT$11from_output17h8b1b45e7d5afb4c5E"(ptr noalias nocapture noundef sret([16 x i8]) align 2 dereferenceable(16) %_0, ptr noalias nocapture noundef align 2 dereferenceable(16) %x) unnamed_addr #0 { start: %0 = load <8 x i16>, ptr %x, align 2 store <8 x i16> %0, ptr %_0, align 2 ret void } ; <core::ops::try_trait::NeverShortCircuit<T> as core::ops::try_trait::Try>::branch ; Function Attrs: inlinehint nonlazybind uwtable define internal noundef i16 @"_ZN94_$LT$core..ops..try_trait..NeverShortCircuit$LT$T$GT$$u20$as$u20$core..ops..try_trait..Try$GT$6branch17h3e3889eec482ed9eE"(i16 noundef %self) unnamed_addr #0 { start: %_0 = alloca i16, align 2 store i16 %self, ptr %_0, align 2 %0 = load i16, ptr %_0, align 2, !noundef !3 ret i16 %0 } ; Function Attrs: nonlazybind uwtable define void @convert1(ptr noalias nocapture noundef sret([16 x i8]) align 1 dereferenceable(16) %_0, ptr noalias nocapture noundef readonly align 2 dereferenceable(16) %value) unnamed_addr #2 { start: %0 = alloca i16, align 2 %1 = alloca i16, align 2 %2 = alloca i16, align 2 %3 = alloca i16, align 2 %4 = alloca i16, align 2 %5 = alloca i16, align 2 %6 = alloca i16, align 2 %7 = alloca i16, align 2 %addr16 = alloca [8 x i16], align 2 %8 = getelementptr inbounds [8 x i16], ptr %value, i64 0, i64 0 %self = load i16, ptr %8, align 2, !noundef !3 call void @llvm.lifetime.start.p0(i64 2, ptr %7) %9 = call i16 @llvm.bswap.i16(i16 %self) store i16 %9, ptr %7, align 2 %_3 = load i16, ptr %7, align 2, !noundef !3 call void @llvm.lifetime.end.p0(i64 2, ptr %7) %10 = getelementptr inbounds [8 x i16], ptr %value, i64 0, i64 1 %self1 = load i16, ptr %10, align 2, !noundef !3 call void @llvm.lifetime.start.p0(i64 2, ptr %6) %11 = call i16 @llvm.bswap.i16(i16 %self1) store i16 %11, ptr %6, align 2 %_5 = load i16, ptr %6, align 2, !noundef !3 call void @llvm.lifetime.end.p0(i64 2, ptr %6) %12 = getelementptr inbounds [8 x i16], ptr %value, i64 0, i64 2 %self2 = load i16, ptr %12, align 2, !noundef !3 call void @llvm.lifetime.start.p0(i64 2, ptr %5) %13 = call i16 @llvm.bswap.i16(i16 %self2) store i16 %13, ptr %5, align 2 %_7 = load i16, ptr %5, align 2, !noundef !3 call void @llvm.lifetime.end.p0(i64 2, ptr %5) %14 = getelementptr inbounds [8 x i16], ptr %value, i64 0, i64 3 %self3 = load i16, ptr %14, align 2, !noundef !3 call void @llvm.lifetime.start.p0(i64 2, ptr %4) %15 = call i16 @llvm.bswap.i16(i16 %self3) store i16 %15, ptr %4, align 2 %_9 = load i16, ptr %4, align 2, !noundef !3 call void @llvm.lifetime.end.p0(i64 2, ptr %4) %16 = getelementptr inbounds [8 x i16], ptr %value, i64 0, i64 4 %self4 = load i16, ptr %16, align 2, !noundef !3 call void @llvm.lifetime.start.p0(i64 2, ptr %3) %17 = call i16 @llvm.bswap.i16(i16 %self4) store i16 %17, ptr %3, align 2 %_11 = load i16, ptr %3, align 2, !noundef !3 call void @llvm.lifetime.end.p0(i64 2, ptr %3) %18 = getelementptr inbounds [8 x i16], ptr %value, i64 0, i64 5 %self5 = load i16, ptr %18, align 2, !noundef !3 call void @llvm.lifetime.start.p0(i64 2, ptr %2) %19 = call i16 @llvm.bswap.i16(i16 %self5) store i16 %19, ptr %2, align 2 %_13 = load i16, ptr %2, align 2, !noundef !3 call void @llvm.lifetime.end.p0(i64 2, ptr %2) %20 = getelementptr inbounds [8 x i16], ptr %value, i64 0, i64 6 %self6 = load i16, ptr %20, align 2, !noundef !3 call void @llvm.lifetime.start.p0(i64 2, ptr %1) %21 = call i16 @llvm.bswap.i16(i16 %self6) store i16 %21, ptr %1, align 2 %_15 = load i16, ptr %1, align 2, !noundef !3 call void @llvm.lifetime.end.p0(i64 2, ptr %1) %22 = getelementptr inbounds [8 x i16], ptr %value, i64 0, i64 7 %self7 = load i16, ptr %22, align 2, !noundef !3 call void @llvm.lifetime.start.p0(i64 2, ptr %0) %23 = call i16 @llvm.bswap.i16(i16 %self7) store i16 %23, ptr %0, align 2 %_17 = load i16, ptr %0, align 2, !noundef !3 call void @llvm.lifetime.end.p0(i64 2, ptr %0) %24 = getelementptr inbounds [8 x i16], ptr %addr16, i64 0, i64 0 store i16 %_3, ptr %24, align 2 %25 = getelementptr inbounds [8 x i16], ptr %addr16, i64 0, i64 1 store i16 %_5, ptr %25, align 2 %26 = getelementptr inbounds [8 x i16], ptr %addr16, i64 0, i64 2 store i16 %_7, ptr %26, align 2 %27 = getelementptr inbounds [8 x i16], ptr %addr16, i64 0, i64 3 store i16 %_9, ptr %27, align 2 %28 = getelementptr inbounds [8 x i16], ptr %addr16, i64 0, i64 4 store i16 %_11, ptr %28, align 2 %29 = getelementptr inbounds [8 x i16], ptr %addr16, i64 0, i64 5 store i16 %_13, ptr %29, align 2 %30 = getelementptr inbounds [8 x i16], ptr %addr16, i64 0, i64 6 store i16 %_15, ptr %30, align 2 %31 = getelementptr inbounds [8 x i16], ptr %addr16, i64 0, i64 7 store i16 %_17, ptr %31, align 2 %32 = load <16 x i8>, ptr %addr16, align 2 store <16 x i8> %32, ptr %_0, align 1 ret void } ; Function Attrs: nonlazybind uwtable define void @convert2(ptr noalias nocapture noundef sret([16 x i8]) align 1 dereferenceable(16) %_0, ptr noalias nocapture noundef align 2 dereferenceable(16) %value) unnamed_addr #2 { start: %_3 = alloca %"core::ops::try_trait::NeverShortCircuit<[u16; 8]>", align 2 %addr16 = alloca [8 x i16], align 2 call void @llvm.lifetime.start.p0(i64 16, ptr %_3) ; call core::array::drain::drain_array_with call void @_ZN4core5array5drain16drain_array_with17h086b2763427fb892E(ptr noalias nocapture noundef sret([16 x i8]) align 2 dereferenceable(16) %_3, ptr noalias nocapture noundef align 2 dereferenceable(16) %value) %0 = load <8 x i16>, ptr %_3, align 2 store <8 x i16> %0, ptr %addr16, align 2 call void @llvm.lifetime.end.p0(i64 16, ptr %_3) %1 = load <16 x i8>, ptr %addr16, align 2 store <16 x i8> %1, ptr %_0, align 1 ret void } ; example::convert2::{{closure}} ; Function Attrs: inlinehint nonlazybind uwtable define internal noundef i16 @"_ZN7example8convert228_$u7b$$u7b$closure$u7d$$u7d$17h2d11c71722613eeaE"(ptr noalias noundef nonnull align 1 %_1, i16 noundef %val) unnamed_addr #0 { start: %0 = alloca i16, align 2 call void @llvm.lifetime.start.p0(i64 2, ptr %0) %1 = call i16 @llvm.bswap.i16(i16 %val) store i16 %1, ptr %0, align 2 %_0 = load i16, ptr %0, align 2, !noundef !3 call void @llvm.lifetime.end.p0(i64 2, ptr %0) ret i16 %_0 } ; core::panicking::panic_nounwind ; Function Attrs: cold noinline noreturn nounwind nonlazybind uwtable declare void @_ZN4core9panicking14panic_nounwind17h4a808e37c3ed7c53E(ptr noalias noundef nonnull readonly align 1, i64 noundef) unnamed_addr #3 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.ctpop.i64(i64) #4 ; core::panicking::panic_fmt ; Function Attrs: cold noinline noreturn nonlazybind uwtable declare void @_ZN4core9panicking9panic_fmt17h18a3c8b0a37e1072E(ptr noalias nocapture noundef readonly align 8 dereferenceable(48), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #5 ; core::panicking::panic ; Function Attrs: cold noinline noreturn nonlazybind uwtable declare void @_ZN4core9panicking5panic17h23a4bd28941baf7cE(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #5 ; 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) #6 ; Function Attrs: nonlazybind uwtable declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #2 ; Function Attrs: cold noreturn nounwind memory(inaccessiblemem: write) declare void @llvm.trap() #7 ; core::panicking::panic_in_cleanup ; Function Attrs: cold noinline noreturn nounwind nonlazybind uwtable declare void @_ZN4core9panicking16panic_in_cleanup17h2c733f4485a4a460E() unnamed_addr #3 ; core::panicking::panic_cannot_unwind ; Function Attrs: cold noinline noreturn nounwind nonlazybind uwtable declare void @_ZN4core9panicking19panic_cannot_unwind17hf1277c621e4c8ecfE() unnamed_addr #3 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none) declare i1 @llvm.expect.i1(i1, i1) #8 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i16 @llvm.bswap.i16(i16) #4 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #9 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #9 attributes #0 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { inlinehint nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { cold noinline noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #5 = { cold noinline noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #7 = { cold noreturn nounwind memory(inaccessiblemem: write) } attributes #8 = { nocallback nofree nosync nounwind willreturn memory(none) } attributes #9 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #10 = { noreturn nounwind } attributes #11 = { noreturn } attributes #12 = { cold } attributes #13 = { cold 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-beta.1 (efd9d2df1 2024-03-18)"} !3 = !{} !4 = !{i8 0, i8 2} !5 = !{i64 8} !6 = !{i64 2} !7 = !{i64 0, i64 2}
Become a Patron
Sponsor on GitHub
Donate via PayPal
Compiler Explorer Shop
Source on GitHub
Mailing list
Installed libraries
Wiki
Report an issue
How it works
Contact the author
CE on Mastodon
CE on Bluesky
Statistics
Changelog
Version tree