; ModuleID = 'become_indirect_return.6ede9f9c9a094dc8-cgu.0' source_filename = "become_indirect_return.6ede9f9c9a094dc8-cgu.0" target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-n32:64-S128-Fn32" target triple = "arm64-apple-macosx11.0.0" @alloc_e14422676b3ab37c8bc0d74461dcf124 = private unnamed_addr constant [24 x i8] c"\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01", align 1 @alloc_c47524f5992a9ad4d71764185cfa8759 = private unnamed_addr constant [87 x i8] c"/Users/mark/Desktop/github/rust/tests/ui/explicit-tail-calls/become-indirect-return.rs\00", align 1 @alloc_8d0223e2d48c7097fa2705e3032b165f = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @alloc_c47524f5992a9ad4d71764185cfa8759, [16 x i8] c"V\00\00\00\00\00\00\00\12\00\00\00\05\00\00\00" }>, align 8 @vtable.0 = private unnamed_addr constant <{ [24 x i8], ptr, ptr, ptr }> <{ [24 x i8] c"\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00", ptr @"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h4187be3c78810b14E", ptr @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h877a4a203b01f455E", ptr @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h877a4a203b01f455E" }>, align 8 @alloc_560a59ed819b9d9a5841f6e731c4c8e5 = private unnamed_addr constant [210 x i8] c"unsafe precondition(s) violated: NonNull::new_unchecked requires that the pointer is non-null\0A\0AThis indicates a bug in the program. This Undefined Behavior check is optional, and cannot be relied on for safety.", align 1 @anon.a3de340b33810d026d314a1937014a53.0 = private unnamed_addr constant <{ [8 x i8], [8 x i8] }> <{ [8 x i8] zeroinitializer, [8 x i8] undef }>, align 8 @alloc_1be5ea12ba708d9a11b6e93a7d387a75 = private unnamed_addr constant [281 x i8] c"unsafe precondition(s) violated: Layout::from_size_align_unchecked requires that align is a power of 2 and the rounded-up allocation size does not exceed isize::MAX\0A\0AThis indicates a bug in the program. This Undefined Behavior check is optional, and cannot be relied on for safety.", align 1 @vtable.1 = private unnamed_addr constant <{ [24 x i8], ptr }> <{ [24 x i8] c"\00\00\00\00\00\00\00\00\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$3fmt17h3943394e1acc76baE" }>, align 8 @alloc_11b161959c9d5f181f0efadaead13d08 = private unnamed_addr constant [59 x i8] c"/Users/mark/Desktop/github/rust/library/alloc/src/alloc.rs\00", align 1 @alloc_8a62371c5fb549829f691796cc4525de = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @alloc_11b161959c9d5f181f0efadaead13d08, [16 x i8] c":\00\00\00\00\00\00\00_\01\00\00\1B\00\00\00" }>, align 8 @alloc_fd8a240c51a7d157fff1859e8a47dcc4 = private unnamed_addr constant [65 x i8] c"/Users/mark/Desktop/github/rust/library/core/src/ptr/non_null.rs\00", align 1 @alloc_e25f350325f1fcf4698be10a92fe34bc = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @alloc_fd8a240c51a7d157fff1859e8a47dcc4, [16 x i8] c"@\00\00\00\00\00\00\00\8D\05\00\00\12\00\00\00" }>, align 8 @alloc_3caf9fa497ca40894ccfe3a48c57fd0c = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @alloc_fd8a240c51a7d157fff1859e8a47dcc4, [16 x i8] c"@\00\00\00\00\00\00\00\10\01\00\00\1B\00\00\00" }>, align 8 @alloc_895b15014da9d87fc0d7a19e527e6834 = private unnamed_addr constant [65 x i8] c"/Users/mark/Desktop/github/rust/library/core/src/alloc/layout.rs\00", align 1 @alloc_9101b43da1b38608c09e133be5802578 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @alloc_895b15014da9d87fc0d7a19e527e6834, [16 x i8] c"@\00\00\00\00\00\00\00\E0\00\00\00\12\00\00\00" }>, align 8 ; become_indirect_return::main ; Function Attrs: uwtable define hidden void @_ZN22become_indirect_return4main17h2e45147d8f3372d7E() unnamed_addr #0 personality ptr @rust_eh_personality { start: %0 = alloca [16 x i8], align 8 %1 = alloca [16 x i8], align 8 %_12 = alloca [48 x i8], align 8 %result = alloca [24 x i8], align 1 %param = alloca [8 x i8], align 8 ; invoke alloc::alloc::exchange_malloc %_2.i = invoke ptr @_ZN5alloc5alloc15exchange_malloc17h7ca7f95021990983E(i64 1, i64 1) to label %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h820fdecfcd0e7188E.exit" unwind label %cleanup.i cleanup.i: ; 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 %6 = load ptr, ptr %0, align 8 %7 = getelementptr inbounds i8, ptr %0, i64 8 %8 = load i32, ptr %7, align 8 %9 = insertvalue { ptr, i32 } poison, ptr %6, 0 %10 = insertvalue { ptr, i32 } %9, i32 %8, 1 resume { ptr, i32 } %10 "_ZN5alloc5boxed12Box$LT$T$GT$3new17h820fdecfcd0e7188E.exit": ; preds = %start store i8 0, ptr %_2.i, align 1 store ptr %_2.i, ptr %param, align 8 ; invoke become_indirect_return::dispatch invoke void @_ZN22become_indirect_return8dispatch17hd1719c44a86d65c3E(ptr sret([24 x i8]) align 1 %result, ptr align 8 %param) to label %bb2 unwind label %cleanup bb7: ; preds = %cleanup ; invoke core::ptr::drop_in_place> invoke void @"_ZN4core3ptr48drop_in_place$LT$alloc..boxed..Box$LT$u8$GT$$GT$17h687a39c3b45b768bE"(ptr align 8 %param) #14 to label %bb8 unwind label %terminate cleanup: ; preds = %bb5, %bb2, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h820fdecfcd0e7188E.exit" %11 = landingpad { ptr, i32 } cleanup %12 = extractvalue { ptr, i32 } %11, 0 %13 = extractvalue { ptr, i32 } %11, 1 store ptr %12, ptr %1, align 8 %14 = getelementptr inbounds i8, ptr %1, i64 8 store i32 %13, ptr %14, align 8 br label %bb7 bb2: ; preds = %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h820fdecfcd0e7188E.exit" ; invoke core::array::equality:: for [T; N]>::eq %_9 = invoke zeroext i1 @"_ZN4core5array8equality103_$LT$impl$u20$core..cmp..PartialEq$LT$$u5b$U$u3b$$u20$N$u5d$$GT$$u20$for$u20$$u5b$T$u3b$$u20$N$u5d$$GT$2eq17h8e856c85804f85a3E"(ptr align 1 %result, ptr align 1 @alloc_e14422676b3ab37c8bc0d74461dcf124) to label %bb3 unwind label %cleanup bb3: ; preds = %bb2 br i1 %_9, label %bb4, label %bb5 bb5: ; preds = %bb3 store ptr null, ptr %_12, align 8 ; invoke core::panicking::assert_failed invoke void @_ZN4core9panicking13assert_failed17h72017b6d938bab61E(i8 0, ptr align 1 %result, ptr align 1 @alloc_e14422676b3ab37c8bc0d74461dcf124, ptr align 8 %_12, ptr align 8 @alloc_8d0223e2d48c7097fa2705e3032b165f) #15 to label %unreachable unwind label %cleanup bb4: ; preds = %bb3 ; call core::ptr::drop_in_place> call void @"_ZN4core3ptr48drop_in_place$LT$alloc..boxed..Box$LT$u8$GT$$GT$17h687a39c3b45b768bE"(ptr align 8 %param) ret void unreachable: ; preds = %bb5 unreachable terminate: ; preds = %bb7 %15 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer ; call core::panicking::panic_in_cleanup call void @_ZN4core9panicking16panic_in_cleanup17ha989e98915fa6288E() #16 unreachable bb8: ; preds = %bb7 %16 = load ptr, ptr %1, align 8 %17 = getelementptr inbounds i8, ptr %1, i64 8 %18 = load i32, ptr %17, align 8 %19 = insertvalue { ptr, i32 } poison, ptr %16, 0 %20 = insertvalue { ptr, i32 } %19, i32 %18, 1 resume { ptr, i32 } %20 } ; become_indirect_return::dispatch ; Function Attrs: noinline uwtable define internal void @_ZN22become_indirect_return8dispatch17hd1719c44a86d65c3E(ptr sret([24 x i8]) align 1 %_0, ptr align 8 %param) unnamed_addr #1 { start: ; call become_indirect_return::op_dummy musttail call void @_ZN22become_indirect_return8op_dummy17h31e000dd5109bff4E(ptr sret([24 x i8]) align 1 %_0, ptr align 8 %param) ret void } ; become_indirect_return::op_dummy ; Function Attrs: noinline uwtable define internal void @_ZN22become_indirect_return8op_dummy17h31e000dd5109bff4E(ptr sret([24 x i8]) align 1 %_0, ptr align 8 %_param) unnamed_addr #1 { start: call void @llvm.memset.p0.i64(ptr align 1 %_0, i8 1, i64 24, i1 false) ret void } ; std::rt::lang_start ; Function Attrs: uwtable define hidden i64 @_ZN3std2rt10lang_start17h372839f17531acb1E(ptr %main, i64 %argc, ptr %argv, i8 %sigpipe) unnamed_addr #0 { start: %_7 = alloca [8 x i8], align 8 store ptr %main, ptr %_7, align 8 ; call std::rt::lang_start_internal %_0 = call i64 @_ZN3std2rt19lang_start_internal17h32b30e92f8dcf7adE(ptr align 1 %_7, ptr align 8 @vtable.0, i64 %argc, ptr %argv, i8 %sigpipe) ret i64 %_0 } ; std::rt::lang_start::{{closure}} ; Function Attrs: inlinehint uwtable define internal i32 @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h877a4a203b01f455E"(ptr align 8 %_1) unnamed_addr #2 { start: %_4 = load ptr, ptr %_1, align 8 ; call std::sys::backtrace::__rust_begin_short_backtrace call void @_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h8408a8a543c4d5ecE(ptr %_4) ; call <() as std::process::Termination>::report %self = call i8 @"_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h808cda39a902d43eE"() %_0 = zext i8 %self to i32 ret i32 %_0 } ; std::sys::backtrace::__rust_begin_short_backtrace ; Function Attrs: noinline uwtable define internal void @_ZN3std3sys9backtrace28__rust_begin_short_backtrace17h8408a8a543c4d5ecE(ptr %f) unnamed_addr #1 { start: ; call core::ops::function::FnOnce::call_once call void @_ZN4core3ops8function6FnOnce9call_once17hdcb9182bdbb4703cE(ptr %f) call void asm sideeffect "", "~{memory}"(), !srcloc !3 ret void } ; <&T as core::fmt::Debug>::fmt ; Function Attrs: uwtable define internal zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h3943394e1acc76baE"(ptr align 8 %self, ptr align 8 %f) unnamed_addr #0 { start: %_3 = load ptr, ptr %self, align 8 ; call core::array::::fmt %_0 = call zeroext i1 @"_ZN4core5array69_$LT$impl$u20$core..fmt..Debug$u20$for$u20$$u5b$T$u3b$$u20$N$u5d$$GT$3fmt17h51856615574a217eE"(ptr align 1 %_3, ptr align 8 %f) ret i1 %_0 } ; core::ops::function::FnOnce::call_once{{vtable.shim}} ; Function Attrs: inlinehint uwtable define internal i32 @"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h4187be3c78810b14E"(ptr %_1) unnamed_addr #2 { start: %_2 = alloca [0 x i8], align 1 %0 = load ptr, ptr %_1, align 8 ; call core::ops::function::FnOnce::call_once %_0 = call i32 @_ZN4core3ops8function6FnOnce9call_once17h22f99ba03456481cE(ptr %0) ret i32 %_0 } ; core::ops::function::FnOnce::call_once ; Function Attrs: inlinehint uwtable define internal i32 @_ZN4core3ops8function6FnOnce9call_once17h22f99ba03456481cE(ptr %0) unnamed_addr #2 personality ptr @rust_eh_personality { start: %1 = alloca [16 x i8], align 8 %_2 = alloca [0 x i8], align 1 %_1 = alloca [8 x i8], align 8 store ptr %0, ptr %_1, align 8 ; invoke std::rt::lang_start::{{closure}} %_0 = invoke i32 @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h877a4a203b01f455E"(ptr align 8 %_1) to label %bb1 unwind label %cleanup bb3: ; preds = %cleanup %2 = load ptr, ptr %1, align 8 %3 = getelementptr inbounds i8, ptr %1, i64 8 %4 = load i32, ptr %3, align 8 %5 = insertvalue { ptr, i32 } poison, ptr %2, 0 %6 = insertvalue { ptr, i32 } %5, i32 %4, 1 resume { ptr, i32 } %6 cleanup: ; preds = %start %7 = landingpad { ptr, i32 } cleanup %8 = extractvalue { ptr, i32 } %7, 0 %9 = extractvalue { ptr, i32 } %7, 1 store ptr %8, ptr %1, align 8 %10 = getelementptr inbounds i8, ptr %1, i64 8 store i32 %9, ptr %10, align 8 br label %bb3 bb1: ; preds = %start ret i32 %_0 } ; core::ops::function::FnOnce::call_once ; Function Attrs: inlinehint uwtable define internal void @_ZN4core3ops8function6FnOnce9call_once17hdcb9182bdbb4703cE(ptr %_1) unnamed_addr #2 { start: %_2 = alloca [0 x i8], align 1 call void %_1() ret void } ; core::ptr::drop_in_place> ; Function Attrs: uwtable define internal void @"_ZN4core3ptr48drop_in_place$LT$alloc..boxed..Box$LT$u8$GT$$GT$17h687a39c3b45b768bE"(ptr align 8 %_1) unnamed_addr #0 personality ptr @rust_eh_personality { start: %0 = alloca [16 x i8], align 8 %_6 = load ptr, ptr %_1, align 8 br label %bb3 bb3: ; preds = %start ; call as core::ops::drop::Drop>::drop call void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0e84869b79a2d18fE"(ptr align 8 %_1) ret void bb4: ; No predecessors! ; invoke as core::ops::drop::Drop>::drop invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0e84869b79a2d18fE"(ptr align 8 %_1) #14 to label %bb1 unwind label %terminate terminate: ; preds = %bb4 %1 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer ; call core::panicking::panic_in_cleanup call void @_ZN4core9panicking16panic_in_cleanup17ha989e98915fa6288E() #16 unreachable bb1: ; preds = %bb4 %2 = load ptr, ptr %0, align 8 %3 = getelementptr inbounds i8, ptr %0, i64 8 %4 = load i32, ptr %3, align 8 %5 = insertvalue { ptr, i32 } poison, ptr %2, 0 %6 = insertvalue { ptr, i32 } %5, i32 %4, 1 resume { ptr, i32 } %6 } ; core::ptr::non_null::NonNull::new_unchecked::precondition_check ; Function Attrs: inlinehint nounwind uwtable define internal void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h3643d9ab3955a097E"(ptr %ptr, ptr align 8 %0) unnamed_addr #3 { start: %_5 = alloca [16 x i8], align 8 %_3 = alloca [48 x i8], align 8 %_6 = ptrtoint ptr %ptr to i64 %1 = icmp eq i64 %_6, 0 br i1 %1, label %bb1, label %bb2 bb1: ; preds = %start %2 = getelementptr inbounds nuw { ptr, i64 }, ptr %_5, i64 0 store ptr @alloc_560a59ed819b9d9a5841f6e731c4c8e5, ptr %2, align 8 %3 = getelementptr inbounds i8, ptr %2, i64 8 store i64 210, ptr %3, align 8 store ptr %_5, ptr %_3, align 8 %4 = getelementptr inbounds i8, ptr %_3, i64 8 store i64 1, ptr %4, align 8 %5 = load ptr, ptr @anon.a3de340b33810d026d314a1937014a53.0, align 8 %6 = load i64, ptr getelementptr inbounds (i8, ptr @anon.a3de340b33810d026d314a1937014a53.0, i64 8), align 8 %7 = getelementptr inbounds i8, ptr %_3, 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 %_3, i64 16 store ptr inttoptr (i64 8 to ptr), ptr %9, align 8 %10 = getelementptr inbounds i8, ptr %9, i64 8 store i64 0, ptr %10, align 8 ; call core::panicking::panic_nounwind_fmt call void @_ZN4core9panicking18panic_nounwind_fmt17h8247812a7997d3f3E(ptr align 8 %_3, i1 zeroext false, ptr align 8 %0) #17 unreachable bb2: ; preds = %start ret void } ; core::alloc::layout::Layout::from_size_align_unchecked::precondition_check ; Function Attrs: inlinehint nounwind uwtable define internal void @_ZN4core5alloc6layout6Layout25from_size_align_unchecked18precondition_check17h9ce7f0951c90ef97E(i64 %size, i64 %align, ptr align 8 %0) unnamed_addr #3 personality ptr @rust_eh_personality { start: %_7 = alloca [16 x i8], align 8 %_5 = alloca [48 x i8], align 8 ; invoke core::alloc::layout::Layout::is_size_align_valid %_3 = invoke zeroext i1 @_ZN4core5alloc6layout6Layout19is_size_align_valid17h6ce71fa9ccd5f6dcE(i64 %size, i64 %align) to label %bb1 unwind label %terminate terminate: ; preds = %start %1 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer ; call core::panicking::panic_cannot_unwind call void @_ZN4core9panicking19panic_cannot_unwind17h0ad9d0e7ce6f1e68E() #16 unreachable bb1: ; preds = %start br i1 %_3, label %bb2, label %bb3 bb3: ; preds = %bb1 %2 = getelementptr inbounds nuw { ptr, i64 }, ptr %_7, i64 0 store ptr @alloc_1be5ea12ba708d9a11b6e93a7d387a75, ptr %2, align 8 %3 = getelementptr inbounds i8, ptr %2, i64 8 store i64 281, ptr %3, align 8 store ptr %_7, ptr %_5, align 8 %4 = getelementptr inbounds i8, ptr %_5, i64 8 store i64 1, ptr %4, align 8 %5 = load ptr, ptr @anon.a3de340b33810d026d314a1937014a53.0, align 8 %6 = load i64, ptr getelementptr inbounds (i8, ptr @anon.a3de340b33810d026d314a1937014a53.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 inttoptr (i64 8 to ptr), ptr %9, align 8 %10 = getelementptr inbounds i8, ptr %9, i64 8 store i64 0, ptr %10, align 8 ; call core::panicking::panic_nounwind_fmt call void @_ZN4core9panicking18panic_nounwind_fmt17h8247812a7997d3f3E(ptr align 8 %_5, i1 zeroext false, ptr align 8 %0) #17 unreachable bb2: ; preds = %bb1 ret void } ; core::array::::fmt ; Function Attrs: uwtable define internal zeroext i1 @"_ZN4core5array69_$LT$impl$u20$core..fmt..Debug$u20$for$u20$$u5b$T$u3b$$u20$N$u5d$$GT$3fmt17h51856615574a217eE"(ptr align 1 %self, ptr align 8 %f) unnamed_addr #0 { start: ; call <[T] as core::fmt::Debug>::fmt %_0 = call zeroext i1 @"_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..Debug$GT$3fmt17hf6db4583159cdd7dE"(ptr align 1 %self, i64 24, ptr align 8 %f) ret i1 %_0 } ; core::array::equality:: for [T; N]>::eq ; Function Attrs: inlinehint uwtable define internal zeroext i1 @"_ZN4core5array8equality103_$LT$impl$u20$core..cmp..PartialEq$LT$$u5b$U$u3b$$u20$N$u5d$$GT$$u20$for$u20$$u5b$T$u3b$$u20$N$u5d$$GT$2eq17h8e856c85804f85a3E"(ptr align 1 %self, ptr align 1 %other) unnamed_addr #2 { start: ; call >::spec_eq %_0 = call zeroext i1 @"_ZN69_$LT$T$u20$as$u20$core..array..equality..SpecArrayEq$LT$U$C$_$GT$$GT$7spec_eq17h05e837d22ddd79a7E"(ptr align 1 %self, ptr align 1 %other) ret i1 %_0 } ; core::panicking::assert_failed ; Function Attrs: cold minsize noinline noreturn optsize uwtable define internal void @_ZN4core9panicking13assert_failed17h72017b6d938bab61E(i8 %kind, ptr align 1 %0, ptr align 1 %1, ptr align 8 %args, ptr align 8 %2) unnamed_addr #4 { start: %right = alloca [8 x i8], align 8 %left = alloca [8 x i8], 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_inner17h7cc0ebb45a4cf699E(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) #15 unreachable } ; <() as std::process::Termination>::report ; Function Attrs: inlinehint uwtable define internal i8 @"_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h808cda39a902d43eE"() unnamed_addr #2 { start: ret i8 0 } ; alloc::alloc::exchange_malloc ; Function Attrs: inlinehint uwtable define internal ptr @_ZN5alloc5alloc15exchange_malloc17h7ca7f95021990983E(i64 %size, i64 %align) unnamed_addr #2 { start: %_4 = alloca [16 x i8], align 8 br label %bb4 bb4: ; preds = %start ; call core::alloc::layout::Layout::from_size_align_unchecked::precondition_check call void @_ZN4core5alloc6layout6Layout25from_size_align_unchecked18precondition_check17h9ce7f0951c90ef97E(i64 %size, i64 %align, ptr align 8 @alloc_8a62371c5fb549829f691796cc4525de) #18 br label %bb5 bb5: ; preds = %bb4 ; call alloc::alloc::Global::alloc_impl %0 = call { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17he53657d426d27acdE(ptr align 1 inttoptr (i64 1 to ptr), i64 %align, i64 %size, i1 zeroext false) %1 = extractvalue { ptr, i64 } %0, 0 %2 = extractvalue { ptr, i64 } %0, 1 store ptr %1, ptr %_4, align 8 %3 = getelementptr inbounds i8, ptr %_4, i64 8 store i64 %2, ptr %3, align 8 %4 = load ptr, ptr %_4, align 8 %5 = getelementptr inbounds i8, ptr %_4, i64 8 %6 = load i64, ptr %5, align 8 %7 = ptrtoint ptr %4 to i64 %8 = icmp eq i64 %7, 0 %_5 = select i1 %8, i64 1, i64 0 %9 = trunc nuw i64 %_5 to i1 br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb5 ; call alloc::alloc::handle_alloc_error call void @_ZN5alloc5alloc18handle_alloc_error17hee6524ee96e1709fE(i64 %align, i64 %size) #15 unreachable bb3: ; preds = %bb5 %ptr.0 = load ptr, ptr %_4, align 8 %10 = getelementptr inbounds i8, ptr %_4, i64 8 %ptr.1 = load i64, ptr %10, align 8 ret ptr %ptr.0 bb1: ; No predecessors! unreachable } ; alloc::alloc::Global::alloc_impl ; Function Attrs: inlinehint uwtable define internal { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17he53657d426d27acdE(ptr align 1 %self, i64 %layout.0, i64 %layout.1, i1 zeroext %zeroed) unnamed_addr #2 { start: %self2 = alloca [8 x i8], align 8 %self1 = alloca [8 x i8], align 8 %_10 = alloca [8 x i8], align 8 %raw_ptr = alloca [8 x i8], align 8 %_0 = alloca [16 x i8], align 8 %0 = icmp eq i64 %layout.1, 0 br i1 %0, label %bb2, label %bb1 bb2: ; preds = %start %_17 = inttoptr i64 %layout.0 to ptr %data = inttoptr i64 %layout.0 to ptr br label %bb7 bb1: ; preds = %start br i1 %zeroed, label %bb3, label %bb4 bb7: ; preds = %bb2 %_21 = inttoptr i64 %layout.0 to ptr ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h3643d9ab3955a097E"(ptr %_21, ptr align 8 @alloc_e25f350325f1fcf4698be10a92fe34bc) #18 br label %bb9 bb9: ; preds = %bb7 store ptr %data, ptr %_0, align 8 %1 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 0, ptr %1, align 8 br label %bb6 bb6: ; preds = %bb21, %bb14, %bb9 %2 = load ptr, ptr %_0, align 8 %3 = getelementptr inbounds i8, ptr %_0, i64 8 %4 = load i64, ptr %3, align 8 %5 = insertvalue { ptr, i64 } poison, ptr %2, 0 %6 = insertvalue { ptr, i64 } %5, i64 %4, 1 ret { ptr, i64 } %6 bb4: ; preds = %bb1 ; call __rustc::__rust_no_alloc_shim_is_unstable_v2 call void @_RNvCsgG40wm8spDe_7___rustc35___rust_no_alloc_shim_is_unstable_v2() #18 ; call __rustc::__rust_alloc %7 = call ptr @_RNvCsgG40wm8spDe_7___rustc12___rust_alloc(i64 %layout.1, i64 %layout.0) #18 store ptr %7, ptr %raw_ptr, align 8 br label %bb5 bb3: ; preds = %bb1 ; call __rustc::__rust_no_alloc_shim_is_unstable_v2 call void @_RNvCsgG40wm8spDe_7___rustc35___rust_no_alloc_shim_is_unstable_v2() #18 ; call __rustc::__rust_alloc_zeroed %8 = call ptr @_RNvCsgG40wm8spDe_7___rustc19___rust_alloc_zeroed(i64 %layout.1, i64 %layout.0) #18 store ptr %8, ptr %raw_ptr, align 8 br label %bb5 bb5: ; preds = %bb3, %bb4 %_35 = load ptr, ptr %raw_ptr, align 8 %9 = load ptr, ptr %raw_ptr, align 8 %_36 = ptrtoint ptr %9 to i64 %10 = icmp eq i64 %_36, 0 br i1 %10, label %bb14, label %bb15 bb14: ; preds = %bb5 store ptr null, ptr %self2, align 8 store ptr null, ptr %self1, align 8 %11 = load ptr, ptr @anon.a3de340b33810d026d314a1937014a53.0, align 8 %12 = load i64, ptr getelementptr inbounds (i8, ptr @anon.a3de340b33810d026d314a1937014a53.0, i64 8), align 8 store ptr %11, ptr %_0, align 8 %13 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %12, ptr %13, align 8 br label %bb6 bb15: ; preds = %bb5 br label %bb16 bb16: ; preds = %bb15 %_38 = load ptr, ptr %raw_ptr, align 8 ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h3643d9ab3955a097E"(ptr %_38, ptr align 8 @alloc_3caf9fa497ca40894ccfe3a48c57fd0c) #18 br label %bb18 bb18: ; preds = %bb16 store ptr %_35, ptr %self2, align 8 %v = load ptr, ptr %self2, align 8 store ptr %v, ptr %self1, align 8 %v3 = load ptr, ptr %self1, align 8 store ptr %v3, ptr %_10, align 8 %ptr = load ptr, ptr %_10, align 8 br label %bb19 bb19: ; preds = %bb18 ; call core::ptr::non_null::NonNull::new_unchecked::precondition_check call void @"_ZN4core3ptr8non_null16NonNull$LT$T$GT$13new_unchecked18precondition_check17h3643d9ab3955a097E"(ptr %ptr, ptr align 8 @alloc_e25f350325f1fcf4698be10a92fe34bc) #18 br label %bb21 bb21: ; preds = %bb19 store ptr %ptr, ptr %_0, align 8 %14 = getelementptr inbounds i8, ptr %_0, i64 8 store i64 %layout.1, ptr %14, align 8 br label %bb6 } ; ::deallocate ; Function Attrs: inlinehint uwtable define internal void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h02d865cba0c07a7cE"(ptr align 1 %self, ptr %ptr, i64 %layout.0, i64 %layout.1) unnamed_addr #2 { start: %0 = icmp eq i64 %layout.1, 0 br i1 %0, label %bb2, label %bb1 bb2: ; preds = %bb1, %start ret void bb1: ; preds = %start ; call __rustc::__rust_dealloc call void @_RNvCsgG40wm8spDe_7___rustc14___rust_dealloc(ptr %ptr, i64 %layout.1, i64 %layout.0) #18 br label %bb2 } ; >::spec_eq ; Function Attrs: uwtable define internal zeroext i1 @"_ZN69_$LT$T$u20$as$u20$core..array..equality..SpecArrayEq$LT$U$C$_$GT$$GT$7spec_eq17h05e837d22ddd79a7E"(ptr align 1 %a, ptr align 1 %b) unnamed_addr #0 { start: %0 = alloca [1 x i8], align 1 %1 = call i32 @memcmp(ptr %a, ptr %b, i64 24) %2 = icmp eq i32 %1, 0 %3 = zext i1 %2 to i8 store i8 %3, ptr %0, align 1 %4 = load i8, ptr %0, align 1 %_0 = trunc nuw i8 %4 to i1 ret i1 %_0 } ; as core::ops::drop::Drop>::drop ; Function Attrs: inlinehint uwtable define internal void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0e84869b79a2d18fE"(ptr align 8 %self) unnamed_addr #2 { start: %0 = alloca [8 x i8], align 8 %1 = alloca [8 x i8], align 8 %ptr = load ptr, ptr %self, align 8 store i64 1, ptr %1, align 8 %size = load i64, ptr %1, align 8 store i64 1, ptr %0, align 8 %align = load i64, ptr %0, align 8 br label %bb6 bb6: ; preds = %start ; call core::alloc::layout::Layout::from_size_align_unchecked::precondition_check call void @_ZN4core5alloc6layout6Layout25from_size_align_unchecked18precondition_check17h9ce7f0951c90ef97E(i64 %size, i64 %align, ptr align 8 @alloc_9101b43da1b38608c09e133be5802578) #18 br label %bb7 bb7: ; preds = %bb6 %2 = icmp eq i64 %size, 0 br i1 %2, label %bb3, label %bb1 bb3: ; preds = %bb1, %bb7 ret void bb1: ; preds = %bb7 %_7 = getelementptr inbounds i8, ptr %self, i64 8 ; call ::deallocate call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h02d865cba0c07a7cE"(ptr align 1 %_7, ptr %ptr, i64 %align, i64 %size) br label %bb3 } ; Function Attrs: nounwind uwtable declare i32 @rust_eh_personality(i32, i32, i64, ptr, ptr) unnamed_addr #5 ; core::panicking::panic_in_cleanup ; Function Attrs: cold minsize noinline noreturn nounwind optsize uwtable declare void @_ZN4core9panicking16panic_in_cleanup17ha989e98915fa6288E() unnamed_addr #6 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immarg) #7 ; std::rt::lang_start_internal ; Function Attrs: uwtable declare i64 @_ZN3std2rt19lang_start_internal17h32b30e92f8dcf7adE(ptr align 1, ptr align 8, i64, ptr, i8) unnamed_addr #0 ; core::panicking::panic_nounwind_fmt ; Function Attrs: cold noinline noreturn nounwind uwtable declare void @_ZN4core9panicking18panic_nounwind_fmt17h8247812a7997d3f3E(ptr align 8, i1 zeroext, ptr align 8) unnamed_addr #8 ; core::alloc::layout::Layout::is_size_align_valid ; Function Attrs: uwtable declare zeroext i1 @_ZN4core5alloc6layout6Layout19is_size_align_valid17h6ce71fa9ccd5f6dcE(i64, i64) unnamed_addr #0 ; core::panicking::panic_cannot_unwind ; Function Attrs: cold minsize noinline noreturn nounwind optsize uwtable declare void @_ZN4core9panicking19panic_cannot_unwind17h0ad9d0e7ce6f1e68E() unnamed_addr #6 ; <[T] as core::fmt::Debug>::fmt ; Function Attrs: uwtable declare zeroext i1 @"_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..Debug$GT$3fmt17hf6db4583159cdd7dE"(ptr align 1, i64, ptr align 8) unnamed_addr #0 ; core::panicking::assert_failed_inner ; Function Attrs: cold minsize noinline noreturn optsize uwtable declare void @_ZN4core9panicking19assert_failed_inner17h7cc0ebb45a4cf699E(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 minsize noreturn optsize uwtable declare void @_ZN5alloc5alloc18handle_alloc_error17hee6524ee96e1709fE(i64, i64) unnamed_addr #9 ; __rustc::__rust_no_alloc_shim_is_unstable_v2 ; Function Attrs: nounwind uwtable declare void @_RNvCsgG40wm8spDe_7___rustc35___rust_no_alloc_shim_is_unstable_v2() unnamed_addr #5 ; __rustc::__rust_alloc ; Function Attrs: nounwind allockind("alloc,uninitialized,aligned") allocsize(0) uwtable declare noalias ptr @_RNvCsgG40wm8spDe_7___rustc12___rust_alloc(i64, i64 allocalign) unnamed_addr #10 ; __rustc::__rust_alloc_zeroed ; Function Attrs: nounwind allockind("alloc,zeroed,aligned") allocsize(0) uwtable declare noalias ptr @_RNvCsgG40wm8spDe_7___rustc19___rust_alloc_zeroed(i64, i64 allocalign) unnamed_addr #11 ; __rustc::__rust_dealloc ; Function Attrs: nounwind allockind("free") uwtable declare void @_RNvCsgG40wm8spDe_7___rustc14___rust_dealloc(ptr allocptr, i64, i64) unnamed_addr #12 declare i32 @memcmp(ptr, ptr, i64) define i32 @main(i32 %0, ptr %1) unnamed_addr #13 { top: %2 = sext i32 %0 to i64 ; call std::rt::lang_start %3 = call i64 @_ZN3std2rt10lang_start17h372839f17531acb1E(ptr @_ZN22become_indirect_return4main17h2e45147d8f3372d7E, i64 %2, ptr %1, i8 0) %4 = trunc i64 %3 to i32 ret i32 %4 } attributes #0 = { uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="apple-m1" } attributes #1 = { noinline uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="apple-m1" } attributes #2 = { inlinehint uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="apple-m1" } attributes #3 = { inlinehint nounwind uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="apple-m1" } attributes #4 = { cold minsize noinline noreturn optsize uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="apple-m1" } attributes #5 = { nounwind uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="apple-m1" } attributes #6 = { cold minsize noinline noreturn nounwind optsize uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="apple-m1" } attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: write) } attributes #8 = { cold noinline noreturn nounwind uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="apple-m1" } attributes #9 = { cold minsize noreturn optsize uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="apple-m1" } attributes #10 = { nounwind allockind("alloc,uninitialized,aligned") allocsize(0) uwtable "alloc-family"="__rust_alloc" "alloc-variant-zeroed"="_RNvCsgG40wm8spDe_7___rustc19___rust_alloc_zeroed" "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="apple-m1" } attributes #11 = { nounwind allockind("alloc,zeroed,aligned") allocsize(0) uwtable "alloc-family"="__rust_alloc" "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="apple-m1" } attributes #12 = { nounwind allockind("free") uwtable "alloc-family"="__rust_alloc" "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="apple-m1" } attributes #13 = { "frame-pointer"="non-leaf" "target-cpu"="apple-m1" } attributes #14 = { cold } attributes #15 = { noreturn } attributes #16 = { cold noreturn nounwind } attributes #17 = { noreturn nounwind } attributes #18 = { nounwind } !llvm.module.flags = !{!0, !1} !llvm.ident = !{!2} !0 = !{i32 8, !"PIC Level", i32 2} !1 = !{i32 7, !"PIE Level", i32 2} !2 = !{!"rustc version 1.93.0-dev"} !3 = !{i64 14224888737990995}