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
Clojure
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
Helion
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
Yul (Solidity IR)
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 21.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 21.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 21.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 = 'simd_wide_sum.e3e91bc971ec0fa5-cgu.0' source_filename = "simd_wide_sum.e3e91bc971ec0fa5-cgu.0" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" %"core::array::iter::IntoIter<u8, 8>" = type { { i64, i64 }, [8 x i8] } %"core::ptr::metadata::PtrRepr<[core::mem::maybe_uninit::MaybeUninit<u8>]>" = type { [2 x i64] } %"[closure@core::iter::adapters::map::map_fold<u8, u16, u16, fn(u8) -> u16 {<u16 as core::convert::From<u8>>::from}, [closure@<u16 as core::iter::traits::accum::Sum>::sum<core::iter::adapters::map::Map<core::array::iter::IntoIter<u8, 8>, fn(u8) -> u16 {<u16 as core::convert::From<u8>>::from}>>::{closure#0}]>::{closure#0}]" = type { %"[closure@<u16 as core::iter::traits::accum::Sum>::sum<core::iter::adapters::map::Map<core::array::iter::IntoIter<u8, 8>, fn(u8) -> u16 {<u16 as core::convert::From<u8>>::from}>>::{closure#0}]", {} } %"[closure@<u16 as core::iter::traits::accum::Sum>::sum<core::iter::adapters::map::Map<core::array::iter::IntoIter<u8, 8>, fn(u8) -> u16 {<u16 as core::convert::From<u8>>::from}>>::{closure#0}]" = type {} %"core::mem::maybe_uninit::MaybeUninit<[u8; 8]>" = type { [8 x i8] } %"core::iter::adapters::map::Map<core::array::iter::IntoIter<u8, 8>, fn(u8) -> u16 {<u16 as core::convert::From<u8>>::from}>" = type { %"core::array::iter::IntoIter<u8, 8>", {} } ; <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold ; Function Attrs: nonlazybind uwtable define internal noundef i16 @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hcdce15965920ce9fE"(ptr noalias nocapture noundef align 8 dereferenceable(24) %self, i16 noundef %init) unnamed_addr #0 personality ptr @rust_eh_personality { start: %0 = alloca { ptr, i32 }, align 8 %_4 = alloca %"core::array::iter::IntoIter<u8, 8>", align 8 call void @llvm.lifetime.start.p0(i64 24, ptr %_4) call void @llvm.memcpy.p0.p0.i64(ptr align 8 %_4, ptr align 8 %self, i64 24, i1 false) ; invoke <core::array::iter::IntoIter<T,_> as core::iter::traits::iterator::Iterator>::fold %_0 = invoke noundef i16 @"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h520c4b3b8f745027E"(ptr noalias nocapture noundef align 8 dereferenceable(24) %_4, i16 noundef %init) to label %bb1 unwind label %cleanup bb5: ; preds = %cleanup br i1 false, label %bb4, label %bb2 cleanup: ; preds = %start %1 = landingpad { ptr, i32 } cleanup %2 = extractvalue { ptr, i32 } %1, 0 %3 = extractvalue { ptr, i32 } %1, 1 call void @llvm.lifetime.start.p0(i64 16, ptr %0) %4 = getelementptr inbounds { ptr, i32 }, ptr %0, i32 0, i32 0 store ptr %2, ptr %4, align 8 %5 = getelementptr inbounds { ptr, i32 }, ptr %0, i32 0, i32 1 store i32 %3, ptr %5, align 8 br label %bb5 bb1: ; preds = %start call void @llvm.lifetime.end.p0(i64 24, ptr %_4) ret i16 %_0 bb2: ; preds = %bb4, %bb5 br i1 false, label %bb6, label %bb3 bb4: ; preds = %bb5 br label %bb2 bb3: ; preds = %bb6, %bb2 %6 = load ptr, ptr %0, align 8, !noundef !3 %7 = getelementptr inbounds { ptr, i32 }, ptr %0, i32 0, i32 1 %8 = load i32, ptr %7, align 8, !noundef !3 call void @llvm.lifetime.end.p0(i64 16, ptr %0) %9 = insertvalue { ptr, i32 } poison, ptr %6, 0 %10 = insertvalue { ptr, i32 } %9, i32 %8, 1 resume { ptr, i32 } %10 bb6: ; preds = %bb2 ; invoke core::ptr::drop_in_place<core::array::iter::IntoIter<u8,8_usize>> invoke void @"_ZN4core3ptr68drop_in_place$LT$core..array..iter..IntoIter$LT$u8$C$8_usize$GT$$GT$17hfa8a20ad4decf9c3E"(ptr noalias noundef align 8 dereferenceable(24) %_4) #7 to label %bb3 unwind label %terminate terminate: ; preds = %bb6 %11 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer %12 = extractvalue { ptr, i32 } %11, 0 %13 = extractvalue { ptr, i32 } %11, 1 ; call core::panicking::panic_in_cleanup call void @_ZN4core9panicking16panic_in_cleanup17h0055b246bb836b37E() #8 unreachable } ; <core::ops::try_trait::NeverShortCircuit<T> as core::ops::try_trait::FromResidual>::from_residual ; Function Attrs: inlinehint nonlazybind uwtable define internal noundef i16 @"_ZN103_$LT$core..ops..try_trait..NeverShortCircuit$LT$T$GT$$u20$as$u20$core..ops..try_trait..FromResidual$GT$13from_residual17h52f4aae6ba6d646aE"() unnamed_addr #1 { start: unreachable } ; <core::iter::adapters::by_ref_sized::ByRefSized<I> as core::iter::traits::iterator::Iterator>::fold ; Function Attrs: inlinehint nonlazybind uwtable define internal noundef i16 @"_ZN114_$LT$core..iter..adapters..by_ref_sized..ByRefSized$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17ha6da70a8a828c92fE"(ptr noalias noundef align 8 dereferenceable(16) %0, i16 noundef %init, ptr noalias noundef nonnull align 1 %f.0, ptr noalias noundef readonly align 1 dereferenceable(8) %f.1) unnamed_addr #1 personality ptr @rust_eh_personality { start: %1 = alloca { ptr, i32 }, align 8 %_6 = alloca { ptr, ptr }, align 8 %self = alloca ptr, align 8 store ptr %0, ptr %self, align 8 %_7 = load ptr, ptr %self, align 8, !nonnull !3, !align !4, !noundef !3 call void @llvm.lifetime.start.p0(i64 16, ptr %_6) %2 = getelementptr inbounds { ptr, ptr }, ptr %_6, i32 0, i32 0 store ptr %f.0, ptr %2, align 8 %3 = getelementptr inbounds { ptr, ptr }, ptr %_6, i32 0, i32 1 store ptr %f.1, ptr %3, align 8 %4 = getelementptr inbounds { ptr, ptr }, ptr %_6, i32 0, i32 0 %5 = load ptr, ptr %4, align 8, !nonnull !3, !align !5, !noundef !3 %6 = getelementptr inbounds { ptr, ptr }, ptr %_6, i32 0, i32 1 %7 = load ptr, ptr %6, align 8, !nonnull !3, !align !5, !noundef !3 ; invoke core::iter::traits::iterator::Iterator::try_fold %_4 = invoke noundef i16 @_ZN4core4iter6traits8iterator8Iterator8try_fold17h898a0c5631792979E(ptr noalias noundef align 8 dereferenceable(16) %_7, i16 noundef %init, ptr noalias noundef nonnull align 1 %5, ptr noalias noundef readonly align 1 dereferenceable(8) %7) to label %bb1 unwind label %cleanup bb4: ; preds = %cleanup br i1 false, label %bb3, label %bb2 cleanup: ; preds = %start %8 = landingpad { ptr, i32 } cleanup %9 = extractvalue { ptr, i32 } %8, 0 %10 = extractvalue { ptr, i32 } %8, 1 call void @llvm.lifetime.start.p0(i64 16, ptr %1) %11 = getelementptr inbounds { ptr, i32 }, ptr %1, i32 0, i32 0 store ptr %9, ptr %11, align 8 %12 = getelementptr inbounds { ptr, i32 }, ptr %1, i32 0, i32 1 store i32 %10, ptr %12, align 8 br label %bb4 bb1: ; preds = %start call void @llvm.lifetime.end.p0(i64 16, ptr %_6) ret i16 %_4 bb2: ; preds = %bb3, %bb4 %13 = load ptr, ptr %1, align 8, !noundef !3 %14 = getelementptr inbounds { ptr, i32 }, ptr %1, i32 0, i32 1 %15 = load i32, ptr %14, align 8, !noundef !3 call void @llvm.lifetime.end.p0(i64 16, ptr %1) %16 = insertvalue { ptr, i32 } poison, ptr %13, 0 %17 = insertvalue { ptr, i32 } %16, i32 %15, 1 resume { ptr, i32 } %17 bb3: ; preds = %bb4 br label %bb2 } ; core::ops::function::FnMut::call_mut ; Function Attrs: inlinehint nonlazybind uwtable define internal noundef i16 @_ZN4core3ops8function5FnMut8call_mut17h96e0bf8159cbdaadE(ptr noalias noundef nonnull align 1 %_1, i8 noundef %0) unnamed_addr #1 { start: %_2 = alloca i8, align 1 store i8 %0, ptr %_2, align 1 %1 = load i8, ptr %_2, align 1, !noundef !3 ; call core::convert::num::<impl core::convert::From<u8> for u16>::from %_0 = call noundef i16 @"_ZN4core7convert3num63_$LT$impl$u20$core..convert..From$LT$u8$GT$$u20$for$u20$u16$GT$4from17hc0affdaba4ce70a1E"(i8 noundef %1) ret i16 %_0 } ; core::ops::try_trait::NeverShortCircuit<T>::wrap_mut_2::{{closure}} ; Function Attrs: inlinehint nonlazybind uwtable define internal noundef i16 @"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17h4a488ffed904cf68E"(ptr noalias noundef align 8 dereferenceable(16) %_1, i16 noundef %a, i64 noundef %b) unnamed_addr #1 { start: %_6 = alloca { i16, i64 }, align 8 %_0 = alloca i16, align 2 call void @llvm.lifetime.start.p0(i64 16, ptr %_6) store i16 %a, ptr %_6, align 8 %0 = getelementptr inbounds { i16, i64 }, ptr %_6, i32 0, i32 1 store i64 %b, ptr %0, align 8 %1 = getelementptr inbounds { i16, i64 }, ptr %_6, i32 0, i32 0 %2 = load i16, ptr %1, align 8, !noundef !3 %3 = getelementptr inbounds { i16, i64 }, ptr %_6, i32 0, i32 1 %4 = load i64, ptr %3, align 8, !noundef !3 ; call <core::array::iter::IntoIter<T,_> as core::iter::traits::iterator::Iterator>::fold::{{closure}} %_4 = call noundef i16 @"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold28_$u7b$$u7b$closure$u7d$$u7d$17haeae0b0ba99afbf0E"(ptr noalias noundef align 8 dereferenceable(16) %_1, i16 noundef %2, i64 noundef %4) call void @llvm.lifetime.end.p0(i64 16, ptr %_6) store i16 %_4, ptr %_0, align 2 %5 = load i16, ptr %_0, align 2, !noundef !3 ret i16 %5 } ; core::ptr::drop_in_place<core::array::iter::IntoIter<u8,8_usize>> ; Function Attrs: nonlazybind uwtable define internal void @"_ZN4core3ptr68drop_in_place$LT$core..array..iter..IntoIter$LT$u8$C$8_usize$GT$$GT$17hfa8a20ad4decf9c3E"(ptr noalias noundef align 8 dereferenceable(24) %_1) unnamed_addr #0 { start: ; call <core::array::iter::IntoIter<T,_> as core::ops::drop::Drop>::drop call void @"_ZN82_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h4f0faff1fcee3daaE"(ptr noalias noundef align 8 dereferenceable(24) %_1) ret void } ; core::iter::traits::iterator::Iterator::try_fold ; Function Attrs: inlinehint nonlazybind uwtable define internal noundef i16 @_ZN4core4iter6traits8iterator8Iterator8try_fold17h898a0c5631792979E(ptr noalias noundef align 8 dereferenceable(16) %self, i16 noundef %init, ptr noalias noundef nonnull align 1 %0, ptr noalias noundef readonly align 1 dereferenceable(8) %1) unnamed_addr #1 personality ptr @rust_eh_personality { start: %2 = alloca { ptr, i32 }, align 8 %_17 = alloca i8, align 1 %_11 = alloca { i16, i64 }, align 8 %_8 = alloca i16, align 2 %_5 = alloca { i64, i64 }, align 8 %accum = alloca i16, align 2 %_0 = alloca i16, align 2 %f = alloca { ptr, ptr }, align 8 %3 = getelementptr inbounds { ptr, ptr }, ptr %f, i32 0, i32 0 store ptr %0, ptr %3, align 8 %4 = getelementptr inbounds { ptr, ptr }, ptr %f, i32 0, i32 1 store ptr %1, ptr %4, align 8 call void @llvm.lifetime.start.p0(i64 2, ptr %accum) store i8 1, ptr %_17, align 1 store i16 %init, ptr %accum, align 2 br label %bb1 bb1: ; preds = %bb6, %start call void @llvm.lifetime.start.p0(i64 16, ptr %_5) ; invoke <core::ops::index_range::IndexRange as core::iter::traits::iterator::Iterator>::next %5 = invoke { i64, i64 } @"_ZN93_$LT$core..ops..index_range..IndexRange$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5fc193dd32c10447E"(ptr noalias noundef align 8 dereferenceable(16) %self) to label %bb2 unwind label %cleanup bb17: ; preds = %cleanup %6 = load i8, ptr %_17, align 1, !range !6, !noundef !3 %7 = trunc i8 %6 to i1 br i1 %7, label %bb16, label %bb14 cleanup: ; preds = %bb11, %bb8, %bb4, %bb3, %bb1 %8 = landingpad { ptr, i32 } cleanup %9 = extractvalue { ptr, i32 } %8, 0 %10 = extractvalue { ptr, i32 } %8, 1 call void @llvm.lifetime.start.p0(i64 16, ptr %2) %11 = getelementptr inbounds { ptr, i32 }, ptr %2, i32 0, i32 0 store ptr %9, ptr %11, align 8 %12 = getelementptr inbounds { ptr, i32 }, ptr %2, i32 0, i32 1 store i32 %10, ptr %12, align 8 br label %bb17 bb2: ; preds = %bb1 store { i64, i64 } %5, ptr %_5, align 8 %_6 = load i64, ptr %_5, align 8, !range !7, !noundef !3 %13 = icmp eq i64 %_6, 1 br i1 %13, label %bb3, label %bb10 bb3: ; preds = %bb2 %14 = getelementptr inbounds { i64, i64 }, ptr %_5, i32 0, i32 1 %x = load i64, ptr %14, align 8, !noundef !3 call void @llvm.lifetime.start.p0(i64 2, ptr %_8) call void @llvm.lifetime.start.p0(i64 16, ptr %_11) store i8 0, ptr %_17, align 1 %_12 = load i16, ptr %accum, align 2, !noundef !3 store i16 %_12, ptr %_11, align 8 %15 = getelementptr inbounds { i16, i64 }, ptr %_11, i32 0, i32 1 store i64 %x, ptr %15, align 8 %16 = getelementptr inbounds { i16, i64 }, ptr %_11, i32 0, i32 0 %17 = load i16, ptr %16, align 8, !noundef !3 %18 = getelementptr inbounds { i16, i64 }, ptr %_11, i32 0, i32 1 %19 = load i64, ptr %18, align 8, !noundef !3 ; invoke core::ops::try_trait::NeverShortCircuit<T>::wrap_mut_2::{{closure}} %_9 = invoke noundef i16 @"_ZN4core3ops9try_trait26NeverShortCircuit$LT$T$GT$10wrap_mut_228_$u7b$$u7b$closure$u7d$$u7d$17h4a488ffed904cf68E"(ptr noalias noundef align 8 dereferenceable(16) %f, i16 noundef %17, i64 noundef %19) to label %bb4 unwind label %cleanup bb10: ; preds = %bb2 br label %bb11 bb4: ; preds = %bb3 call void @llvm.lifetime.end.p0(i64 16, ptr %_11) ; invoke <core::ops::try_trait::NeverShortCircuit<T> as core::ops::try_trait::Try>::branch %20 = invoke noundef i16 @"_ZN94_$LT$core..ops..try_trait..NeverShortCircuit$LT$T$GT$$u20$as$u20$core..ops..try_trait..Try$GT$6branch17hab32971ff9e4d7c4E"(i16 noundef %_9) to label %bb5 unwind label %cleanup bb5: ; preds = %bb4 store i16 %20, ptr %_8, align 2 switch i64 0, label %bb7 [ i64 0, label %bb6 i64 1, label %bb8 ] bb7: ; preds = %bb5 unreachable bb6: ; preds = %bb5 %val = load i16, ptr %_8, align 2, !noundef !3 store i8 1, ptr %_17, align 1 store i16 %val, ptr %accum, align 2 call void @llvm.lifetime.end.p0(i64 2, ptr %_8) call void @llvm.lifetime.end.p0(i64 16, ptr %_5) br label %bb1 bb8: ; preds = %bb5 ; invoke <core::ops::try_trait::NeverShortCircuit<T> as core::ops::try_trait::FromResidual>::from_residual %21 = invoke noundef i16 @"_ZN103_$LT$core..ops..try_trait..NeverShortCircuit$LT$T$GT$$u20$as$u20$core..ops..try_trait..FromResidual$GT$13from_residual17h52f4aae6ba6d646aE"() to label %bb9 unwind label %cleanup bb9: ; preds = %bb8 store i16 %21, ptr %_0, align 2 call void @llvm.lifetime.end.p0(i64 2, ptr %_8) call void @llvm.lifetime.end.p0(i64 16, ptr %_5) call void @llvm.lifetime.end.p0(i64 2, ptr %accum) br label %bb13 bb13: ; preds = %bb12, %bb9 %22 = load i16, ptr %_0, align 2, !noundef !3 ret i16 %22 bb11: ; preds = %bb10 call void @llvm.lifetime.end.p0(i64 16, ptr %_5) store i8 0, ptr %_17, align 1 %_16 = load i16, ptr %accum, align 2, !noundef !3 ; invoke <core::ops::try_trait::NeverShortCircuit<T> as core::ops::try_trait::Try>::from_output %23 = invoke noundef i16 @"_ZN94_$LT$core..ops..try_trait..NeverShortCircuit$LT$T$GT$$u20$as$u20$core..ops..try_trait..Try$GT$11from_output17h8bbacef0968aeb01E"(i16 noundef %_16) to label %bb12 unwind label %cleanup bb12: ; preds = %bb11 store i16 %23, ptr %_0, align 2 call void @llvm.lifetime.end.p0(i64 2, ptr %accum) br label %bb13 bb14: ; preds = %bb16, %bb17 %24 = load ptr, ptr %2, align 8, !noundef !3 %25 = getelementptr inbounds { ptr, i32 }, ptr %2, i32 0, i32 1 %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 bb16: ; preds = %bb17 br label %bb14 } ; core::iter::adapters::map::map_fold::{{closure}} ; Function Attrs: inlinehint nonlazybind uwtable define internal noundef i16 @"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf03104ebe445effcE"(ptr noalias noundef nonnull align 1 %_1, i16 noundef %acc, i8 noundef %elt) unnamed_addr #1 personality ptr @rust_eh_personality { start: %0 = alloca { ptr, i32 }, align 8 %_10 = alloca i8, align 1 %_9 = alloca i8, align 1 %_5 = alloca { i16, i16 }, align 2 call void @llvm.lifetime.start.p0(i64 4, ptr %_5) store i8 1, ptr %_10, align 1 call void @llvm.lifetime.start.p0(i64 1, ptr %_9) store i8 %elt, ptr %_9, align 1 %1 = load i8, ptr %_9, align 1, !noundef !3 ; invoke core::ops::function::FnMut::call_mut %_7 = invoke noundef i16 @_ZN4core3ops8function5FnMut8call_mut17h96e0bf8159cbdaadE(ptr noalias noundef nonnull align 1 %_1, i8 noundef %1) to label %bb1 unwind label %cleanup bb5: ; preds = %cleanup %2 = load i8, ptr %_10, align 1, !range !6, !noundef !3 %3 = trunc i8 %2 to i1 br i1 %3, label %bb4, label %bb3 cleanup: ; preds = %bb1, %start %4 = landingpad { ptr, i32 } cleanup %5 = extractvalue { ptr, i32 } %4, 0 %6 = extractvalue { ptr, i32 } %4, 1 call void @llvm.lifetime.start.p0(i64 16, ptr %0) %7 = getelementptr inbounds { ptr, i32 }, ptr %0, i32 0, i32 0 store ptr %5, ptr %7, align 8 %8 = getelementptr inbounds { ptr, i32 }, ptr %0, i32 0, i32 1 store i32 %6, ptr %8, align 8 br label %bb5 bb1: ; preds = %start call void @llvm.lifetime.end.p0(i64 1, ptr %_9) store i8 0, ptr %_10, align 1 store i16 %acc, ptr %_5, align 2 %9 = getelementptr inbounds { i16, i16 }, ptr %_5, i32 0, i32 1 store i16 %_7, ptr %9, align 2 %10 = getelementptr inbounds { i16, i16 }, ptr %_5, i32 0, i32 0 %11 = load i16, ptr %10, align 2, !noundef !3 %12 = getelementptr inbounds { i16, i16 }, ptr %_5, i32 0, i32 1 %13 = load i16, ptr %12, align 2, !noundef !3 ; invoke <u16 as core::iter::traits::accum::Sum>::sum::{{closure}} %_0 = invoke noundef i16 @"_ZN54_$LT$u16$u20$as$u20$core..iter..traits..accum..Sum$GT$3sum28_$u7b$$u7b$closure$u7d$$u7d$17h74c667ef77bd32baE"(ptr noalias noundef nonnull align 1 %_1, i16 noundef %11, i16 noundef %13) to label %bb2 unwind label %cleanup bb2: ; preds = %bb1 call void @llvm.lifetime.end.p0(i64 4, ptr %_5) ret i16 %_0 bb3: ; preds = %bb4, %bb5 %14 = load ptr, ptr %0, align 8, !noundef !3 %15 = getelementptr inbounds { ptr, i32 }, ptr %0, i32 0, i32 1 %16 = load i32, ptr %15, align 8, !noundef !3 call void @llvm.lifetime.end.p0(i64 16, ptr %0) %17 = insertvalue { ptr, i32 } poison, ptr %14, 0 %18 = insertvalue { ptr, i32 } %17, i32 %16, 1 resume { ptr, i32 } %18 bb4: ; preds = %bb5 br label %bb3 } ; core::array::iter::IntoIter<T,_>::as_mut_slice ; Function Attrs: nonlazybind uwtable define internal { ptr, i64 } @"_ZN4core5array4iter21IntoIter$LT$T$C$_$GT$12as_mut_slice17h70bb89b9269271eaE"(ptr noalias noundef align 8 dereferenceable(24) %self) unnamed_addr #0 { start: %_21 = alloca { ptr, i64 }, align 8 %_20 = alloca %"core::ptr::metadata::PtrRepr<[core::mem::maybe_uninit::MaybeUninit<u8>]>", align 8 %_3 = getelementptr inbounds %"core::array::iter::IntoIter<u8, 8>", ptr %self, i32 0, i32 1 %index = load i64, ptr %self, align 8, !noundef !3 %0 = getelementptr inbounds { i64, i64 }, ptr %self, i32 0, i32 1 %index1 = load i64, ptr %0, align 8, !noundef !3 %data = getelementptr inbounds i8, ptr %_3, i64 %index %len = sub nuw i64 %index1, %index call void @llvm.lifetime.start.p0(i64 16, ptr %_20) call void @llvm.lifetime.start.p0(i64 16, ptr %_21) store ptr %data, ptr %_21, align 8 %1 = getelementptr inbounds { ptr, i64 }, ptr %_21, i32 0, i32 1 store i64 %len, ptr %1, align 8 %2 = getelementptr inbounds { ptr, i64 }, ptr %_21, i32 0, i32 0 %3 = load ptr, ptr %2, align 8, !noundef !3 %4 = getelementptr inbounds { ptr, i64 }, ptr %_21, i32 0, i32 1 %5 = load i64, ptr %4, align 8, !noundef !3 %6 = getelementptr inbounds { ptr, i64 }, ptr %_20, i32 0, i32 0 store ptr %3, ptr %6, align 8 %7 = getelementptr inbounds { ptr, i64 }, ptr %_20, i32 0, i32 1 store i64 %5, ptr %7, align 8 call void @llvm.lifetime.end.p0(i64 16, ptr %_21) %8 = getelementptr inbounds { ptr, i64 }, ptr %_20, i32 0, i32 0 %slice.0 = load ptr, ptr %8, align 8, !noundef !3 %9 = getelementptr inbounds { ptr, i64 }, ptr %_20, i32 0, i32 1 %slice.1 = load i64, ptr %9, align 8, !noundef !3 call void @llvm.lifetime.end.p0(i64 16, ptr %_20) %10 = insertvalue { ptr, i64 } poison, ptr %slice.0, 0 %11 = insertvalue { ptr, i64 } %10, i64 %slice.1, 1 ret { ptr, i64 } %11 } ; core::convert::num::<impl core::convert::From<u8> for u16>::from ; Function Attrs: alwaysinline nonlazybind uwtable define internal noundef i16 @"_ZN4core7convert3num63_$LT$impl$u20$core..convert..From$LT$u8$GT$$u20$for$u20$u16$GT$4from17hc0affdaba4ce70a1E"(i8 noundef %small) unnamed_addr #2 { start: %_0 = zext i8 %small to i16 ret i16 %_0 } ; <u16 as core::iter::traits::accum::Sum>::sum::{{closure}} ; Function Attrs: inlinehint nonlazybind uwtable define internal noundef i16 @"_ZN54_$LT$u16$u20$as$u20$core..iter..traits..accum..Sum$GT$3sum28_$u7b$$u7b$closure$u7d$$u7d$17h74c667ef77bd32baE"(ptr noalias noundef nonnull align 1 %_1, i16 noundef %a, i16 noundef %b) unnamed_addr #1 { start: %0 = call { i16, i1 } @llvm.uadd.with.overflow.i16(i16 %a, i16 %b) %_4.0 = extractvalue { i16, i1 } %0, 0 %_4.1 = extractvalue { i16, i1 } %0, 1 ret i16 %_4.0 } ; <core::array::iter::IntoIter<T,_> as core::ops::drop::Drop>::drop ; Function Attrs: nonlazybind uwtable define internal void @"_ZN82_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h4f0faff1fcee3daaE"(ptr noalias noundef align 8 dereferenceable(24) %self) unnamed_addr #0 { start: ; call core::array::iter::IntoIter<T,_>::as_mut_slice %0 = call { ptr, i64 } @"_ZN4core5array4iter21IntoIter$LT$T$C$_$GT$12as_mut_slice17h70bb89b9269271eaE"(ptr noalias noundef align 8 dereferenceable(24) %self) %_3.0 = extractvalue { ptr, i64 } %0, 0 %_3.1 = extractvalue { ptr, i64 } %0, 1 ret void } ; <core::ops::index_range::IndexRange as core::iter::traits::iterator::Iterator>::next ; Function Attrs: inlinehint nonlazybind uwtable define internal { i64, i64 } @"_ZN93_$LT$core..ops..index_range..IndexRange$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5fc193dd32c10447E"(ptr noalias noundef align 8 dereferenceable(16) %0) unnamed_addr #1 { start: %_0 = alloca { i64, i64 }, align 8 %self = alloca ptr, align 8 store ptr %0, ptr %self, align 8 %self1 = load ptr, ptr %self, align 8, !nonnull !3, !align !4, !noundef !3 %1 = getelementptr inbounds { i64, i64 }, ptr %self1, i32 0, i32 1 %_8 = load i64, ptr %1, align 8, !noundef !3 %_9 = load i64, ptr %self1, align 8, !noundef !3 %_3 = sub nuw i64 %_8, %_9 %_2 = icmp ugt i64 %_3, 0 br i1 %_2, label %bb1, label %bb2 bb2: ; preds = %start store i64 0, ptr %_0, align 8 br label %bb3 bb1: ; preds = %start %self2 = load ptr, ptr %self, align 8, !nonnull !3, !align !4, !noundef !3 %value = load i64, ptr %self2, align 8, !noundef !3 %_10 = add nuw i64 %value, 1 store i64 %_10, ptr %self2, align 8 %2 = getelementptr inbounds { i64, i64 }, ptr %_0, i32 0, i32 1 store i64 %value, ptr %2, align 8 store i64 1, ptr %_0, align 8 br label %bb3 bb3: ; preds = %bb1, %bb2 %3 = getelementptr inbounds { i64, i64 }, ptr %_0, i32 0, i32 0 %4 = load i64, ptr %3, align 8, !range !7, !noundef !3 %5 = getelementptr inbounds { i64, i64 }, ptr %_0, i32 0, i32 1 %6 = load i64, ptr %5, align 8 %7 = insertvalue { i64, i64 } poison, i64 %4, 0 %8 = insertvalue { i64, i64 } %7, i64 %6, 1 ret { i64, i64 } %8 } ; <core::ops::try_trait::NeverShortCircuit<T> as core::ops::try_trait::Try>::from_output ; 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$11from_output17h8bbacef0968aeb01E"(i16 noundef %x) unnamed_addr #1 { start: %_0 = alloca i16, align 2 store i16 %x, ptr %_0, align 2 %0 = load i16, ptr %_0, align 2, !noundef !3 ret i16 %0 } ; <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$6branch17hab32971ff9e4d7c4E"(i16 noundef %self) unnamed_addr #1 { 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 } ; <core::array::iter::IntoIter<T,_> as core::iter::traits::iterator::Iterator>::fold ; Function Attrs: inlinehint nonlazybind uwtable define internal noundef i16 @"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h520c4b3b8f745027E"(ptr noalias nocapture noundef align 8 dereferenceable(24) %self, i16 noundef %init) unnamed_addr #1 personality ptr @rust_eh_personality { start: %0 = alloca { ptr, i32 }, align 8 %_7 = alloca { ptr, ptr }, align 8 %_5 = alloca ptr, align 8 %fold = alloca %"[closure@core::iter::adapters::map::map_fold<u8, u16, u16, fn(u8) -> u16 {<u16 as core::convert::From<u8>>::from}, [closure@<u16 as core::iter::traits::accum::Sum>::sum<core::iter::adapters::map::Map<core::array::iter::IntoIter<u8, 8>, fn(u8) -> u16 {<u16 as core::convert::From<u8>>::from}>>::{closure#0}]>::{closure#0}]", align 1 call void @llvm.lifetime.start.p0(i64 8, ptr %_5) store ptr %self, ptr %_5, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr %_7) %_9 = getelementptr inbounds %"core::array::iter::IntoIter<u8, 8>", ptr %self, i32 0, i32 1 store ptr %fold, ptr %_7, align 8 %1 = getelementptr inbounds { ptr, ptr }, ptr %_7, i32 0, i32 1 store ptr %_9, ptr %1, align 8 %2 = load ptr, ptr %_5, align 8, !nonnull !3, !align !4, !noundef !3 %3 = getelementptr inbounds { ptr, ptr }, ptr %_7, i32 0, i32 0 %4 = load ptr, ptr %3, align 8, !nonnull !3, !align !5, !noundef !3 %5 = getelementptr inbounds { ptr, ptr }, ptr %_7, i32 0, i32 1 %6 = load ptr, ptr %5, align 8, !nonnull !3, !align !5, !noundef !3 ; invoke <core::iter::adapters::by_ref_sized::ByRefSized<I> as core::iter::traits::iterator::Iterator>::fold %_0 = invoke noundef i16 @"_ZN114_$LT$core..iter..adapters..by_ref_sized..ByRefSized$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17ha6da70a8a828c92fE"(ptr noalias noundef align 8 dereferenceable(16) %2, i16 noundef %init, ptr noalias noundef nonnull align 1 %4, ptr noalias noundef readonly align 1 dereferenceable(8) %6) to label %bb1 unwind label %cleanup bb4: ; preds = %cleanup br label %bb5 cleanup: ; preds = %start %7 = landingpad { ptr, i32 } cleanup %8 = extractvalue { ptr, i32 } %7, 0 %9 = extractvalue { ptr, i32 } %7, 1 call void @llvm.lifetime.start.p0(i64 16, ptr %0) %10 = getelementptr inbounds { ptr, i32 }, ptr %0, i32 0, i32 0 store ptr %8, ptr %10, align 8 %11 = getelementptr inbounds { ptr, i32 }, ptr %0, i32 0, i32 1 store i32 %9, ptr %11, align 8 br label %bb4 bb1: ; preds = %start call void @llvm.lifetime.end.p0(i64 16, ptr %_7) call void @llvm.lifetime.end.p0(i64 8, ptr %_5) br label %bb2 bb2: ; preds = %bb1 ; call core::ptr::drop_in_place<core::array::iter::IntoIter<u8,8_usize>> call void @"_ZN4core3ptr68drop_in_place$LT$core..array..iter..IntoIter$LT$u8$C$8_usize$GT$$GT$17hfa8a20ad4decf9c3E"(ptr noalias noundef align 8 dereferenceable(24) %self) ret i16 %_0 bb5: ; preds = %bb4 ; invoke core::ptr::drop_in_place<core::array::iter::IntoIter<u8,8_usize>> invoke void @"_ZN4core3ptr68drop_in_place$LT$core..array..iter..IntoIter$LT$u8$C$8_usize$GT$$GT$17hfa8a20ad4decf9c3E"(ptr noalias noundef align 8 dereferenceable(24) %self) #7 to label %bb6 unwind label %terminate terminate: ; preds = %bb5 %12 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer %13 = extractvalue { ptr, i32 } %12, 0 %14 = extractvalue { ptr, i32 } %12, 1 ; call core::panicking::panic_in_cleanup call void @_ZN4core9panicking16panic_in_cleanup17h0055b246bb836b37E() #8 unreachable bb6: ; preds = %bb5 %15 = load ptr, ptr %0, align 8, !noundef !3 %16 = getelementptr inbounds { ptr, i32 }, ptr %0, i32 0, i32 1 %17 = load i32, ptr %16, align 8, !noundef !3 call void @llvm.lifetime.end.p0(i64 16, ptr %0) %18 = insertvalue { ptr, i32 } poison, ptr %15, 0 %19 = insertvalue { ptr, i32 } %18, i32 %17, 1 resume { ptr, i32 } %19 } ; <core::array::iter::IntoIter<T,_> as core::iter::traits::iterator::Iterator>::fold::{{closure}} ; Function Attrs: inlinehint nonlazybind uwtable define internal noundef i16 @"_ZN99_$LT$core..array..iter..IntoIter$LT$T$C$_$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold28_$u7b$$u7b$closure$u7d$$u7d$17haeae0b0ba99afbf0E"(ptr noalias noundef align 8 dereferenceable(16) %_1, i16 noundef %acc, i64 noundef %idx) unnamed_addr #1 personality ptr @rust_eh_personality { start: %0 = alloca { ptr, i32 }, align 8 %_4 = alloca { i16, i8 }, align 2 %_8 = load ptr, ptr %_1, align 8, !nonnull !3, !align !5, !noundef !3 call void @llvm.lifetime.start.p0(i64 4, ptr %_4) %1 = getelementptr inbounds { ptr, ptr }, ptr %_1, i32 0, i32 1 %_9 = load ptr, ptr %1, align 8, !nonnull !3, !align !5, !noundef !3 %self = getelementptr inbounds i8, ptr %_9, i64 %idx %_6 = load i8, ptr %self, align 1, !noundef !3 store i16 %acc, ptr %_4, align 2 %2 = getelementptr inbounds { i16, i8 }, ptr %_4, i32 0, i32 1 store i8 %_6, ptr %2, align 2 %3 = getelementptr inbounds { i16, i8 }, ptr %_4, i32 0, i32 0 %4 = load i16, ptr %3, align 2, !noundef !3 %5 = getelementptr inbounds { i16, i8 }, ptr %_4, i32 0, i32 1 %6 = load i8, ptr %5, align 2, !noundef !3 ; invoke core::iter::adapters::map::map_fold::{{closure}} %_0 = invoke noundef i16 @"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17hf03104ebe445effcE"(ptr noalias noundef nonnull align 1 %_8, i16 noundef %4, i8 noundef %6) to label %bb1 unwind label %cleanup bb4: ; preds = %cleanup br i1 false, label %bb3, label %bb2 cleanup: ; preds = %start %7 = landingpad { ptr, i32 } cleanup %8 = extractvalue { ptr, i32 } %7, 0 %9 = extractvalue { ptr, i32 } %7, 1 call void @llvm.lifetime.start.p0(i64 16, ptr %0) %10 = getelementptr inbounds { ptr, i32 }, ptr %0, i32 0, i32 0 store ptr %8, ptr %10, align 8 %11 = getelementptr inbounds { ptr, i32 }, ptr %0, i32 0, i32 1 store i32 %9, ptr %11, align 8 br label %bb4 bb1: ; preds = %start call void @llvm.lifetime.end.p0(i64 4, ptr %_4) ret i16 %_0 bb2: ; preds = %bb3, %bb4 %12 = load ptr, ptr %0, align 8, !noundef !3 %13 = getelementptr inbounds { ptr, i32 }, ptr %0, i32 0, i32 1 %14 = load i32, ptr %13, align 8, !noundef !3 call void @llvm.lifetime.end.p0(i64 16, ptr %0) %15 = insertvalue { ptr, i32 } poison, ptr %12, 0 %16 = insertvalue { ptr, i32 } %15, i32 %14, 1 resume { ptr, i32 } %16 bb3: ; preds = %bb4 br label %bb2 } ; Function Attrs: nonlazybind uwtable define noundef i16 @wider_reduce_into_iter(ptr noalias nocapture noundef align 8 dereferenceable(8) %x) unnamed_addr #0 { start: %slot = alloca [8 x i8], align 1 %data = alloca [8 x i8], align 1 %tmp3 = alloca <8 x i8>, align 8 %self2 = alloca %"core::mem::maybe_uninit::MaybeUninit<[u8; 8]>", align 1 %tmp = alloca %"core::mem::maybe_uninit::MaybeUninit<[u8; 8]>", align 1 %self1 = alloca %"core::array::iter::IntoIter<u8, 8>", align 8 %self = alloca %"core::iter::adapters::map::Map<core::array::iter::IntoIter<u8, 8>, fn(u8) -> u16 {<u16 as core::convert::From<u8>>::from}>", align 8 call void @llvm.lifetime.start.p0(i64 24, ptr %self) call void @llvm.lifetime.start.p0(i64 24, ptr %self1) call void @llvm.lifetime.start.p0(i64 8, ptr %tmp) call void @llvm.lifetime.start.p0(i64 8, ptr %tmp3) %0 = load <8 x i8>, ptr %x, align 8 store <8 x i8> %0, ptr %tmp3, align 8 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %tmp, ptr align 1 %tmp3, i64 8, i1 false) call void @llvm.lifetime.end.p0(i64 8, ptr %tmp3) call void @llvm.lifetime.start.p0(i64 8, ptr %self2) call void @llvm.memcpy.p0.p0.i64(ptr align 1 %self2, ptr align 1 %tmp, i64 8, i1 false) %1 = load <8 x i8>, ptr %self2, align 1 store <8 x i8> %1, ptr %slot, align 1 call void @llvm.lifetime.end.p0(i64 8, ptr %self2) call void @llvm.lifetime.end.p0(i64 8, ptr %tmp) call void @llvm.lifetime.start.p0(i64 8, ptr %data) call void @llvm.memcpy.p0.p0.i64(ptr align 1 %data, ptr align 1 %slot, i64 8, i1 false) %2 = getelementptr inbounds %"core::array::iter::IntoIter<u8, 8>", ptr %self1, i32 0, i32 1 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2, ptr align 1 %data, i64 8, i1 false) %3 = getelementptr inbounds { i64, i64 }, ptr %self1, i32 0, i32 0 store i64 0, ptr %3, align 8 %4 = getelementptr inbounds { i64, i64 }, ptr %self1, i32 0, i32 1 store i64 8, ptr %4, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr %data) call void @llvm.memcpy.p0.p0.i64(ptr align 8 %self, ptr align 8 %self1, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr %self1) ; call <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold %_0 = call noundef i16 @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hcdce15965920ce9fE"(ptr noalias nocapture noundef align 8 dereferenceable(24) %self, i16 noundef 0) call void @llvm.lifetime.end.p0(i64 24, ptr %self) ret i16 %_0 } ; Function Attrs: nonlazybind uwtable declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #0 ; 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) #3 ; core::panicking::panic_in_cleanup ; Function Attrs: cold noinline noreturn nounwind nonlazybind uwtable declare void @_ZN4core9panicking16panic_in_cleanup17h0055b246bb836b37E() unnamed_addr #4 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare { i16, i1 } @llvm.uadd.with.overflow.i16(i16, i16) #5 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #6 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #6 attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { alwaysinline nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #4 = { cold noinline noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #6 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #7 = { noinline } attributes #8 = { noinline 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.74.0-dev"} !3 = !{} !4 = !{i64 8} !5 = !{i64 1} !6 = !{i8 0, i8 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