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
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 = '/run/media/qqwy/Serendipity/Programming/Personal/roc/roc/examples/hello-world/main.ll' source_filename = "builtins-host" 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" %"?usize" = type { i64, i1 } %str.RocStr = type { i8*, i64, i64 } %"[]u8" = type { i8*, i64 } %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)" = type { %"[]u8", i64 } %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)" = type { %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* } %std.fmt.FormatOptions = type { %"?usize", %"?usize", i2, i8 } @0 = internal unnamed_addr constant { %"?usize", %"?usize", i2, <{ i8, [6 x i8] }> } { %"?usize" { i64 undef, i1 false }, %"?usize" { i64 undef, i1 false }, i2 -2, <{ i8, [6 x i8] }> <{ i8 32, [6 x i8] undef }> }, align 8 @_Error_message_1012005107526490057 = private unnamed_addr constant [29 x i8] c"integer addition overflowed!\00", align 1 @_str_literal_4605642985354305011 = private unnamed_addr constant [57 x i8] c"\00\00\00\00\00\00\00\00The result of the addition was successful and is ", align 8 @_str_literal_13338901839589407859 = private unnamed_addr constant [54 x i8] c"\00\00\00\00\00\00\00\00Calculating the result of addition has failed\0A", align 8 ; Function Attrs: argmemonly nofree nounwind willreturn declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #0 ; Function Attrs: nobuiltin nounwind define internal void @roc_builtins.str.concat(%str.RocStr* noalias nocapture nonnull sret(%str.RocStr) %arg, %str.RocStr* nocapture nonnull readonly byval(%str.RocStr) align 8 %arg1, %str.RocStr* nocapture nonnull readonly byval(%str.RocStr) align 8 %arg2) local_unnamed_addr #1 { Entry: %result.i = alloca %str.RocStr, align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !2) %i = bitcast %str.RocStr* %result.i to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %i) %.idx.i.i.i = getelementptr %str.RocStr, %str.RocStr* %arg1, i64 0, i32 2 %.idx.val.i.i.i = load i64, i64* %.idx.i.i.i, align 8, !noalias !2 %i3 = icmp slt i64 %.idx.val.i.i.i, 0 %i4 = lshr i64 %.idx.val.i.i.i, 56 %i5 = xor i64 %i4, 128 %i6 = getelementptr inbounds %str.RocStr, %str.RocStr* %arg1, i64 0, i32 1 %i7 = load i64, i64* %i6, align 8 %common.ret.op.i.i.i = select i1 %i3, i64 %i5, i64 %i7 %i8 = icmp eq i64 %common.ret.op.i.i.i, 0 br i1 %i8, label %Then.i, label %Else.i Then.i: ; preds = %Entry tail call void @llvm.experimental.noalias.scope.decl(metadata !5) #8 %.idx.i.i = getelementptr %str.RocStr, %str.RocStr* %arg2, i64 0, i32 2 %.idx.val.i.i = load i64, i64* %.idx.i.i, align 8, !noalias !8 %i9 = icmp slt i64 %.idx.val.i.i, 0 br i1 %i9, label %Then.i.i, label %Else.i.i Then.i.i: ; preds = %Then.i %i10 = bitcast %str.RocStr* %arg2 to i8* %i11 = bitcast %str.RocStr* %arg to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %i11, i8* noundef nonnull align 8 dereferenceable(24) %i10, i64 24, i1 false) #8 br label %str.strConcat.exit Else.i.i: ; preds = %Then.i %i12 = getelementptr inbounds %str.RocStr, %str.RocStr* %arg2, i64 0, i32 1 %i13 = load i64, i64* %i12, align 8, !noalias !8 %i14 = add nuw i64 %i13, 8 %i15 = tail call i8* @roc_alloc(i64 %i14, i32 8) #9, !noalias !9 %i16 = icmp ne i8* %i15, null tail call void @llvm.assume(i1 %i16) #8 %i17 = getelementptr inbounds i8, i8* %i15, i64 8 %i18 = bitcast i8* %i15 to i64* store i64 -9223372036854775808, i64* %i18, align 8, !noalias !9 %i19 = getelementptr inbounds %str.RocStr, %str.RocStr* %arg2, i64 0, i32 0 %i20 = load i8*, i8** %i19, align 8, !noalias !8 tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 %i17, i8* align 1 %i20, i64 %i13, i1 false) #8, !noalias !8 %new_str.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %str.RocStr, %str.RocStr* %arg, i64 0, i32 0 store i8* %i17, i8** %new_str.sroa.0.0..sroa_idx.i.i, align 8, !alias.scope !8 %new_str.sroa.3.0..sroa_idx1.i.i = getelementptr inbounds %str.RocStr, %str.RocStr* %arg, i64 0, i32 1 store i64 %i13, i64* %new_str.sroa.3.0..sroa_idx1.i.i, align 8, !alias.scope !8 %new_str.sroa.4.0..sroa_idx2.i.i = getelementptr inbounds %str.RocStr, %str.RocStr* %arg, i64 0, i32 2 store i64 %i13, i64* %new_str.sroa.4.0..sroa_idx2.i.i, align 8, !alias.scope !8 br label %str.strConcat.exit Else.i: ; preds = %Entry %.idx.i.i4.i = getelementptr %str.RocStr, %str.RocStr* %arg2, i64 0, i32 2 %.idx.val.i.i5.i = load i64, i64* %.idx.i.i4.i, align 8, !noalias !2 %i21 = icmp slt i64 %.idx.val.i.i5.i, 0 %i22 = lshr i64 %.idx.val.i.i5.i, 56 %i23 = xor i64 %i22, 128 %i24 = getelementptr inbounds %str.RocStr, %str.RocStr* %arg2, i64 0, i32 1 %i25 = load i64, i64* %i24, align 8 %common.ret.op.i.i8.i = select i1 %i21, i64 %i23, i64 %i25 %i26 = icmp eq i64 %common.ret.op.i.i8.i, 0 br i1 %i26, label %Then1.i, label %Else2.i Then1.i: ; preds = %Else.i %i27 = bitcast %str.RocStr* %arg1 to i8* %i28 = bitcast %str.RocStr* %arg to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %i28, i8* noundef nonnull align 8 dereferenceable(24) %i27, i64 24, i1 false) #8 br label %str.strConcat.exit Else2.i: ; preds = %Else.i %i29 = add nuw i64 %common.ret.op.i.i8.i, %common.ret.op.i.i.i call fastcc void @str.RocStr.reallocate(%str.RocStr* noalias %result.i, %str.RocStr* %arg1, i64 %i29, i64 %i29) #8, !noalias !2 %.idx.i20.i = getelementptr inbounds %str.RocStr, %str.RocStr* %result.i, i64 0, i32 2 %.idx.val.i21.i = load i64, i64* %.idx.i20.i, align 8, !noalias !2 %i30 = icmp slt i64 %.idx.val.i21.i, 0 %i31 = getelementptr inbounds %str.RocStr, %str.RocStr* %result.i, i64 0, i32 0 %i32 = load i8*, i8** %i31, align 8, !noalias !2 %common.ret.op.i22.i = select i1 %i30, i8* %i, i8* %i32 %i33 = getelementptr inbounds i8, i8* %common.ret.op.i22.i, i64 %common.ret.op.i.i.i %i34 = bitcast %str.RocStr* %arg2 to i8* %i35 = getelementptr inbounds %str.RocStr, %str.RocStr* %arg2, i64 0, i32 0 %i36 = load i8*, i8** %i35, align 8 %common.ret.op.i3344.i = select i1 %i21, i8* %i34, i8* %i36 call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 %i33, i8* nonnull align 1 %common.ret.op.i3344.i, i64 %common.ret.op.i.i8.i, i1 false) #8, !noalias !2 %i37 = bitcast %str.RocStr* %arg to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %i37, i8* noundef nonnull align 8 dereferenceable(24) %i, i64 24, i1 false) #8 br label %str.strConcat.exit str.strConcat.exit: ; preds = %Else2.i, %Then1.i, %Else.i.i, %Then.i.i call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %i) ret void } ; Function Attrs: nobuiltin nounwind define internal fastcc void @str.RocStr.reallocate(%str.RocStr* noalias nocapture nonnull %arg, %str.RocStr* nocapture nonnull readonly align 8 %arg1, i64 %arg2, i64 %arg3) unnamed_addr #1 { Entry: %result.i = alloca %str.RocStr, align 8 %.idx5 = getelementptr %str.RocStr, %str.RocStr* %arg1, i64 0, i32 2 %.idx5.val = load i64, i64* %.idx5, align 8 %i = icmp slt i64 %.idx5.val, 0 %spec.select.i = select i1 %i, i64 23, i64 %.idx5.val %i4 = getelementptr inbounds %str.RocStr, %str.RocStr* %arg1, i64 0, i32 0 %i5 = load i8*, i8** %i4, align 8 %.not = icmp eq i8* %i5, null br i1 %.not, label %OptionalEndIf, label %OptionalThen OptionalThen: ; preds = %Entry br i1 %i, label %OptionalEndIf.thread, label %str.RocStr.isUnique.exit OptionalEndIf.thread: ; preds = %OptionalThen %i6 = bitcast %str.RocStr* %result.i to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %i6) br label %Then.i.i str.RocStr.isUnique.exit: ; preds = %OptionalThen %i7 = getelementptr inbounds i8, i8* %i5, i64 -8 %i8 = bitcast i8* %i7 to i64* %i9 = load i64, i64* %i8, align 8 %i10 = icmp eq i64 %i9, -9223372036854775808 br i1 %i10, label %Then, label %OptionalEndIf.thread10 OptionalEndIf.thread10: ; preds = %str.RocStr.isUnique.exit %i11 = bitcast %str.RocStr* %result.i to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %i11) br label %Else.i.i common.ret: ; preds = %str.RocStr.reallocateFresh.exit, %utils.unsafeReallocate.exit ret void Then: ; preds = %str.RocStr.isUnique.exit %i12 = icmp eq i64 %spec.select.i, %arg3 br i1 %i12, label %utils.unsafeReallocate.exit, label %EndIf.i7 EndIf.i7: ; preds = %Then %i13 = add nuw i64 %arg3, 8 %i14 = add nuw i64 %spec.select.i, 8 %i15 = getelementptr inbounds i8, i8* %i5, i64 -8 %i16 = tail call i8* @roc_realloc(i8* %i15, i64 %i13, i64 %i14, i32 8) #9 %i17 = getelementptr inbounds i8, i8* %i16, i64 8 br label %utils.unsafeReallocate.exit utils.unsafeReallocate.exit: ; preds = %EndIf.i7, %Then %common.ret.op.i6 = phi i8* [ %i17, %EndIf.i7 ], [ %i5, %Then ] %i18 = getelementptr inbounds %str.RocStr, %str.RocStr* %arg, i64 0, i32 0 store i8* %common.ret.op.i6, i8** %i18, align 8 %i19 = getelementptr inbounds %str.RocStr, %str.RocStr* %arg, i64 0, i32 1 store i64 %arg2, i64* %i19, align 8 %i20 = getelementptr inbounds %str.RocStr, %str.RocStr* %arg, i64 0, i32 2 store i64 %arg3, i64* %i20, align 8 br label %common.ret OptionalEndIf: ; preds = %Entry %i21 = bitcast %str.RocStr* %result.i to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %i21) br i1 %i, label %Then.i.i, label %Else.i.i Then.i.i: ; preds = %OptionalEndIf, %OptionalEndIf.thread %i22 = lshr i64 %.idx5.val, 56 %i23 = xor i64 %i22, 128 br label %str.RocStr.len.exit.i Else.i.i: ; preds = %OptionalEndIf, %OptionalEndIf.thread10 %i24 = getelementptr inbounds %str.RocStr, %str.RocStr* %arg1, i64 0, i32 1 %i25 = load i64, i64* %i24, align 8, !noalias !12 br label %str.RocStr.len.exit.i str.RocStr.len.exit.i: ; preds = %Else.i.i, %Then.i.i %common.ret.op.i.i = phi i64 [ %i23, %Then.i.i ], [ %i25, %Else.i.i ] %i26 = bitcast %str.RocStr* %result.i to i8* %i27 = sub nuw i64 %arg2, %common.ret.op.i.i tail call void @llvm.experimental.noalias.scope.decl(metadata !15) #8 %i28 = icmp ugt i64 %arg3, 23 br i1 %i28, label %Then.i5.i, label %str.RocStr.asU8ptr.exit.i.i Then.i5.i: ; preds = %str.RocStr.len.exit.i tail call void @llvm.experimental.noalias.scope.decl(metadata !18) #8 %i29 = add nuw i64 %arg3, 8 %i30 = tail call i8* @roc_alloc(i64 %i29, i32 8) #9, !noalias !21 %i31 = icmp ne i8* %i30, null tail call void @llvm.assume(i1 %i31) #8 %i32 = getelementptr inbounds i8, i8* %i30, i64 8 %i33 = bitcast i8* %i30 to i64* store i64 -9223372036854775808, i64* %i33, align 8, !noalias !21 %i34 = getelementptr inbounds %str.RocStr, %str.RocStr* %result.i, i64 0, i32 2 store i64 %arg3, i64* %i34, align 8, !alias.scope !22, !noalias !12 %.idx.val.i7.pre.i = load i64, i64* %.idx5, align 8, !noalias !12 br label %str.RocStr.allocate.exit.i str.RocStr.asU8ptr.exit.i.i: ; preds = %str.RocStr.len.exit.i %i35 = trunc i64 %arg2 to i8 %i36 = or i8 %i35, -128 %string.sroa.35.0..sroa_idx6.sroa_idx.i.i = getelementptr inbounds %str.RocStr, %str.RocStr* %result.i, i64 0, i32 2 %string.sroa.35.0..sroa_idx6.sroa_cast.i.i = bitcast i64* %string.sroa.35.0..sroa_idx6.sroa_idx.i.i to i56* store i56 0, i56* %string.sroa.35.0..sroa_idx6.sroa_cast.i.i, align 8, !alias.scope !15, !noalias !12 %string.sroa.35.0..sroa_idx6.sroa_raw_idx.i.i = getelementptr inbounds i8, i8* %i26, i64 23 store i8 %i36, i8* %string.sroa.35.0..sroa_idx6.sroa_raw_idx.i.i, align 1, !alias.scope !15, !noalias !12 br label %str.RocStr.allocate.exit.i str.RocStr.allocate.exit.i: ; preds = %str.RocStr.asU8ptr.exit.i.i, %Then.i5.i %.idx.val.i7.i = phi i64 [ %.idx.val.i7.pre.i, %Then.i5.i ], [ %.idx5.val, %str.RocStr.asU8ptr.exit.i.i ] %.sink9.i.i = phi i8* [ %i32, %Then.i5.i ], [ null, %str.RocStr.asU8ptr.exit.i.i ] %.sink.i.i = phi i64 [ %arg2, %Then.i5.i ], [ 0, %str.RocStr.asU8ptr.exit.i.i ] %i37 = getelementptr inbounds %str.RocStr, %str.RocStr* %result.i, i64 0, i32 0 store i8* %.sink9.i.i, i8** %i37, align 8, !alias.scope !15, !noalias !12 %i38 = getelementptr inbounds %str.RocStr, %str.RocStr* %result.i, i64 0, i32 1 store i64 %.sink.i.i, i64* %i38, align 8, !alias.scope !15, !noalias !12 %i39 = icmp slt i64 %.idx.val.i7.i, 0 br i1 %i39, label %Then.i9.i, label %Else.i10.i Then.i9.i: ; preds = %str.RocStr.allocate.exit.i %i40 = bitcast %str.RocStr* %arg1 to i8* br label %str.RocStr.asU8ptr.exit.i Else.i10.i: ; preds = %str.RocStr.allocate.exit.i %i41 = load i8*, i8** %i4, align 8, !noalias !12 br label %str.RocStr.asU8ptr.exit.i str.RocStr.asU8ptr.exit.i: ; preds = %Else.i10.i, %Then.i9.i %common.ret.op.i8.i = phi i8* [ %i40, %Then.i9.i ], [ %i41, %Else.i10.i ] %.idx.i11.i = getelementptr inbounds %str.RocStr, %str.RocStr* %result.i, i64 0, i32 2 %.idx.val.i12.i = load i64, i64* %.idx.i11.i, align 8, !noalias !12 %i42 = icmp slt i64 %.idx.val.i12.i, 0 %spec.select.i8 = select i1 %i42, i8* %i26, i8* %.sink9.i.i call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 %spec.select.i8, i8* nonnull align 1 %common.ret.op.i8.i, i64 %common.ret.op.i.i, i1 false) #8, !noalias !12 %i43 = getelementptr inbounds i8, i8* %spec.select.i8, i64 %common.ret.op.i.i call void @llvm.memset.p0i8.i64(i8* nonnull align 1 %i43, i8 0, i64 %i27, i1 false) #8, !noalias !12 %.idx.val.i18.i = load i64, i64* %.idx5, align 8, !noalias !12 %i44 = icmp slt i64 %.idx.val.i18.i, 0 br i1 %i44, label %str.RocStr.reallocateFresh.exit, label %Then.i19.i Then.i19.i: ; preds = %str.RocStr.asU8ptr.exit.i %i45 = load i8*, i8** %i4, align 8, !noalias !12 %i46 = getelementptr inbounds %str.RocStr, %str.RocStr* %arg1, i64 0, i32 1 %i47 = load i64, i64* %i46, align 8, !noalias !12 %i48 = icmp ne i64 %i47, 0 %i49 = icmp ne i8* %i45, null %or.cond.i.i.i = select i1 %i48, i1 %i49, i1 false br i1 %or.cond.i.i.i, label %OptionalNonNull.i.i.i, label %str.RocStr.reallocateFresh.exit OptionalNonNull.i.i.i: ; preds = %Then.i19.i %i50 = getelementptr inbounds i8, i8* %i45, i64 -8 %i51 = bitcast i8* %i50 to i64* %i52 = load i64, i64* %i51, align 8, !noalias !12 %i53 = icmp eq i64 %i52, -9223372036854775808 br i1 %i53, label %Then.i.i.i.i, label %Else.i.i.i.i Else.i.i.i.i: ; preds = %OptionalNonNull.i.i.i %i54 = icmp slt i64 %i52, 0 br i1 %i54, label %Then1.i.i.i.i, label %str.RocStr.reallocateFresh.exit Then.i.i.i.i: ; preds = %OptionalNonNull.i.i.i tail call void @roc_dealloc(i8* %i50, i32 8) #9, !noalias !12 br label %str.RocStr.reallocateFresh.exit Then1.i.i.i.i: ; preds = %Else.i.i.i.i %i55 = add nsw i64 %i52, -1 store i64 %i55, i64* %i51, align 8, !noalias !12 br label %str.RocStr.reallocateFresh.exit str.RocStr.reallocateFresh.exit: ; preds = %Then1.i.i.i.i, %Then.i.i.i.i, %Else.i.i.i.i, %Then.i19.i, %str.RocStr.asU8ptr.exit.i %i56 = bitcast %str.RocStr* %arg to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %i56, i8* noundef nonnull align 8 dereferenceable(24) %i26, i64 24, i1 false) #8 call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %i26) br label %common.ret } ; Function Attrs: nobuiltin nounwind define internal void @roc_builtins.str.from_int.i64(%str.RocStr* noalias nocapture nonnull sret(%str.RocStr) %arg, i64 %arg1) local_unnamed_addr #1 { Entry: %result.i.i = alloca %str.RocStr, align 8 %buf.i.i.i.i.i.i.i = alloca [65 x i8], align 1 %i = alloca %"[]u8", align 8 %fbs.i.i = alloca %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", align 8 %i2 = alloca %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)", align 8 %buf.i = alloca [20 x i8], align 1 %i3 = getelementptr inbounds [20 x i8], [20 x i8]* %buf.i, i64 0, i64 0 call void @llvm.lifetime.start.p0i8(i64 20, i8* nonnull %i3) %i4 = bitcast %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %fbs.i.i to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %i4) #8, !noalias !23 %i5 = bitcast %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)"* %i2 to i8* call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %i5) #8, !noalias !23 %i6 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %fbs.i.i, i64 0, i32 0, i32 0 store i8* %i3, i8** %i6, align 8, !alias.scope !26, !noalias !31 %i7 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %fbs.i.i, i64 0, i32 0, i32 1 %i8 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %fbs.i.i, i64 0, i32 1 %i9 = bitcast i64* %i7 to <2 x i64>* store <2 x i64> <i64 20, i64 0>, <2 x i64>* %i9, align 8, !alias.scope !34, !noalias !31 %i10 = getelementptr inbounds %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)", %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)"* %i2, i64 0, i32 0 store %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %fbs.i.i, %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"** %i10, align 8, !alias.scope !35, !noalias !31 %i11 = getelementptr inbounds [65 x i8], [65 x i8]* %buf.i.i.i.i.i.i.i, i64 0, i64 0 call void @llvm.lifetime.start.p0i8(i64 65, i8* nonnull %i11) #8, !noalias !31 %i12 = bitcast %"[]u8"* %i to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %i12) #8, !noalias !31 %i13 = call i64 @llvm.abs.i64(i64 %arg1, i1 false) #8 br label %WhileCond.i.i.i.i.i.i.i WhileCond.i.i.i.i.i.i.i: ; preds = %WhileCond.i.i.i.i.i.i.i, %Entry %index.0.i.i.i.i.i.i.i = phi i64 [ 65, %Entry ], [ %i15, %WhileCond.i.i.i.i.i.i.i ] %a.0.i.i.i.i.i.i.i = phi i64 [ %i13, %Entry ], [ %i19, %WhileCond.i.i.i.i.i.i.i ] %i14 = urem i64 %a.0.i.i.i.i.i.i.i, 10 %i15 = add i64 %index.0.i.i.i.i.i.i.i, -1 %i16 = getelementptr inbounds [65 x i8], [65 x i8]* %buf.i.i.i.i.i.i.i, i64 0, i64 %i15 %i17 = trunc i64 %i14 to i8 %i18 = or i8 %i17, 48 store i8 %i18, i8* %i16, align 1, !noalias !31 %i19 = udiv i64 %a.0.i.i.i.i.i.i.i, 10 %i20 = icmp ult i64 %a.0.i.i.i.i.i.i.i, 10 br i1 %i20, label %WhileEnd.i.i.i.i.i.i.i, label %WhileCond.i.i.i.i.i.i.i WhileEnd.i.i.i.i.i.i.i: ; preds = %WhileCond.i.i.i.i.i.i.i %i21 = icmp slt i64 %arg1, 0 br i1 %i21, label %Then2.i.i.i.i.i.i.i, label %std.fmt.format.174.exit.i.i Then2.i.i.i.i.i.i.i: ; preds = %WhileEnd.i.i.i.i.i.i.i %i22 = add i64 %index.0.i.i.i.i.i.i.i, -2 %i23 = getelementptr inbounds [65 x i8], [65 x i8]* %buf.i.i.i.i.i.i.i, i64 0, i64 %i22 store i8 45, i8* %i23, align 1, !noalias !31 br label %std.fmt.format.174.exit.i.i std.fmt.format.174.exit.i.i: ; preds = %Then2.i.i.i.i.i.i.i, %WhileEnd.i.i.i.i.i.i.i %index.1.i.i.i.i.i.i.i = phi i64 [ %i22, %Then2.i.i.i.i.i.i.i ], [ %i15, %WhileEnd.i.i.i.i.i.i.i ] %i24 = getelementptr inbounds [65 x i8], [65 x i8]* %buf.i.i.i.i.i.i.i, i64 0, i64 %index.1.i.i.i.i.i.i.i %i25 = sub nuw i64 65, %index.1.i.i.i.i.i.i.i %i26 = getelementptr inbounds %"[]u8", %"[]u8"* %i, i64 0, i32 0 store i8* %i24, i8** %i26, align 8, !noalias !31 %i27 = getelementptr inbounds %"[]u8", %"[]u8"* %i, i64 0, i32 1 store i64 %i25, i64* %i27, align 8, !noalias !31 %i28 = call fastcc i16 @std.fmt.formatBuf(%"[]u8"* %i, %std.fmt.FormatOptions* bitcast ({ %"?usize", %"?usize", i2, <{ i8, [6 x i8] }> }* @0 to %std.fmt.FormatOptions*), %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)"* %i2) #8, !noalias !31 call void @llvm.lifetime.end.p0i8(i64 65, i8* nonnull %i11) #8, !noalias !31 call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %i12) #8, !noalias !31 %.not.i.i = icmp eq i16 %i28, 0 %fbs.idx3.val.i.i = load i64, i64* %i8, align 8, !noalias !23 %spec.select.i = select i1 %.not.i.i, i64 %fbs.idx3.val.i.i, i64 undef call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %i4) #8, !noalias !23 call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %i5) #8, !noalias !23 %i29 = bitcast %str.RocStr* %result.i.i to i8* call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %i29) #8, !noalias !23 call void @llvm.experimental.noalias.scope.decl(metadata !38) #8 %i30 = icmp ugt i64 %spec.select.i, 23 br i1 %i30, label %Then.i.i.i, label %str.RocStr.asU8ptr.exit.i.i.i Then.i.i.i: ; preds = %std.fmt.format.174.exit.i.i call void @llvm.experimental.noalias.scope.decl(metadata !41) #8 %i31 = add nuw i64 %spec.select.i, 8 %i32 = call i8* @roc_alloc(i64 %i31, i32 8) #9, !noalias !44 %i33 = icmp ne i8* %i32, null call void @llvm.assume(i1 %i33) #8 %i34 = getelementptr inbounds i8, i8* %i32, i64 8 %i35 = bitcast i8* %i32 to i64* store i64 -9223372036854775808, i64* %i35, align 8, !noalias !44 %i36 = getelementptr inbounds %str.RocStr, %str.RocStr* %result.i.i, i64 0, i32 2 store i64 %spec.select.i, i64* %i36, align 8, !alias.scope !47, !noalias !48 br label %str.strFromIntHelp.77.exit str.RocStr.asU8ptr.exit.i.i.i: ; preds = %std.fmt.format.174.exit.i.i %i37 = trunc i64 %spec.select.i to i8 %i38 = or i8 %i37, -128 %string.sroa.35.0..sroa_idx6.sroa_idx.i.i.i = getelementptr inbounds %str.RocStr, %str.RocStr* %result.i.i, i64 0, i32 2 %string.sroa.35.0..sroa_idx6.sroa_cast.i.i.i = bitcast i64* %string.sroa.35.0..sroa_idx6.sroa_idx.i.i.i to i56* store i56 0, i56* %string.sroa.35.0..sroa_idx6.sroa_cast.i.i.i, align 8, !alias.scope !38, !noalias !48 %string.sroa.35.0..sroa_idx6.sroa_raw_idx.i.i.i = getelementptr inbounds i8, i8* %i29, i64 23 store i8 %i38, i8* %string.sroa.35.0..sroa_idx6.sroa_raw_idx.i.i.i, align 1, !alias.scope !38, !noalias !48 %.idx.val.i.pre.i.i = load i64, i64* %string.sroa.35.0..sroa_idx6.sroa_idx.i.i.i, align 8, !noalias !48 br label %str.strFromIntHelp.77.exit str.strFromIntHelp.77.exit: ; preds = %str.RocStr.asU8ptr.exit.i.i.i, %Then.i.i.i %.idx.val.i.i.i = phi i64 [ %spec.select.i, %Then.i.i.i ], [ %.idx.val.i.pre.i.i, %str.RocStr.asU8ptr.exit.i.i.i ] %.sink9.i.i.i = phi i8* [ %i34, %Then.i.i.i ], [ null, %str.RocStr.asU8ptr.exit.i.i.i ] %.sink.i.i.i = phi i64 [ %spec.select.i, %Then.i.i.i ], [ 0, %str.RocStr.asU8ptr.exit.i.i.i ] %i39 = getelementptr inbounds %str.RocStr, %str.RocStr* %result.i.i, i64 0, i32 0 store i8* %.sink9.i.i.i, i8** %i39, align 8, !alias.scope !38, !noalias !48 %i40 = getelementptr inbounds %str.RocStr, %str.RocStr* %result.i.i, i64 0, i32 1 store i64 %.sink.i.i.i, i64* %i40, align 8, !alias.scope !38, !noalias !48 %i41 = icmp slt i64 %.idx.val.i.i.i, 0 %spec.select.i.i = select i1 %i41, i8* %i29, i8* %.sink9.i.i.i call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 1 %spec.select.i.i, i8* nonnull align 1 %i3, i64 %spec.select.i, i1 false) #8, !noalias !48 %i42 = bitcast %str.RocStr* %arg to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %i42, i8* noundef nonnull align 8 dereferenceable(24) %i29, i64 24, i1 false) #8 call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %i29) #8, !noalias !23 call void @llvm.lifetime.end.p0i8(i64 20, i8* nonnull %i3) ret void } ; Function Attrs: nobuiltin nounwind declare void @roc_panic(i8* nonnull readonly, i32) local_unnamed_addr #1 ; Function Attrs: nobuiltin nounwind define weak i128 @__muloti4(i128 %arg, i128 %arg1, i32* nonnull %arg2) local_unnamed_addr #1 { Entry: store i32 0, i32* %arg2, align 4 %i = icmp eq i128 %arg, -170141183460469231731687303715884105728 br i1 %i, label %Then, label %EndIf3 Then: ; preds = %Entry %.not52 = icmp ult i128 %arg1, 2 br i1 %.not52, label %common.ret, label %common.ret.sink.split common.ret.sink.split: ; preds = %Else18, %Then15, %Then4, %Then store i32 1, i32* %arg2, align 4 br label %common.ret common.ret: ; preds = %Else18, %Then15, %EndIf11, %Then4, %common.ret.sink.split, %Then %i3 = mul i128 %arg1, %arg ret i128 %i3 EndIf3: ; preds = %Entry %i4 = icmp eq i128 %arg1, -170141183460469231731687303715884105728 br i1 %i4, label %Then4, label %EndIf11 Then4: ; preds = %EndIf3 %.not = icmp ult i128 %arg, 2 br i1 %.not, label %common.ret, label %common.ret.sink.split EndIf11: ; preds = %EndIf3 %i5 = ashr i128 %arg, 127 %i6 = xor i128 %i5, %arg %i7 = sub i128 %i6, %i5 %i8 = ashr i128 %arg1, 127 %i9 = xor i128 %i8, %arg1 %i10 = sub i128 %i9, %i8 %i11 = icmp slt i128 %i7, 2 %i12 = icmp slt i128 %i10, 2 %i13 = select i1 %i11, i1 true, i1 %i12 br i1 %i13, label %common.ret, label %EndIf14 EndIf14: ; preds = %EndIf11 %i14 = icmp eq i128 %i5, %i8 br i1 %i14, label %Then15, label %Else18 Then15: ; preds = %EndIf14 %i15 = udiv i128 170141183460469231731687303715884105727, %i10 %i16 = icmp sgt i128 %i7, %i15 br i1 %i16, label %common.ret.sink.split, label %common.ret Else18: ; preds = %EndIf14 %i17 = udiv i128 -170141183460469231731687303715884105728, %i10 %i18 = icmp sgt i128 %i7, %i17 br i1 %i18, label %common.ret.sink.split, label %common.ret } ; Function Attrs: nobuiltin nounwind declare i8* @roc_alloc(i64, i32) local_unnamed_addr #1 ; Function Attrs: nobuiltin nounwind declare void @roc_dealloc(i8* nonnull, i32) local_unnamed_addr #1 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare { i64, i1 } @llvm.sadd.with.overflow.i64(i64, i64) #2 ; Function Attrs: argmemonly nofree nounwind willreturn writeonly declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #3 ; Function Attrs: nobuiltin nounwind declare i8* @roc_realloc(i8* nonnull, i64, i64, i32) local_unnamed_addr #1 ; Function Attrs: nobuiltin nofree nosync nounwind define internal fastcc i16 @std.fmt.formatBuf(%"[]u8"* nocapture nonnull readonly align 8 %arg, %std.fmt.FormatOptions* nocapture nonnull readonly align 8 %arg1, %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)"* nocapture nonnull readonly align 8 %arg2) unnamed_addr #4 { Entry: %bytes.i130 = alloca [256 x i8], align 1 %bytes.i81 = alloca [256 x i8], align 1 %bytes.i = alloca [256 x i8], align 1 %i = getelementptr inbounds %std.fmt.FormatOptions, %std.fmt.FormatOptions* %arg1, i64 0, i32 1, i32 1 %i3 = load i1, i1* %i, align 8 br i1 %i3, label %OptionalThen, label %OptionalElse OptionalThen: ; preds = %Entry %i4 = getelementptr inbounds %std.fmt.FormatOptions, %std.fmt.FormatOptions* %arg1, i64 0, i32 1, i32 0 %i5 = load i64, i64* %i4, align 8 %i6 = getelementptr inbounds %"[]u8", %"[]u8"* %arg, i64 0, i32 1 %i7 = load i64, i64* %i6, align 8, !noalias !49 %i8 = getelementptr inbounds %"[]u8", %"[]u8"* %arg, i64 0, i32 0 %.not80.i = icmp eq i64 %i7, 0 br i1 %.not80.i, label %UnwrapErrEnd.thread, label %WhileCond1.preheader.i WhileCond1.preheader.i: ; preds = %EndIf10.i, %OptionalThen %len.078.i = phi i64 [ %len.2.i, %EndIf10.i ], [ 0, %OptionalThen ] %i.077.i = phi i64 [ %i.2.i, %EndIf10.i ], [ 0, %OptionalThen ] %i9 = add nuw i64 %i.077.i, 8 %.not71.i = icmp ugt i64 %i9, %i7 br i1 %.not71.i, label %WhileEnd.i, label %WhileBody2.lr.ph.i WhileBody2.lr.ph.i: ; preds = %WhileCond1.preheader.i %i10 = load i8*, i8** %i8, align 8, !noalias !49 br label %WhileBody2.i WhileBody2.i: ; preds = %EndIf.i, %WhileBody2.lr.ph.i %i11 = phi i64 [ %i9, %WhileBody2.lr.ph.i ], [ %i17, %EndIf.i ] %len.173.i = phi i64 [ %len.078.i, %WhileBody2.lr.ph.i ], [ %i16, %EndIf.i ] %i.172.i = phi i64 [ %i.077.i, %WhileBody2.lr.ph.i ], [ %i11, %EndIf.i ] %i12 = getelementptr inbounds i8, i8* %i10, i64 %i.172.i %i13 = bitcast i8* %i12 to i64* %i14 = load i64, i64* %i13, align 1, !noalias !49 %i15 = and i64 %i14, -9187201950435737472 %.not33.i = icmp eq i64 %i15, 0 br i1 %.not33.i, label %EndIf.i, label %WhileEnd.i EndIf.i: ; preds = %WhileBody2.i %i16 = add nuw i64 %len.173.i, 8 %i17 = add nuw i64 %i11, 8 %.not.i = icmp ugt i64 %i17, %i7 br i1 %.not.i, label %WhileEnd.i, label %WhileBody2.i WhileEnd.i: ; preds = %EndIf.i, %WhileBody2.i, %WhileCond1.preheader.i %i.1.lcssa.i = phi i64 [ %i.077.i, %WhileCond1.preheader.i ], [ %i11, %EndIf.i ], [ %i.172.i, %WhileBody2.i ] %len.1.lcssa.i = phi i64 [ %len.078.i, %WhileCond1.preheader.i ], [ %i16, %EndIf.i ], [ %len.173.i, %WhileBody2.i ] %i18 = icmp ult i64 %i.1.lcssa.i, %i7 br i1 %i18, label %Then3.i, label %EndIf10.i Then3.i: ; preds = %WhileEnd.i %i19 = load i8*, i8** %i8, align 8, !noalias !49 %i20 = getelementptr inbounds i8, i8* %i19, i64 %i.1.lcssa.i %i21 = load i8, i8* %i20, align 1, !noalias !49 %i22 = icmp sgt i8 %i21, -1 br i1 %i22, label %ErrRetContinue.thread.i, label %SwitchRangeNo.i.i SwitchRangeNo.i.i: ; preds = %Then3.i %i23 = and i8 %i21, -32 %i24 = icmp eq i8 %i23, -64 br i1 %i24, label %ErrRetContinue.i, label %SwitchRangeNo2.i.i SwitchRangeNo2.i.i: ; preds = %SwitchRangeNo.i.i %i25 = and i8 %i21, -16 %i26 = icmp eq i8 %i25, -32 br i1 %i26, label %ErrRetContinue.i, label %SwitchRangeNo4.i.i SwitchRangeNo4.i.i: ; preds = %SwitchRangeNo2.i.i %i27 = and i8 %i21, -8 %i28 = icmp eq i8 %i27, -16 br i1 %i28, label %ErrRetContinue.i, label %UnwrapErrEnd ErrRetContinue.i: ; preds = %SwitchRangeNo4.i.i, %SwitchRangeNo2.i.i, %SwitchRangeNo.i.i %.sroa.053.1.ph.i = phi i64 [ 4, %SwitchRangeNo4.i.i ], [ 3, %SwitchRangeNo2.i.i ], [ 2, %SwitchRangeNo.i.i ] %i29 = add nuw i64 %.sroa.053.1.ph.i, %i.1.lcssa.i %i30 = icmp ugt i64 %i29, %i7 br i1 %i30, label %UnwrapErrEnd, label %SwitchElse.i ErrRetContinue.thread.i: ; preds = %Then3.i %i31 = add nuw i64 %i.1.lcssa.i, 1 br label %SwitchEnd.i SwitchElse.i: ; preds = %ErrRetContinue.i switch i64 %.sroa.053.1.ph.i, label %SwitchElse.i35.i [ i64 4, label %SwitchProng3.i.i i64 2, label %SwitchProng1.i.i i64 3, label %SwitchProng2.i.i ] SwitchElse.i35.i: ; preds = %SwitchElse.i unreachable SwitchProng1.i.i: ; preds = %SwitchElse.i %.idx.val.idx.i.i = getelementptr i8, i8* %i20, i64 1 %.idx.val.idx.val.i.i = load i8, i8* %.idx.val.idx.i.i, align 1, !noalias !52 tail call void @llvm.assume(i1 %i24) #8 %i32 = and i8 %.idx.val.idx.val.i.i, -64 %.not.i.i.i = icmp ne i8 %i32, -128 %i33 = and i8 %i21, 30 %i34 = icmp eq i8 %i33, 0 %or.cond = select i1 %.not.i.i.i, i1 true, i1 %i34 br i1 %or.cond, label %UnwrapErrEnd, label %SwitchEnd.i SwitchProng2.i.i: ; preds = %SwitchElse.i %i35 = and i8 %i21, -16 %i36 = icmp eq i8 %i35, -32 tail call void @llvm.assume(i1 %i36) #8 %i37 = getelementptr inbounds i8, i8* %i20, i64 1 %i38 = load i8, i8* %i37, align 1, !noalias !55 %i39 = and i8 %i38, -64 %.not.i36.i = icmp eq i8 %i39, -128 br i1 %.not.i36.i, label %EndIf.i38.i, label %UnwrapErrEnd EndIf.i38.i: ; preds = %SwitchProng2.i.i %i40 = getelementptr inbounds i8, i8* %i20, i64 2 %i41 = load i8, i8* %i40, align 1, !noalias !55 %i42 = and i8 %i41, -64 %.not42.i.i = icmp eq i8 %i42, -128 br i1 %.not42.i.i, label %EndIf3.i40.i, label %UnwrapErrEnd EndIf3.i40.i: ; preds = %EndIf.i38.i %i43 = and i8 %i21, 15 %i44 = zext i8 %i43 to i21 %i45 = and i8 %i38, 63 %i46 = zext i8 %i45 to i21 %i47 = shl nuw nsw i21 %i44, 12 %i48 = shl nuw nsw i21 %i46, 6 %i49 = or i21 %i48, %i47 %i50 = icmp ult i21 %i49, 2048 %i51 = and i21 %i49, 63488 %i52 = icmp eq i21 %i51, 55296 %or.cond225 = or i1 %i50, %i52 br i1 %or.cond225, label %UnwrapErrEnd, label %SwitchEnd.i SwitchProng3.i.i: ; preds = %SwitchElse.i %i53 = and i8 %i21, -8 %i54 = icmp eq i8 %i53, -16 tail call void @llvm.assume(i1 %i54) #8 %i55 = getelementptr inbounds i8, i8* %i20, i64 1 %i56 = load i8, i8* %i55, align 1, !noalias !58 %i57 = and i8 %i56, -64 %.not.i.i = icmp eq i8 %i57, -128 br i1 %.not.i.i, label %EndIf.i.i, label %UnwrapErrEnd EndIf.i.i: ; preds = %SwitchProng3.i.i %i58 = getelementptr inbounds i8, i8* %i20, i64 2 %i59 = load i8, i8* %i58, align 1, !noalias !58 %i60 = and i8 %i59, -64 %.not52.i.i = icmp eq i8 %i60, -128 br i1 %.not52.i.i, label %EndIf3.i.i, label %UnwrapErrEnd EndIf3.i.i: ; preds = %EndIf.i.i %i61 = getelementptr inbounds i8, i8* %i20, i64 3 %i62 = load i8, i8* %i61, align 1, !noalias !58 %i63 = and i8 %i62, -64 %.not53.i.i = icmp eq i8 %i63, -128 br i1 %.not53.i.i, label %EndIf6.i.i, label %UnwrapErrEnd EndIf6.i.i: ; preds = %EndIf3.i.i %i64 = zext i8 %i21 to i21 %i65 = shl nuw nsw i21 %i64, 12 %i66 = and i8 %i56, 63 %i67 = zext i8 %i66 to i21 %i68 = shl nuw nsw i21 %i67, 6 %i69 = or i21 %i68, %i65 %i70 = and i8 %i59, 63 %i71 = zext i8 %i70 to i21 %i72 = or i21 %i69, %i71 %i73 = shl i21 %i72, 6 %i74 = add i21 %i73, -65536 %i75 = icmp slt i21 %i74, 0 br i1 %i75, label %UnwrapErrEnd, label %SwitchEnd.i SwitchEnd.i: ; preds = %EndIf6.i.i, %EndIf3.i40.i, %SwitchProng1.i.i, %ErrRetContinue.thread.i %i76 = phi i64 [ %i31, %ErrRetContinue.thread.i ], [ %i29, %SwitchProng1.i.i ], [ %i29, %EndIf3.i40.i ], [ %i29, %EndIf6.i.i ] %i77 = add nuw i64 %len.1.lcssa.i, 1 br label %EndIf10.i EndIf10.i: ; preds = %SwitchEnd.i, %WhileEnd.i %i.2.i = phi i64 [ %i76, %SwitchEnd.i ], [ %i.1.lcssa.i, %WhileEnd.i ] %len.2.i = phi i64 [ %i77, %SwitchEnd.i ], [ %len.1.lcssa.i, %WhileEnd.i ] %i78 = icmp ult i64 %i.2.i, %i7 br i1 %i78, label %WhileCond1.preheader.i, label %UnwrapErrEnd UnwrapErrEnd: ; preds = %EndIf10.i, %EndIf6.i.i, %EndIf3.i.i, %EndIf.i.i, %SwitchProng3.i.i, %EndIf3.i40.i, %EndIf.i38.i, %SwitchProng2.i.i, %SwitchProng1.i.i, %ErrRetContinue.i, %SwitchRangeNo4.i.i %width.0 = phi i64 [ %i7, %SwitchRangeNo4.i.i ], [ %i7, %ErrRetContinue.i ], [ %i7, %EndIf6.i.i ], [ %i7, %EndIf3.i.i ], [ %i7, %EndIf.i.i ], [ %i7, %SwitchProng3.i.i ], [ %i7, %EndIf3.i40.i ], [ %i7, %EndIf.i38.i ], [ %i7, %SwitchProng2.i.i ], [ %i7, %SwitchProng1.i.i ], [ %len.2.i, %EndIf10.i ] %i79 = sub nuw i64 %i5, %width.0 %.not = icmp ugt i64 %i5, %width.0 br i1 %.not, label %EndIf3, label %WhileBody.i.preheader UnwrapErrEnd.thread: ; preds = %OptionalThen %i80 = icmp eq i64 %i5, 0 br i1 %i80, label %common.ret, label %EndIf3 common.ret: ; preds = %OptionalEndIf, %EndIf3.i.i.i189, %EndIf.i.i.i185, %EndIf3.i.i.i166, %EndIf.i.i.i162, %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes.exit155.thread", %ErrRetContinue9, %EndIf3.i.i.i117, %EndIf.i.i.i113, %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes.exit106", %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes.exit.thread", %EndIf3.i.i.i63, %EndIf.i.i.i59, %ErrRetContinue.i52, %EndIf3.i.i.i, %EndIf.i.i.i50, %UnwrapErrEnd.thread %common.ret.op = phi i16 [ 0, %OptionalEndIf ], [ 10, %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes.exit106" ], [ %i328, %ErrRetContinue9 ], [ 10, %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes.exit.thread" ], [ 10, %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes.exit155.thread" ], [ 0, %UnwrapErrEnd.thread ], [ 10, %EndIf.i.i.i59 ], [ 10, %EndIf3.i.i.i63 ], [ 10, %EndIf.i.i.i113 ], [ 10, %EndIf3.i.i.i117 ], [ 10, %EndIf.i.i.i162 ], [ 10, %EndIf3.i.i.i166 ], [ 0, %ErrRetContinue.i52 ], [ 10, %EndIf3.i.i.i ], [ 10, %EndIf.i.i.i50 ], [ 10, %EndIf.i.i.i185 ], [ 10, %EndIf3.i.i.i189 ] ret i16 %common.ret.op WhileBody.i.preheader: ; preds = %UnwrapErrEnd %.idx.i = getelementptr %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)", %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)"* %arg2, i64 0, i32 0 br label %WhileBody.i WhileBody.i: ; preds = %ErrRetContinue.i52, %WhileBody.i.preheader %i81 = phi i64 [ %i147, %ErrRetContinue.i52 ], [ %i7, %WhileBody.i.preheader ] %index.014.i = phi i64 [ %i148, %ErrRetContinue.i52 ], [ 0, %WhileBody.i.preheader ] %i82 = load i8*, i8** %i8, align 8 %i83 = sub nuw i64 %i81, %index.014.i %.idx.val.i = load %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"*, %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"** %.idx.i, align 8 %i84 = icmp eq i64 %i83, 0 br i1 %i84, label %ErrRetContinue.i52, label %EndIf.i.i.i50 EndIf.i.i.i50: ; preds = %WhileBody.i %i85 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i, i64 0, i32 1 %i86 = load i64, i64* %i85, align 8, !noalias !61 %i87 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i, i64 0, i32 0, i32 1 %i88 = load i64, i64* %i87, align 8, !noalias !61 %.not.i.i.i49 = icmp ugt i64 %i88, %i86 br i1 %.not.i.i.i49, label %EndIf3.i.i.i, label %common.ret EndIf3.i.i.i: ; preds = %EndIf.i.i.i50 %i89 = add nuw i64 %i86, %i83 %.not25.i.i.i = icmp ugt i64 %i89, %i88 %i90 = sub nuw i64 %i88, %i86 %n.0.i.i.i = select i1 %.not25.i.i.i, i64 %i90, i64 %i83 %i91 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i, i64 0, i32 0, i32 0 %i92 = load i8*, i8** %i91, align 8, !noalias !61 %.not.i.i.i.i = icmp eq i64 %n.0.i.i.i, 0 br i1 %.not.i.i.i.i, label %common.ret, label %iter.check278 iter.check278: ; preds = %EndIf3.i.i.i %min.iters.check276 = icmp ult i64 %n.0.i.i.i, 8 br i1 %min.iters.check276, label %ForBody.i.i.i.i.preheader, label %vector.memcheck264 vector.memcheck264: ; preds = %iter.check278 %scevgep265 = getelementptr i8, i8* %i92, i64 %i86 %i93 = add i64 %i81, %i86 %i94 = sub i64 %i93, %index.014.i %umin266 = call i64 @llvm.umin.i64(i64 %i88, i64 %i94) %scevgep267 = getelementptr i8, i8* %i92, i64 %umin266 %scevgep268 = getelementptr i8, i8* %i82, i64 %index.014.i %i95 = add i64 %index.014.i, %umin266 %i96 = sub i64 %i95, %i86 %scevgep269 = getelementptr i8, i8* %i82, i64 %i96 %bound0270 = icmp ult i8* %scevgep265, %scevgep269 %bound1271 = icmp ult i8* %scevgep268, %scevgep267 %found.conflict272 = and i1 %bound0270, %bound1271 br i1 %found.conflict272, label %ForBody.i.i.i.i.preheader, label %vector.main.loop.iter.check280 vector.main.loop.iter.check280: ; preds = %vector.memcheck264 %min.iters.check279 = icmp ult i64 %n.0.i.i.i, 32 br i1 %min.iters.check279, label %vec.epilog.ph293, label %vector.ph281 vector.ph281: ; preds = %vector.main.loop.iter.check280 %n.vec283 = and i64 %n.0.i.i.i, -32 %i97 = add i64 %n.vec283, -32 %i98 = lshr exact i64 %i97, 5 %i99 = add nuw nsw i64 %i98, 1 %xtraiter433 = and i64 %i99, 1 %i100 = icmp eq i64 %i97, 0 br i1 %i100, label %middle.block274.unr-lcssa, label %vector.ph281.new vector.ph281.new: ; preds = %vector.ph281 %unroll_iter435 = and i64 %i99, 1152921504606846974 br label %vector.body275 vector.body275: ; preds = %vector.body275, %vector.ph281.new %index284 = phi i64 [ 0, %vector.ph281.new ], [ %index.next285.1, %vector.body275 ] %niter436 = phi i64 [ %unroll_iter435, %vector.ph281.new ], [ %niter436.nsub.1, %vector.body275 ] %i101 = add nsw i64 %index284, %index.014.i %i102 = getelementptr inbounds i8, i8* %i82, i64 %i101 %i103 = bitcast i8* %i102 to <16 x i8>* %wide.load287 = load <16 x i8>, <16 x i8>* %i103, align 1, !alias.scope !66, !noalias !61 %i104 = getelementptr inbounds i8, i8* %i102, i64 16 %i105 = bitcast i8* %i104 to <16 x i8>* %wide.load288 = load <16 x i8>, <16 x i8>* %i105, align 1, !alias.scope !66, !noalias !61 %i106 = add nsw i64 %index284, %i86 %i107 = getelementptr inbounds i8, i8* %i92, i64 %i106 %i108 = bitcast i8* %i107 to <16 x i8>* store <16 x i8> %wide.load287, <16 x i8>* %i108, align 1, !alias.scope !69, !noalias !71 %i109 = getelementptr inbounds i8, i8* %i107, i64 16 %i110 = bitcast i8* %i109 to <16 x i8>* store <16 x i8> %wide.load288, <16 x i8>* %i110, align 1, !alias.scope !69, !noalias !71 %index.next285 = or i64 %index284, 32 %i111 = add nsw i64 %index.next285, %index.014.i %i112 = getelementptr inbounds i8, i8* %i82, i64 %i111 %i113 = bitcast i8* %i112 to <16 x i8>* %wide.load287.1 = load <16 x i8>, <16 x i8>* %i113, align 1, !alias.scope !66, !noalias !61 %i114 = getelementptr inbounds i8, i8* %i112, i64 16 %i115 = bitcast i8* %i114 to <16 x i8>* %wide.load288.1 = load <16 x i8>, <16 x i8>* %i115, align 1, !alias.scope !66, !noalias !61 %i116 = add nsw i64 %index.next285, %i86 %i117 = getelementptr inbounds i8, i8* %i92, i64 %i116 %i118 = bitcast i8* %i117 to <16 x i8>* store <16 x i8> %wide.load287.1, <16 x i8>* %i118, align 1, !alias.scope !69, !noalias !71 %i119 = getelementptr inbounds i8, i8* %i117, i64 16 %i120 = bitcast i8* %i119 to <16 x i8>* store <16 x i8> %wide.load288.1, <16 x i8>* %i120, align 1, !alias.scope !69, !noalias !71 %index.next285.1 = add nuw i64 %index284, 64 %niter436.nsub.1 = add i64 %niter436, -2 %niter436.ncmp.1 = icmp eq i64 %niter436.nsub.1, 0 br i1 %niter436.ncmp.1, label %middle.block274.unr-lcssa, label %vector.body275, !llvm.loop !72 middle.block274.unr-lcssa: ; preds = %vector.body275, %vector.ph281 %index284.unr = phi i64 [ 0, %vector.ph281 ], [ %index.next285.1, %vector.body275 ] %lcmp.mod434.not = icmp eq i64 %xtraiter433, 0 br i1 %lcmp.mod434.not, label %middle.block274, label %vector.body275.epil vector.body275.epil: ; preds = %middle.block274.unr-lcssa %i121 = add nsw i64 %index284.unr, %index.014.i %i122 = getelementptr inbounds i8, i8* %i82, i64 %i121 %i123 = bitcast i8* %i122 to <16 x i8>* %wide.load287.epil = load <16 x i8>, <16 x i8>* %i123, align 1, !alias.scope !66, !noalias !61 %i124 = getelementptr inbounds i8, i8* %i122, i64 16 %i125 = bitcast i8* %i124 to <16 x i8>* %wide.load288.epil = load <16 x i8>, <16 x i8>* %i125, align 1, !alias.scope !66, !noalias !61 %i126 = add nsw i64 %index284.unr, %i86 %i127 = getelementptr inbounds i8, i8* %i92, i64 %i126 %i128 = bitcast i8* %i127 to <16 x i8>* store <16 x i8> %wide.load287.epil, <16 x i8>* %i128, align 1, !alias.scope !69, !noalias !71 %i129 = getelementptr inbounds i8, i8* %i127, i64 16 %i130 = bitcast i8* %i129 to <16 x i8>* store <16 x i8> %wide.load288.epil, <16 x i8>* %i130, align 1, !alias.scope !69, !noalias !71 br label %middle.block274 middle.block274: ; preds = %vector.body275.epil, %middle.block274.unr-lcssa %cmp.n286 = icmp eq i64 %n.0.i.i.i, %n.vec283 br i1 %cmp.n286, label %EndIf9.i.i.i, label %vec.epilog.iter.check292 vec.epilog.iter.check292: ; preds = %middle.block274 %n.vec.remaining294 = and i64 %n.0.i.i.i, 24 %min.epilog.iters.check295 = icmp eq i64 %n.vec.remaining294, 0 br i1 %min.epilog.iters.check295, label %ForBody.i.i.i.i.preheader, label %vec.epilog.ph293 vec.epilog.ph293: ; preds = %vec.epilog.iter.check292, %vector.main.loop.iter.check280 %vec.epilog.resume.val296 = phi i64 [ %n.vec283, %vec.epilog.iter.check292 ], [ 0, %vector.main.loop.iter.check280 ] %i131 = add i64 %i81, %i86 %i132 = sub i64 %i131, %index.014.i %umin297 = call i64 @llvm.umin.i64(i64 %i88, i64 %i132) %i133 = sub i64 %umin297, %i86 %n.vec299 = and i64 %i133, -8 br label %vec.epilog.vector.body291 vec.epilog.vector.body291: ; preds = %vec.epilog.vector.body291, %vec.epilog.ph293 %index300 = phi i64 [ %vec.epilog.resume.val296, %vec.epilog.ph293 ], [ %index.next301, %vec.epilog.vector.body291 ] %i134 = add nsw i64 %index300, %index.014.i %i135 = getelementptr inbounds i8, i8* %i82, i64 %i134 %i136 = bitcast i8* %i135 to <8 x i8>* %wide.load304 = load <8 x i8>, <8 x i8>* %i136, align 1, !noalias !61 %i137 = add nsw i64 %index300, %i86 %i138 = getelementptr inbounds i8, i8* %i92, i64 %i137 %i139 = bitcast i8* %i138 to <8 x i8>* store <8 x i8> %wide.load304, <8 x i8>* %i139, align 1, !noalias !61 %index.next301 = add nuw i64 %index300, 8 %i140 = icmp eq i64 %index.next301, %n.vec299 br i1 %i140, label %vec.epilog.middle.block289, label %vec.epilog.vector.body291, !llvm.loop !74 vec.epilog.middle.block289: ; preds = %vec.epilog.vector.body291 %cmp.n303 = icmp eq i64 %i133, %n.vec299 br i1 %cmp.n303, label %EndIf9.i.i.i, label %ForBody.i.i.i.i.preheader ForBody.i.i.i.i.preheader: ; preds = %vec.epilog.middle.block289, %vec.epilog.iter.check292, %vector.memcheck264, %iter.check278 %i.02.i.i.i.i.ph = phi i64 [ 0, %iter.check278 ], [ 0, %vector.memcheck264 ], [ %n.vec283, %vec.epilog.iter.check292 ], [ %n.vec299, %vec.epilog.middle.block289 ] br label %ForBody.i.i.i.i ForBody.i.i.i.i: ; preds = %ForBody.i.i.i.i, %ForBody.i.i.i.i.preheader %i.02.i.i.i.i = phi i64 [ %i144, %ForBody.i.i.i.i ], [ %i.02.i.i.i.i.ph, %ForBody.i.i.i.i.preheader ] %.idx12.i = add nsw i64 %i.02.i.i.i.i, %index.014.i %i141 = getelementptr inbounds i8, i8* %i82, i64 %.idx12.i %i142 = load i8, i8* %i141, align 1, !noalias !61 %.idx.i.i.i = add nsw i64 %i.02.i.i.i.i, %i86 %i143 = getelementptr inbounds i8, i8* %i92, i64 %.idx.i.i.i store i8 %i142, i8* %i143, align 1, !noalias !61 %i144 = add nuw i64 %i.02.i.i.i.i, 1 %exitcond.not.i.i.i.i = icmp eq i64 %i144, %n.0.i.i.i br i1 %exitcond.not.i.i.i.i, label %EndIf9.i.i.i, label %ForBody.i.i.i.i, !llvm.loop !76 EndIf9.i.i.i: ; preds = %ForBody.i.i.i.i, %vec.epilog.middle.block289, %middle.block274 %i145 = load i64, i64* %i85, align 8, !noalias !61 %i146 = add nuw i64 %i145, %n.0.i.i.i store i64 %i146, i64* %i85, align 8, !noalias !61 %.pre.i = load i64, i64* %i6, align 8 br label %ErrRetContinue.i52 ErrRetContinue.i52: ; preds = %EndIf9.i.i.i, %WhileBody.i %i147 = phi i64 [ %i81, %WhileBody.i ], [ %.pre.i, %EndIf9.i.i.i ] %.sroa.0.1.ph.i = phi i64 [ 0, %WhileBody.i ], [ %n.0.i.i.i, %EndIf9.i.i.i ] %i148 = add nuw i64 %.sroa.0.1.ph.i, %index.014.i %.not.i51 = icmp eq i64 %i147, %i148 br i1 %.not.i51, label %common.ret, label %WhileBody.i EndIf3: ; preds = %UnwrapErrEnd.thread, %UnwrapErrEnd %padding.0207 = phi i64 [ %i5, %UnwrapErrEnd.thread ], [ %i79, %UnwrapErrEnd ] %i149 = getelementptr inbounds %std.fmt.FormatOptions, %std.fmt.FormatOptions* %arg1, i64 0, i32 2 %i150 = load i2, i2* %i149, align 8 switch i2 %i150, label %SwitchElse [ i2 0, label %SwitchProng i2 1, label %SwitchProng5 i2 -2, label %SwitchProng11 ] SwitchProng: ; preds = %EndIf3 %.idx.i53 = getelementptr %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)", %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)"* %arg2, i64 0, i32 0 br i1 %.not80.i, label %ErrRetContinue, label %WhileBody.i57 WhileBody.i57: ; preds = %ErrRetContinue.i74, %SwitchProng %i151 = phi i64 [ %i217, %ErrRetContinue.i74 ], [ %i7, %SwitchProng ] %index.014.i55 = phi i64 [ %i218, %ErrRetContinue.i74 ], [ 0, %SwitchProng ] %i152 = load i8*, i8** %i8, align 8 %i153 = sub nuw i64 %i151, %index.014.i55 %.idx.val.i56 = load %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"*, %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"** %.idx.i53, align 8 %i154 = icmp eq i64 %i153, 0 br i1 %i154, label %ErrRetContinue.i74, label %EndIf.i.i.i59 EndIf.i.i.i59: ; preds = %WhileBody.i57 %i155 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i56, i64 0, i32 1 %i156 = load i64, i64* %i155, align 8, !noalias !77 %i157 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i56, i64 0, i32 0, i32 1 %i158 = load i64, i64* %i157, align 8, !noalias !77 %.not.i.i.i58 = icmp ugt i64 %i158, %i156 br i1 %.not.i.i.i58, label %EndIf3.i.i.i63, label %common.ret EndIf3.i.i.i63: ; preds = %EndIf.i.i.i59 %i159 = add nuw i64 %i156, %i153 %.not25.i.i.i60 = icmp ugt i64 %i159, %i158 %i160 = sub nuw i64 %i158, %i156 %n.0.i.i.i61 = select i1 %.not25.i.i.i60, i64 %i160, i64 %i153 %i161 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i56, i64 0, i32 0, i32 0 %i162 = load i8*, i8** %i161, align 8, !noalias !77 %.not.i.i.i.i62 = icmp eq i64 %n.0.i.i.i61, 0 br i1 %.not.i.i.i.i62, label %common.ret, label %iter.check401 iter.check401: ; preds = %EndIf3.i.i.i63 %min.iters.check399 = icmp ult i64 %n.0.i.i.i61, 8 br i1 %min.iters.check399, label %ForBody.i.i.i.i68.preheader, label %vector.memcheck387 vector.memcheck387: ; preds = %iter.check401 %scevgep388 = getelementptr i8, i8* %i162, i64 %i156 %i163 = add i64 %i151, %i156 %i164 = sub i64 %i163, %index.014.i55 %umin389 = call i64 @llvm.umin.i64(i64 %i158, i64 %i164) %scevgep390 = getelementptr i8, i8* %i162, i64 %umin389 %scevgep391 = getelementptr i8, i8* %i152, i64 %index.014.i55 %i165 = add i64 %index.014.i55, %umin389 %i166 = sub i64 %i165, %i156 %scevgep392 = getelementptr i8, i8* %i152, i64 %i166 %bound0393 = icmp ult i8* %scevgep388, %scevgep392 %bound1394 = icmp ult i8* %scevgep391, %scevgep390 %found.conflict395 = and i1 %bound0393, %bound1394 br i1 %found.conflict395, label %ForBody.i.i.i.i68.preheader, label %vector.main.loop.iter.check403 vector.main.loop.iter.check403: ; preds = %vector.memcheck387 %min.iters.check402 = icmp ult i64 %n.0.i.i.i61, 32 br i1 %min.iters.check402, label %vec.epilog.ph416, label %vector.ph404 vector.ph404: ; preds = %vector.main.loop.iter.check403 %n.vec406 = and i64 %n.0.i.i.i61, -32 %i167 = add i64 %n.vec406, -32 %i168 = lshr exact i64 %i167, 5 %i169 = add nuw nsw i64 %i168, 1 %xtraiter445 = and i64 %i169, 1 %i170 = icmp eq i64 %i167, 0 br i1 %i170, label %middle.block397.unr-lcssa, label %vector.ph404.new vector.ph404.new: ; preds = %vector.ph404 %unroll_iter447 = and i64 %i169, 1152921504606846974 br label %vector.body398 vector.body398: ; preds = %vector.body398, %vector.ph404.new %index407 = phi i64 [ 0, %vector.ph404.new ], [ %index.next408.1, %vector.body398 ] %niter448 = phi i64 [ %unroll_iter447, %vector.ph404.new ], [ %niter448.nsub.1, %vector.body398 ] %i171 = add nsw i64 %index407, %index.014.i55 %i172 = getelementptr inbounds i8, i8* %i152, i64 %i171 %i173 = bitcast i8* %i172 to <16 x i8>* %wide.load410 = load <16 x i8>, <16 x i8>* %i173, align 1, !alias.scope !82, !noalias !77 %i174 = getelementptr inbounds i8, i8* %i172, i64 16 %i175 = bitcast i8* %i174 to <16 x i8>* %wide.load411 = load <16 x i8>, <16 x i8>* %i175, align 1, !alias.scope !82, !noalias !77 %i176 = add nsw i64 %index407, %i156 %i177 = getelementptr inbounds i8, i8* %i162, i64 %i176 %i178 = bitcast i8* %i177 to <16 x i8>* store <16 x i8> %wide.load410, <16 x i8>* %i178, align 1, !alias.scope !85, !noalias !87 %i179 = getelementptr inbounds i8, i8* %i177, i64 16 %i180 = bitcast i8* %i179 to <16 x i8>* store <16 x i8> %wide.load411, <16 x i8>* %i180, align 1, !alias.scope !85, !noalias !87 %index.next408 = or i64 %index407, 32 %i181 = add nsw i64 %index.next408, %index.014.i55 %i182 = getelementptr inbounds i8, i8* %i152, i64 %i181 %i183 = bitcast i8* %i182 to <16 x i8>* %wide.load410.1 = load <16 x i8>, <16 x i8>* %i183, align 1, !alias.scope !82, !noalias !77 %i184 = getelementptr inbounds i8, i8* %i182, i64 16 %i185 = bitcast i8* %i184 to <16 x i8>* %wide.load411.1 = load <16 x i8>, <16 x i8>* %i185, align 1, !alias.scope !82, !noalias !77 %i186 = add nsw i64 %index.next408, %i156 %i187 = getelementptr inbounds i8, i8* %i162, i64 %i186 %i188 = bitcast i8* %i187 to <16 x i8>* store <16 x i8> %wide.load410.1, <16 x i8>* %i188, align 1, !alias.scope !85, !noalias !87 %i189 = getelementptr inbounds i8, i8* %i187, i64 16 %i190 = bitcast i8* %i189 to <16 x i8>* store <16 x i8> %wide.load411.1, <16 x i8>* %i190, align 1, !alias.scope !85, !noalias !87 %index.next408.1 = add nuw i64 %index407, 64 %niter448.nsub.1 = add i64 %niter448, -2 %niter448.ncmp.1 = icmp eq i64 %niter448.nsub.1, 0 br i1 %niter448.ncmp.1, label %middle.block397.unr-lcssa, label %vector.body398, !llvm.loop !88 middle.block397.unr-lcssa: ; preds = %vector.body398, %vector.ph404 %index407.unr = phi i64 [ 0, %vector.ph404 ], [ %index.next408.1, %vector.body398 ] %lcmp.mod446.not = icmp eq i64 %xtraiter445, 0 br i1 %lcmp.mod446.not, label %middle.block397, label %vector.body398.epil vector.body398.epil: ; preds = %middle.block397.unr-lcssa %i191 = add nsw i64 %index407.unr, %index.014.i55 %i192 = getelementptr inbounds i8, i8* %i152, i64 %i191 %i193 = bitcast i8* %i192 to <16 x i8>* %wide.load410.epil = load <16 x i8>, <16 x i8>* %i193, align 1, !alias.scope !82, !noalias !77 %i194 = getelementptr inbounds i8, i8* %i192, i64 16 %i195 = bitcast i8* %i194 to <16 x i8>* %wide.load411.epil = load <16 x i8>, <16 x i8>* %i195, align 1, !alias.scope !82, !noalias !77 %i196 = add nsw i64 %index407.unr, %i156 %i197 = getelementptr inbounds i8, i8* %i162, i64 %i196 %i198 = bitcast i8* %i197 to <16 x i8>* store <16 x i8> %wide.load410.epil, <16 x i8>* %i198, align 1, !alias.scope !85, !noalias !87 %i199 = getelementptr inbounds i8, i8* %i197, i64 16 %i200 = bitcast i8* %i199 to <16 x i8>* store <16 x i8> %wide.load411.epil, <16 x i8>* %i200, align 1, !alias.scope !85, !noalias !87 br label %middle.block397 middle.block397: ; preds = %vector.body398.epil, %middle.block397.unr-lcssa %cmp.n409 = icmp eq i64 %n.0.i.i.i61, %n.vec406 br i1 %cmp.n409, label %EndIf9.i.i.i70, label %vec.epilog.iter.check415 vec.epilog.iter.check415: ; preds = %middle.block397 %n.vec.remaining417 = and i64 %n.0.i.i.i61, 24 %min.epilog.iters.check418 = icmp eq i64 %n.vec.remaining417, 0 br i1 %min.epilog.iters.check418, label %ForBody.i.i.i.i68.preheader, label %vec.epilog.ph416 vec.epilog.ph416: ; preds = %vec.epilog.iter.check415, %vector.main.loop.iter.check403 %vec.epilog.resume.val419 = phi i64 [ %n.vec406, %vec.epilog.iter.check415 ], [ 0, %vector.main.loop.iter.check403 ] %i201 = add i64 %i151, %i156 %i202 = sub i64 %i201, %index.014.i55 %umin420 = call i64 @llvm.umin.i64(i64 %i158, i64 %i202) %i203 = sub i64 %umin420, %i156 %n.vec422 = and i64 %i203, -8 br label %vec.epilog.vector.body414 vec.epilog.vector.body414: ; preds = %vec.epilog.vector.body414, %vec.epilog.ph416 %index423 = phi i64 [ %vec.epilog.resume.val419, %vec.epilog.ph416 ], [ %index.next424, %vec.epilog.vector.body414 ] %i204 = add nsw i64 %index423, %index.014.i55 %i205 = getelementptr inbounds i8, i8* %i152, i64 %i204 %i206 = bitcast i8* %i205 to <8 x i8>* %wide.load427 = load <8 x i8>, <8 x i8>* %i206, align 1, !noalias !77 %i207 = add nsw i64 %index423, %i156 %i208 = getelementptr inbounds i8, i8* %i162, i64 %i207 %i209 = bitcast i8* %i208 to <8 x i8>* store <8 x i8> %wide.load427, <8 x i8>* %i209, align 1, !noalias !77 %index.next424 = add nuw i64 %index423, 8 %i210 = icmp eq i64 %index.next424, %n.vec422 br i1 %i210, label %vec.epilog.middle.block412, label %vec.epilog.vector.body414, !llvm.loop !89 vec.epilog.middle.block412: ; preds = %vec.epilog.vector.body414 %cmp.n426 = icmp eq i64 %i203, %n.vec422 br i1 %cmp.n426, label %EndIf9.i.i.i70, label %ForBody.i.i.i.i68.preheader ForBody.i.i.i.i68.preheader: ; preds = %vec.epilog.middle.block412, %vec.epilog.iter.check415, %vector.memcheck387, %iter.check401 %i.02.i.i.i.i64.ph = phi i64 [ 0, %iter.check401 ], [ 0, %vector.memcheck387 ], [ %n.vec406, %vec.epilog.iter.check415 ], [ %n.vec422, %vec.epilog.middle.block412 ] br label %ForBody.i.i.i.i68 ForBody.i.i.i.i68: ; preds = %ForBody.i.i.i.i68, %ForBody.i.i.i.i68.preheader %i.02.i.i.i.i64 = phi i64 [ %i214, %ForBody.i.i.i.i68 ], [ %i.02.i.i.i.i64.ph, %ForBody.i.i.i.i68.preheader ] %.idx12.i65 = add nsw i64 %i.02.i.i.i.i64, %index.014.i55 %i211 = getelementptr inbounds i8, i8* %i152, i64 %.idx12.i65 %i212 = load i8, i8* %i211, align 1, !noalias !77 %.idx.i.i.i66 = add nsw i64 %i.02.i.i.i.i64, %i156 %i213 = getelementptr inbounds i8, i8* %i162, i64 %.idx.i.i.i66 store i8 %i212, i8* %i213, align 1, !noalias !77 %i214 = add nuw i64 %i.02.i.i.i.i64, 1 %exitcond.not.i.i.i.i67 = icmp eq i64 %i214, %n.0.i.i.i61 br i1 %exitcond.not.i.i.i.i67, label %EndIf9.i.i.i70, label %ForBody.i.i.i.i68, !llvm.loop !90 EndIf9.i.i.i70: ; preds = %ForBody.i.i.i.i68, %vec.epilog.middle.block412, %middle.block397 %i215 = load i64, i64* %i155, align 8, !noalias !77 %i216 = add nuw i64 %i215, %n.0.i.i.i61 store i64 %i216, i64* %i155, align 8, !noalias !77 %.pre.i69 = load i64, i64* %i6, align 8 br label %ErrRetContinue.i74 ErrRetContinue.i74: ; preds = %EndIf9.i.i.i70, %WhileBody.i57 %i217 = phi i64 [ %i151, %WhileBody.i57 ], [ %.pre.i69, %EndIf9.i.i.i70 ] %.sroa.0.1.ph.i72 = phi i64 [ 0, %WhileBody.i57 ], [ %n.0.i.i.i61, %EndIf9.i.i.i70 ] %i218 = add nuw i64 %.sroa.0.1.ph.i72, %index.014.i55 %.not.i73 = icmp eq i64 %i217, %i218 br i1 %.not.i73, label %ErrRetContinue, label %WhileBody.i57 ErrRetContinue: ; preds = %ErrRetContinue.i74, %SwitchProng %i219 = getelementptr inbounds %std.fmt.FormatOptions, %std.fmt.FormatOptions* %arg1, i64 0, i32 3 %i220 = load i8, i8* %i219, align 1 %i221 = getelementptr inbounds [256 x i8], [256 x i8]* %bytes.i, i64 0, i64 0 call void @llvm.lifetime.start.p0i8(i64 256, i8* nonnull %i221) call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 1 dereferenceable(256) %i221, i8 %i220, i64 256, i1 false) #8 br label %WhileBody.i76 WhileBody.i76: ; preds = %ErrRetContinue.i80, %ErrRetContinue %remaining.013.i = phi i64 [ %i236, %ErrRetContinue.i80 ], [ %padding.0207, %ErrRetContinue ] %i222 = icmp ult i64 %remaining.013.i, 256 %..i.i = select i1 %i222, i64 %remaining.013.i, i64 256 br label %WhileBody.i.i WhileBody.i.i: ; preds = %ErrRetContinue.i.i, %WhileBody.i76 %index.014.i.i = phi i64 [ %i235, %ErrRetContinue.i.i ], [ 0, %WhileBody.i76 ] %i223 = sub nuw i64 %..i.i, %index.014.i.i %.idx.val.i.i = load %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"*, %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"** %.idx.i53, align 8 %i224 = icmp eq i64 %i223, 0 br i1 %i224, label %ErrRetContinue.i.i, label %EndIf.i.i.i.i EndIf.i.i.i.i: ; preds = %WhileBody.i.i %i225 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i.i, i64 0, i32 1 %i226 = load i64, i64* %i225, align 8, !noalias !91 %i227 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i.i, i64 0, i32 0, i32 1 %i228 = load i64, i64* %i227, align 8, !noalias !91 %.not.i.i.i.i77 = icmp ugt i64 %i228, %i226 br i1 %.not.i.i.i.i77, label %EndIf3.i.i.i.i, label %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes.exit.thread" EndIf3.i.i.i.i: ; preds = %EndIf.i.i.i.i %i229 = add nuw i64 %i226, %i223 %.not25.i.i.i.i = icmp ugt i64 %i229, %i228 %i230 = sub nuw i64 %i228, %i226 %n.0.i.i.i.i = select i1 %.not25.i.i.i.i, i64 %i230, i64 %i223 %.not.i.i.i.i.i = icmp eq i64 %n.0.i.i.i.i, 0 br i1 %.not.i.i.i.i.i, label %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes.exit.thread", label %ForBody.i.i.i.i.preheader.i ForBody.i.i.i.i.preheader.i: ; preds = %EndIf3.i.i.i.i %i231 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i.i, i64 0, i32 0, i32 0 %i232 = load i8*, i8** %i231, align 8, !noalias !91 %scevgep.i = getelementptr i8, i8* %i232, i64 %i226 %scevgep16.i = getelementptr [256 x i8], [256 x i8]* %bytes.i, i64 0, i64 %index.014.i.i call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %scevgep.i, i8* align 1 %scevgep16.i, i64 %n.0.i.i.i.i, i1 false) #8 %i233 = load i64, i64* %i225, align 8, !noalias !91 %i234 = add nuw i64 %i233, %n.0.i.i.i.i store i64 %i234, i64* %i225, align 8, !noalias !91 br label %ErrRetContinue.i.i ErrRetContinue.i.i: ; preds = %ForBody.i.i.i.i.preheader.i, %WhileBody.i.i %.sroa.0.1.ph.i.i = phi i64 [ 0, %WhileBody.i.i ], [ %n.0.i.i.i.i, %ForBody.i.i.i.i.preheader.i ] %i235 = add nuw i64 %.sroa.0.1.ph.i.i, %index.014.i.i %.not.i5.i = icmp eq i64 %..i.i, %i235 br i1 %.not.i5.i, label %ErrRetContinue.i80, label %WhileBody.i.i ErrRetContinue.i80: ; preds = %ErrRetContinue.i.i %i236 = sub nuw i64 %remaining.013.i, %..i.i %.not.i79 = icmp eq i64 %i236, 0 br i1 %.not.i79, label %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes.exit", label %WhileBody.i76 "std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes.exit.thread": ; preds = %EndIf3.i.i.i.i, %EndIf.i.i.i.i call void @llvm.lifetime.end.p0i8(i64 256, i8* nonnull %i221) br label %common.ret "std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes.exit": ; preds = %ErrRetContinue.i80 call void @llvm.lifetime.end.p0i8(i64 256, i8* nonnull %i221) br label %OptionalEndIf SwitchProng5: ; preds = %EndIf3 %i237 = add nuw i64 %padding.0207, 1 %i238 = lshr i64 %i237, 1 %i239 = getelementptr inbounds %std.fmt.FormatOptions, %std.fmt.FormatOptions* %arg1, i64 0, i32 3 %i240 = load i8, i8* %i239, align 1 %i241 = getelementptr inbounds [256 x i8], [256 x i8]* %bytes.i81, i64 0, i64 0 call void @llvm.lifetime.start.p0i8(i64 256, i8* nonnull %i241) call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 1 dereferenceable(256) %i241, i8 %i240, i64 256, i1 false) #8 %.idx.i.i83 = getelementptr %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)", %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)"* %arg2, i64 0, i32 0 %.not12.i84 = icmp ult i64 %padding.0207, 2 br i1 %.not12.i84, label %ErrRetContinue7, label %WhileBody.i87.preheader WhileBody.i87.preheader: ; preds = %SwitchProng5 %i242 = lshr i64 %padding.0207, 1 br label %WhileBody.i87 WhileBody.i87: ; preds = %ErrRetContinue.i105, %WhileBody.i87.preheader %remaining.013.i85 = phi i64 [ %i257, %ErrRetContinue.i105 ], [ %i242, %WhileBody.i87.preheader ] %i243 = icmp ult i64 %remaining.013.i85, 256 %..i.i86 = select i1 %i243, i64 %remaining.013.i85, i64 256 br label %WhileBody.i.i90 WhileBody.i.i90: ; preds = %ErrRetContinue.i.i102, %WhileBody.i87 %index.014.i.i88 = phi i64 [ %i256, %ErrRetContinue.i.i102 ], [ 0, %WhileBody.i87 ] %i244 = sub nuw i64 %..i.i86, %index.014.i.i88 %.idx.val.i.i89 = load %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"*, %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"** %.idx.i.i83, align 8 %i245 = icmp eq i64 %i244, 0 br i1 %i245, label %ErrRetContinue.i.i102, label %EndIf.i.i.i.i92 EndIf.i.i.i.i92: ; preds = %WhileBody.i.i90 %i246 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i.i89, i64 0, i32 1 %i247 = load i64, i64* %i246, align 8, !noalias !96 %i248 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i.i89, i64 0, i32 0, i32 1 %i249 = load i64, i64* %i248, align 8, !noalias !96 %.not.i.i.i.i91 = icmp ugt i64 %i249, %i247 br i1 %.not.i.i.i.i91, label %EndIf3.i.i.i.i96, label %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes.exit106" EndIf3.i.i.i.i96: ; preds = %EndIf.i.i.i.i92 %i250 = add nuw i64 %i247, %i244 %.not25.i.i.i.i93 = icmp ugt i64 %i250, %i249 %i251 = sub nuw i64 %i249, %i247 %n.0.i.i.i.i94 = select i1 %.not25.i.i.i.i93, i64 %i251, i64 %i244 %.not.i.i.i.i.i95 = icmp eq i64 %n.0.i.i.i.i94, 0 br i1 %.not.i.i.i.i.i95, label %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes.exit106", label %ForBody.i.i.i.i.preheader.i99 ForBody.i.i.i.i.preheader.i99: ; preds = %EndIf3.i.i.i.i96 %i252 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i.i89, i64 0, i32 0, i32 0 %i253 = load i8*, i8** %i252, align 8, !noalias !96 %scevgep.i97 = getelementptr i8, i8* %i253, i64 %i247 %scevgep16.i98 = getelementptr [256 x i8], [256 x i8]* %bytes.i81, i64 0, i64 %index.014.i.i88 call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %scevgep.i97, i8* align 1 %scevgep16.i98, i64 %n.0.i.i.i.i94, i1 false) #8 %i254 = load i64, i64* %i246, align 8, !noalias !96 %i255 = add nuw i64 %i254, %n.0.i.i.i.i94 store i64 %i255, i64* %i246, align 8, !noalias !96 br label %ErrRetContinue.i.i102 ErrRetContinue.i.i102: ; preds = %ForBody.i.i.i.i.preheader.i99, %WhileBody.i.i90 %.sroa.0.1.ph.i.i100 = phi i64 [ 0, %WhileBody.i.i90 ], [ %n.0.i.i.i.i94, %ForBody.i.i.i.i.preheader.i99 ] %i256 = add nuw i64 %.sroa.0.1.ph.i.i100, %index.014.i.i88 %.not.i5.i101 = icmp eq i64 %..i.i86, %i256 br i1 %.not.i5.i101, label %ErrRetContinue.i105, label %WhileBody.i.i90 ErrRetContinue.i105: ; preds = %ErrRetContinue.i.i102 %i257 = sub nuw i64 %remaining.013.i85, %..i.i86 %.not.i104 = icmp eq i64 %i257, 0 br i1 %.not.i104, label %ErrRetContinue7.loopexit, label %WhileBody.i87 "std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes.exit106": ; preds = %EndIf3.i.i.i.i96, %EndIf.i.i.i.i92 call void @llvm.lifetime.end.p0i8(i64 256, i8* nonnull %i241) br label %common.ret ErrRetContinue7.loopexit: ; preds = %ErrRetContinue.i105 %.pre = load i64, i64* %i6, align 8 br label %ErrRetContinue7 ErrRetContinue7: ; preds = %ErrRetContinue7.loopexit, %SwitchProng5 %i258 = phi i64 [ %.pre, %ErrRetContinue7.loopexit ], [ %i7, %SwitchProng5 ] call void @llvm.lifetime.end.p0i8(i64 256, i8* nonnull %i241) %.not13.i108 = icmp eq i64 %i258, 0 br i1 %.not13.i108, label %ErrRetContinue9, label %WhileBody.i111 WhileBody.i111: ; preds = %ErrRetContinue.i128, %ErrRetContinue7 %i259 = phi i64 [ %i325, %ErrRetContinue.i128 ], [ %i258, %ErrRetContinue7 ] %index.014.i109 = phi i64 [ %i326, %ErrRetContinue.i128 ], [ 0, %ErrRetContinue7 ] %i260 = load i8*, i8** %i8, align 8 %i261 = sub nuw i64 %i259, %index.014.i109 %.idx.val.i110 = load %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"*, %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"** %.idx.i.i83, align 8 %i262 = icmp eq i64 %i261, 0 br i1 %i262, label %ErrRetContinue.i128, label %EndIf.i.i.i113 EndIf.i.i.i113: ; preds = %WhileBody.i111 %i263 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i110, i64 0, i32 1 %i264 = load i64, i64* %i263, align 8, !noalias !101 %i265 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i110, i64 0, i32 0, i32 1 %i266 = load i64, i64* %i265, align 8, !noalias !101 %.not.i.i.i112 = icmp ugt i64 %i266, %i264 br i1 %.not.i.i.i112, label %EndIf3.i.i.i117, label %common.ret EndIf3.i.i.i117: ; preds = %EndIf.i.i.i113 %i267 = add nuw i64 %i264, %i261 %.not25.i.i.i114 = icmp ugt i64 %i267, %i266 %i268 = sub nuw i64 %i266, %i264 %n.0.i.i.i115 = select i1 %.not25.i.i.i114, i64 %i268, i64 %i261 %i269 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i110, i64 0, i32 0, i32 0 %i270 = load i8*, i8** %i269, align 8, !noalias !101 %.not.i.i.i.i116 = icmp eq i64 %n.0.i.i.i115, 0 br i1 %.not.i.i.i.i116, label %common.ret, label %iter.check360 iter.check360: ; preds = %EndIf3.i.i.i117 %min.iters.check358 = icmp ult i64 %n.0.i.i.i115, 8 br i1 %min.iters.check358, label %ForBody.i.i.i.i122.preheader, label %vector.memcheck346 vector.memcheck346: ; preds = %iter.check360 %scevgep347 = getelementptr i8, i8* %i270, i64 %i264 %i271 = add i64 %i259, %i264 %i272 = sub i64 %i271, %index.014.i109 %umin348 = call i64 @llvm.umin.i64(i64 %i266, i64 %i272) %scevgep349 = getelementptr i8, i8* %i270, i64 %umin348 %scevgep350 = getelementptr i8, i8* %i260, i64 %index.014.i109 %i273 = add i64 %index.014.i109, %umin348 %i274 = sub i64 %i273, %i264 %scevgep351 = getelementptr i8, i8* %i260, i64 %i274 %bound0352 = icmp ult i8* %scevgep347, %scevgep351 %bound1353 = icmp ult i8* %scevgep350, %scevgep349 %found.conflict354 = and i1 %bound0352, %bound1353 br i1 %found.conflict354, label %ForBody.i.i.i.i122.preheader, label %vector.main.loop.iter.check362 vector.main.loop.iter.check362: ; preds = %vector.memcheck346 %min.iters.check361 = icmp ult i64 %n.0.i.i.i115, 32 br i1 %min.iters.check361, label %vec.epilog.ph375, label %vector.ph363 vector.ph363: ; preds = %vector.main.loop.iter.check362 %n.vec365 = and i64 %n.0.i.i.i115, -32 %i275 = add i64 %n.vec365, -32 %i276 = lshr exact i64 %i275, 5 %i277 = add nuw nsw i64 %i276, 1 %xtraiter441 = and i64 %i277, 1 %i278 = icmp eq i64 %i275, 0 br i1 %i278, label %middle.block356.unr-lcssa, label %vector.ph363.new vector.ph363.new: ; preds = %vector.ph363 %unroll_iter443 = and i64 %i277, 1152921504606846974 br label %vector.body357 vector.body357: ; preds = %vector.body357, %vector.ph363.new %index366 = phi i64 [ 0, %vector.ph363.new ], [ %index.next367.1, %vector.body357 ] %niter444 = phi i64 [ %unroll_iter443, %vector.ph363.new ], [ %niter444.nsub.1, %vector.body357 ] %i279 = add nsw i64 %index366, %index.014.i109 %i280 = getelementptr inbounds i8, i8* %i260, i64 %i279 %i281 = bitcast i8* %i280 to <16 x i8>* %wide.load369 = load <16 x i8>, <16 x i8>* %i281, align 1, !alias.scope !106, !noalias !101 %i282 = getelementptr inbounds i8, i8* %i280, i64 16 %i283 = bitcast i8* %i282 to <16 x i8>* %wide.load370 = load <16 x i8>, <16 x i8>* %i283, align 1, !alias.scope !106, !noalias !101 %i284 = add nsw i64 %index366, %i264 %i285 = getelementptr inbounds i8, i8* %i270, i64 %i284 %i286 = bitcast i8* %i285 to <16 x i8>* store <16 x i8> %wide.load369, <16 x i8>* %i286, align 1, !alias.scope !109, !noalias !111 %i287 = getelementptr inbounds i8, i8* %i285, i64 16 %i288 = bitcast i8* %i287 to <16 x i8>* store <16 x i8> %wide.load370, <16 x i8>* %i288, align 1, !alias.scope !109, !noalias !111 %index.next367 = or i64 %index366, 32 %i289 = add nsw i64 %index.next367, %index.014.i109 %i290 = getelementptr inbounds i8, i8* %i260, i64 %i289 %i291 = bitcast i8* %i290 to <16 x i8>* %wide.load369.1 = load <16 x i8>, <16 x i8>* %i291, align 1, !alias.scope !106, !noalias !101 %i292 = getelementptr inbounds i8, i8* %i290, i64 16 %i293 = bitcast i8* %i292 to <16 x i8>* %wide.load370.1 = load <16 x i8>, <16 x i8>* %i293, align 1, !alias.scope !106, !noalias !101 %i294 = add nsw i64 %index.next367, %i264 %i295 = getelementptr inbounds i8, i8* %i270, i64 %i294 %i296 = bitcast i8* %i295 to <16 x i8>* store <16 x i8> %wide.load369.1, <16 x i8>* %i296, align 1, !alias.scope !109, !noalias !111 %i297 = getelementptr inbounds i8, i8* %i295, i64 16 %i298 = bitcast i8* %i297 to <16 x i8>* store <16 x i8> %wide.load370.1, <16 x i8>* %i298, align 1, !alias.scope !109, !noalias !111 %index.next367.1 = add nuw i64 %index366, 64 %niter444.nsub.1 = add i64 %niter444, -2 %niter444.ncmp.1 = icmp eq i64 %niter444.nsub.1, 0 br i1 %niter444.ncmp.1, label %middle.block356.unr-lcssa, label %vector.body357, !llvm.loop !112 middle.block356.unr-lcssa: ; preds = %vector.body357, %vector.ph363 %index366.unr = phi i64 [ 0, %vector.ph363 ], [ %index.next367.1, %vector.body357 ] %lcmp.mod442.not = icmp eq i64 %xtraiter441, 0 br i1 %lcmp.mod442.not, label %middle.block356, label %vector.body357.epil vector.body357.epil: ; preds = %middle.block356.unr-lcssa %i299 = add nsw i64 %index366.unr, %index.014.i109 %i300 = getelementptr inbounds i8, i8* %i260, i64 %i299 %i301 = bitcast i8* %i300 to <16 x i8>* %wide.load369.epil = load <16 x i8>, <16 x i8>* %i301, align 1, !alias.scope !106, !noalias !101 %i302 = getelementptr inbounds i8, i8* %i300, i64 16 %i303 = bitcast i8* %i302 to <16 x i8>* %wide.load370.epil = load <16 x i8>, <16 x i8>* %i303, align 1, !alias.scope !106, !noalias !101 %i304 = add nsw i64 %index366.unr, %i264 %i305 = getelementptr inbounds i8, i8* %i270, i64 %i304 %i306 = bitcast i8* %i305 to <16 x i8>* store <16 x i8> %wide.load369.epil, <16 x i8>* %i306, align 1, !alias.scope !109, !noalias !111 %i307 = getelementptr inbounds i8, i8* %i305, i64 16 %i308 = bitcast i8* %i307 to <16 x i8>* store <16 x i8> %wide.load370.epil, <16 x i8>* %i308, align 1, !alias.scope !109, !noalias !111 br label %middle.block356 middle.block356: ; preds = %vector.body357.epil, %middle.block356.unr-lcssa %cmp.n368 = icmp eq i64 %n.0.i.i.i115, %n.vec365 br i1 %cmp.n368, label %EndIf9.i.i.i124, label %vec.epilog.iter.check374 vec.epilog.iter.check374: ; preds = %middle.block356 %n.vec.remaining376 = and i64 %n.0.i.i.i115, 24 %min.epilog.iters.check377 = icmp eq i64 %n.vec.remaining376, 0 br i1 %min.epilog.iters.check377, label %ForBody.i.i.i.i122.preheader, label %vec.epilog.ph375 vec.epilog.ph375: ; preds = %vec.epilog.iter.check374, %vector.main.loop.iter.check362 %vec.epilog.resume.val378 = phi i64 [ %n.vec365, %vec.epilog.iter.check374 ], [ 0, %vector.main.loop.iter.check362 ] %i309 = add i64 %i259, %i264 %i310 = sub i64 %i309, %index.014.i109 %umin379 = call i64 @llvm.umin.i64(i64 %i266, i64 %i310) %i311 = sub i64 %umin379, %i264 %n.vec381 = and i64 %i311, -8 br label %vec.epilog.vector.body373 vec.epilog.vector.body373: ; preds = %vec.epilog.vector.body373, %vec.epilog.ph375 %index382 = phi i64 [ %vec.epilog.resume.val378, %vec.epilog.ph375 ], [ %index.next383, %vec.epilog.vector.body373 ] %i312 = add nsw i64 %index382, %index.014.i109 %i313 = getelementptr inbounds i8, i8* %i260, i64 %i312 %i314 = bitcast i8* %i313 to <8 x i8>* %wide.load386 = load <8 x i8>, <8 x i8>* %i314, align 1, !noalias !101 %i315 = add nsw i64 %index382, %i264 %i316 = getelementptr inbounds i8, i8* %i270, i64 %i315 %i317 = bitcast i8* %i316 to <8 x i8>* store <8 x i8> %wide.load386, <8 x i8>* %i317, align 1, !noalias !101 %index.next383 = add nuw i64 %index382, 8 %i318 = icmp eq i64 %index.next383, %n.vec381 br i1 %i318, label %vec.epilog.middle.block371, label %vec.epilog.vector.body373, !llvm.loop !113 vec.epilog.middle.block371: ; preds = %vec.epilog.vector.body373 %cmp.n385 = icmp eq i64 %i311, %n.vec381 br i1 %cmp.n385, label %EndIf9.i.i.i124, label %ForBody.i.i.i.i122.preheader ForBody.i.i.i.i122.preheader: ; preds = %vec.epilog.middle.block371, %vec.epilog.iter.check374, %vector.memcheck346, %iter.check360 %i.02.i.i.i.i118.ph = phi i64 [ 0, %iter.check360 ], [ 0, %vector.memcheck346 ], [ %n.vec365, %vec.epilog.iter.check374 ], [ %n.vec381, %vec.epilog.middle.block371 ] br label %ForBody.i.i.i.i122 ForBody.i.i.i.i122: ; preds = %ForBody.i.i.i.i122, %ForBody.i.i.i.i122.preheader %i.02.i.i.i.i118 = phi i64 [ %i322, %ForBody.i.i.i.i122 ], [ %i.02.i.i.i.i118.ph, %ForBody.i.i.i.i122.preheader ] %.idx12.i119 = add nsw i64 %i.02.i.i.i.i118, %index.014.i109 %i319 = getelementptr inbounds i8, i8* %i260, i64 %.idx12.i119 %i320 = load i8, i8* %i319, align 1, !noalias !101 %.idx.i.i.i120 = add nsw i64 %i.02.i.i.i.i118, %i264 %i321 = getelementptr inbounds i8, i8* %i270, i64 %.idx.i.i.i120 store i8 %i320, i8* %i321, align 1, !noalias !101 %i322 = add nuw i64 %i.02.i.i.i.i118, 1 %exitcond.not.i.i.i.i121 = icmp eq i64 %i322, %n.0.i.i.i115 br i1 %exitcond.not.i.i.i.i121, label %EndIf9.i.i.i124, label %ForBody.i.i.i.i122, !llvm.loop !114 EndIf9.i.i.i124: ; preds = %ForBody.i.i.i.i122, %vec.epilog.middle.block371, %middle.block356 %i323 = load i64, i64* %i263, align 8, !noalias !101 %i324 = add nuw i64 %i323, %n.0.i.i.i115 store i64 %i324, i64* %i263, align 8, !noalias !101 %.pre.i123 = load i64, i64* %i6, align 8 br label %ErrRetContinue.i128 ErrRetContinue.i128: ; preds = %EndIf9.i.i.i124, %WhileBody.i111 %i325 = phi i64 [ %i259, %WhileBody.i111 ], [ %.pre.i123, %EndIf9.i.i.i124 ] %.sroa.0.1.ph.i126 = phi i64 [ 0, %WhileBody.i111 ], [ %n.0.i.i.i115, %EndIf9.i.i.i124 ] %i326 = add nuw i64 %.sroa.0.1.ph.i126, %index.014.i109 %.not.i127 = icmp eq i64 %i325, %i326 br i1 %.not.i127, label %ErrRetContinue9, label %WhileBody.i111 ErrRetContinue9: ; preds = %ErrRetContinue.i128, %ErrRetContinue7 %i327 = load i8, i8* %i239, align 1 %i328 = tail call fastcc i16 @"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes"(%"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)"* %arg2, i8 %i327, i64 %i238) %.not46 = icmp eq i16 %i328, 0 br i1 %.not46, label %OptionalEndIf, label %common.ret SwitchProng11: ; preds = %EndIf3 %i329 = getelementptr inbounds %std.fmt.FormatOptions, %std.fmt.FormatOptions* %arg1, i64 0, i32 3 %i330 = load i8, i8* %i329, align 1 %i331 = getelementptr inbounds [256 x i8], [256 x i8]* %bytes.i130, i64 0, i64 0 call void @llvm.lifetime.start.p0i8(i64 256, i8* nonnull %i331) call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 1 dereferenceable(256) %i331, i8 %i330, i64 256, i1 false) #8 %.idx.i.i132 = getelementptr %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)", %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)"* %arg2, i64 0, i32 0 br label %WhileBody.i136 WhileBody.i136: ; preds = %ErrRetContinue.i154, %SwitchProng11 %remaining.013.i134 = phi i64 [ %i346, %ErrRetContinue.i154 ], [ %padding.0207, %SwitchProng11 ] %i332 = icmp ult i64 %remaining.013.i134, 256 %..i.i135 = select i1 %i332, i64 %remaining.013.i134, i64 256 br label %WhileBody.i.i139 WhileBody.i.i139: ; preds = %ErrRetContinue.i.i151, %WhileBody.i136 %index.014.i.i137 = phi i64 [ %i345, %ErrRetContinue.i.i151 ], [ 0, %WhileBody.i136 ] %i333 = sub nuw i64 %..i.i135, %index.014.i.i137 %.idx.val.i.i138 = load %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"*, %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"** %.idx.i.i132, align 8 %i334 = icmp eq i64 %i333, 0 br i1 %i334, label %ErrRetContinue.i.i151, label %EndIf.i.i.i.i141 EndIf.i.i.i.i141: ; preds = %WhileBody.i.i139 %i335 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i.i138, i64 0, i32 1 %i336 = load i64, i64* %i335, align 8, !noalias !115 %i337 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i.i138, i64 0, i32 0, i32 1 %i338 = load i64, i64* %i337, align 8, !noalias !115 %.not.i.i.i.i140 = icmp ugt i64 %i338, %i336 br i1 %.not.i.i.i.i140, label %EndIf3.i.i.i.i145, label %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes.exit155.thread" EndIf3.i.i.i.i145: ; preds = %EndIf.i.i.i.i141 %i339 = add nuw i64 %i336, %i333 %.not25.i.i.i.i142 = icmp ugt i64 %i339, %i338 %i340 = sub nuw i64 %i338, %i336 %n.0.i.i.i.i143 = select i1 %.not25.i.i.i.i142, i64 %i340, i64 %i333 %.not.i.i.i.i.i144 = icmp eq i64 %n.0.i.i.i.i143, 0 br i1 %.not.i.i.i.i.i144, label %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes.exit155.thread", label %ForBody.i.i.i.i.preheader.i148 ForBody.i.i.i.i.preheader.i148: ; preds = %EndIf3.i.i.i.i145 %i341 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i.i138, i64 0, i32 0, i32 0 %i342 = load i8*, i8** %i341, align 8, !noalias !115 %scevgep.i146 = getelementptr i8, i8* %i342, i64 %i336 %scevgep16.i147 = getelementptr [256 x i8], [256 x i8]* %bytes.i130, i64 0, i64 %index.014.i.i137 call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %scevgep.i146, i8* align 1 %scevgep16.i147, i64 %n.0.i.i.i.i143, i1 false) #8 %i343 = load i64, i64* %i335, align 8, !noalias !115 %i344 = add nuw i64 %i343, %n.0.i.i.i.i143 store i64 %i344, i64* %i335, align 8, !noalias !115 br label %ErrRetContinue.i.i151 ErrRetContinue.i.i151: ; preds = %ForBody.i.i.i.i.preheader.i148, %WhileBody.i.i139 %.sroa.0.1.ph.i.i149 = phi i64 [ 0, %WhileBody.i.i139 ], [ %n.0.i.i.i.i143, %ForBody.i.i.i.i.preheader.i148 ] %i345 = add nuw i64 %.sroa.0.1.ph.i.i149, %index.014.i.i137 %.not.i5.i150 = icmp eq i64 %..i.i135, %i345 br i1 %.not.i5.i150, label %ErrRetContinue.i154, label %WhileBody.i.i139 ErrRetContinue.i154: ; preds = %ErrRetContinue.i.i151 %i346 = sub nuw i64 %remaining.013.i134, %..i.i135 %.not.i153 = icmp eq i64 %i346, 0 br i1 %.not.i153, label %ErrRetContinue13, label %WhileBody.i136 "std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes.exit155.thread": ; preds = %EndIf3.i.i.i.i145, %EndIf.i.i.i.i141 call void @llvm.lifetime.end.p0i8(i64 256, i8* nonnull %i331) br label %common.ret ErrRetContinue13: ; preds = %ErrRetContinue.i154 call void @llvm.lifetime.end.p0i8(i64 256, i8* nonnull %i331) %i347 = load i64, i64* %i6, align 8 %.not13.i157 = icmp eq i64 %i347, 0 br i1 %.not13.i157, label %OptionalEndIf, label %WhileBody.i160 WhileBody.i160: ; preds = %ErrRetContinue.i177, %ErrRetContinue13 %i348 = phi i64 [ %i414, %ErrRetContinue.i177 ], [ %i347, %ErrRetContinue13 ] %index.014.i158 = phi i64 [ %i415, %ErrRetContinue.i177 ], [ 0, %ErrRetContinue13 ] %i349 = load i8*, i8** %i8, align 8 %i350 = sub nuw i64 %i348, %index.014.i158 %.idx.val.i159 = load %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"*, %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"** %.idx.i.i132, align 8 %i351 = icmp eq i64 %i350, 0 br i1 %i351, label %ErrRetContinue.i177, label %EndIf.i.i.i162 EndIf.i.i.i162: ; preds = %WhileBody.i160 %i352 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i159, i64 0, i32 1 %i353 = load i64, i64* %i352, align 8, !noalias !120 %i354 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i159, i64 0, i32 0, i32 1 %i355 = load i64, i64* %i354, align 8, !noalias !120 %.not.i.i.i161 = icmp ugt i64 %i355, %i353 br i1 %.not.i.i.i161, label %EndIf3.i.i.i166, label %common.ret EndIf3.i.i.i166: ; preds = %EndIf.i.i.i162 %i356 = add nuw i64 %i353, %i350 %.not25.i.i.i163 = icmp ugt i64 %i356, %i355 %i357 = sub nuw i64 %i355, %i353 %n.0.i.i.i164 = select i1 %.not25.i.i.i163, i64 %i357, i64 %i350 %i358 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i159, i64 0, i32 0, i32 0 %i359 = load i8*, i8** %i358, align 8, !noalias !120 %.not.i.i.i.i165 = icmp eq i64 %n.0.i.i.i164, 0 br i1 %.not.i.i.i.i165, label %common.ret, label %iter.check319 iter.check319: ; preds = %EndIf3.i.i.i166 %min.iters.check317 = icmp ult i64 %n.0.i.i.i164, 8 br i1 %min.iters.check317, label %ForBody.i.i.i.i171.preheader, label %vector.memcheck305 vector.memcheck305: ; preds = %iter.check319 %scevgep306 = getelementptr i8, i8* %i359, i64 %i353 %i360 = add i64 %i348, %i353 %i361 = sub i64 %i360, %index.014.i158 %umin307 = call i64 @llvm.umin.i64(i64 %i355, i64 %i361) %scevgep308 = getelementptr i8, i8* %i359, i64 %umin307 %scevgep309 = getelementptr i8, i8* %i349, i64 %index.014.i158 %i362 = add i64 %index.014.i158, %umin307 %i363 = sub i64 %i362, %i353 %scevgep310 = getelementptr i8, i8* %i349, i64 %i363 %bound0311 = icmp ult i8* %scevgep306, %scevgep310 %bound1312 = icmp ult i8* %scevgep309, %scevgep308 %found.conflict313 = and i1 %bound0311, %bound1312 br i1 %found.conflict313, label %ForBody.i.i.i.i171.preheader, label %vector.main.loop.iter.check321 vector.main.loop.iter.check321: ; preds = %vector.memcheck305 %min.iters.check320 = icmp ult i64 %n.0.i.i.i164, 32 br i1 %min.iters.check320, label %vec.epilog.ph334, label %vector.ph322 vector.ph322: ; preds = %vector.main.loop.iter.check321 %n.vec324 = and i64 %n.0.i.i.i164, -32 %i364 = add i64 %n.vec324, -32 %i365 = lshr exact i64 %i364, 5 %i366 = add nuw nsw i64 %i365, 1 %xtraiter437 = and i64 %i366, 1 %i367 = icmp eq i64 %i364, 0 br i1 %i367, label %middle.block315.unr-lcssa, label %vector.ph322.new vector.ph322.new: ; preds = %vector.ph322 %unroll_iter439 = and i64 %i366, 1152921504606846974 br label %vector.body316 vector.body316: ; preds = %vector.body316, %vector.ph322.new %index325 = phi i64 [ 0, %vector.ph322.new ], [ %index.next326.1, %vector.body316 ] %niter440 = phi i64 [ %unroll_iter439, %vector.ph322.new ], [ %niter440.nsub.1, %vector.body316 ] %i368 = add nsw i64 %index325, %index.014.i158 %i369 = getelementptr inbounds i8, i8* %i349, i64 %i368 %i370 = bitcast i8* %i369 to <16 x i8>* %wide.load328 = load <16 x i8>, <16 x i8>* %i370, align 1, !alias.scope !125, !noalias !120 %i371 = getelementptr inbounds i8, i8* %i369, i64 16 %i372 = bitcast i8* %i371 to <16 x i8>* %wide.load329 = load <16 x i8>, <16 x i8>* %i372, align 1, !alias.scope !125, !noalias !120 %i373 = add nsw i64 %index325, %i353 %i374 = getelementptr inbounds i8, i8* %i359, i64 %i373 %i375 = bitcast i8* %i374 to <16 x i8>* store <16 x i8> %wide.load328, <16 x i8>* %i375, align 1, !alias.scope !128, !noalias !130 %i376 = getelementptr inbounds i8, i8* %i374, i64 16 %i377 = bitcast i8* %i376 to <16 x i8>* store <16 x i8> %wide.load329, <16 x i8>* %i377, align 1, !alias.scope !128, !noalias !130 %index.next326 = or i64 %index325, 32 %i378 = add nsw i64 %index.next326, %index.014.i158 %i379 = getelementptr inbounds i8, i8* %i349, i64 %i378 %i380 = bitcast i8* %i379 to <16 x i8>* %wide.load328.1 = load <16 x i8>, <16 x i8>* %i380, align 1, !alias.scope !125, !noalias !120 %i381 = getelementptr inbounds i8, i8* %i379, i64 16 %i382 = bitcast i8* %i381 to <16 x i8>* %wide.load329.1 = load <16 x i8>, <16 x i8>* %i382, align 1, !alias.scope !125, !noalias !120 %i383 = add nsw i64 %index.next326, %i353 %i384 = getelementptr inbounds i8, i8* %i359, i64 %i383 %i385 = bitcast i8* %i384 to <16 x i8>* store <16 x i8> %wide.load328.1, <16 x i8>* %i385, align 1, !alias.scope !128, !noalias !130 %i386 = getelementptr inbounds i8, i8* %i384, i64 16 %i387 = bitcast i8* %i386 to <16 x i8>* store <16 x i8> %wide.load329.1, <16 x i8>* %i387, align 1, !alias.scope !128, !noalias !130 %index.next326.1 = add nuw i64 %index325, 64 %niter440.nsub.1 = add i64 %niter440, -2 %niter440.ncmp.1 = icmp eq i64 %niter440.nsub.1, 0 br i1 %niter440.ncmp.1, label %middle.block315.unr-lcssa, label %vector.body316, !llvm.loop !131 middle.block315.unr-lcssa: ; preds = %vector.body316, %vector.ph322 %index325.unr = phi i64 [ 0, %vector.ph322 ], [ %index.next326.1, %vector.body316 ] %lcmp.mod438.not = icmp eq i64 %xtraiter437, 0 br i1 %lcmp.mod438.not, label %middle.block315, label %vector.body316.epil vector.body316.epil: ; preds = %middle.block315.unr-lcssa %i388 = add nsw i64 %index325.unr, %index.014.i158 %i389 = getelementptr inbounds i8, i8* %i349, i64 %i388 %i390 = bitcast i8* %i389 to <16 x i8>* %wide.load328.epil = load <16 x i8>, <16 x i8>* %i390, align 1, !alias.scope !125, !noalias !120 %i391 = getelementptr inbounds i8, i8* %i389, i64 16 %i392 = bitcast i8* %i391 to <16 x i8>* %wide.load329.epil = load <16 x i8>, <16 x i8>* %i392, align 1, !alias.scope !125, !noalias !120 %i393 = add nsw i64 %index325.unr, %i353 %i394 = getelementptr inbounds i8, i8* %i359, i64 %i393 %i395 = bitcast i8* %i394 to <16 x i8>* store <16 x i8> %wide.load328.epil, <16 x i8>* %i395, align 1, !alias.scope !128, !noalias !130 %i396 = getelementptr inbounds i8, i8* %i394, i64 16 %i397 = bitcast i8* %i396 to <16 x i8>* store <16 x i8> %wide.load329.epil, <16 x i8>* %i397, align 1, !alias.scope !128, !noalias !130 br label %middle.block315 middle.block315: ; preds = %vector.body316.epil, %middle.block315.unr-lcssa %cmp.n327 = icmp eq i64 %n.0.i.i.i164, %n.vec324 br i1 %cmp.n327, label %EndIf9.i.i.i173, label %vec.epilog.iter.check333 vec.epilog.iter.check333: ; preds = %middle.block315 %n.vec.remaining335 = and i64 %n.0.i.i.i164, 24 %min.epilog.iters.check336 = icmp eq i64 %n.vec.remaining335, 0 br i1 %min.epilog.iters.check336, label %ForBody.i.i.i.i171.preheader, label %vec.epilog.ph334 vec.epilog.ph334: ; preds = %vec.epilog.iter.check333, %vector.main.loop.iter.check321 %vec.epilog.resume.val337 = phi i64 [ %n.vec324, %vec.epilog.iter.check333 ], [ 0, %vector.main.loop.iter.check321 ] %i398 = add i64 %i348, %i353 %i399 = sub i64 %i398, %index.014.i158 %umin338 = call i64 @llvm.umin.i64(i64 %i355, i64 %i399) %i400 = sub i64 %umin338, %i353 %n.vec340 = and i64 %i400, -8 br label %vec.epilog.vector.body332 vec.epilog.vector.body332: ; preds = %vec.epilog.vector.body332, %vec.epilog.ph334 %index341 = phi i64 [ %vec.epilog.resume.val337, %vec.epilog.ph334 ], [ %index.next342, %vec.epilog.vector.body332 ] %i401 = add nsw i64 %index341, %index.014.i158 %i402 = getelementptr inbounds i8, i8* %i349, i64 %i401 %i403 = bitcast i8* %i402 to <8 x i8>* %wide.load345 = load <8 x i8>, <8 x i8>* %i403, align 1, !noalias !120 %i404 = add nsw i64 %index341, %i353 %i405 = getelementptr inbounds i8, i8* %i359, i64 %i404 %i406 = bitcast i8* %i405 to <8 x i8>* store <8 x i8> %wide.load345, <8 x i8>* %i406, align 1, !noalias !120 %index.next342 = add nuw i64 %index341, 8 %i407 = icmp eq i64 %index.next342, %n.vec340 br i1 %i407, label %vec.epilog.middle.block330, label %vec.epilog.vector.body332, !llvm.loop !132 vec.epilog.middle.block330: ; preds = %vec.epilog.vector.body332 %cmp.n344 = icmp eq i64 %i400, %n.vec340 br i1 %cmp.n344, label %EndIf9.i.i.i173, label %ForBody.i.i.i.i171.preheader ForBody.i.i.i.i171.preheader: ; preds = %vec.epilog.middle.block330, %vec.epilog.iter.check333, %vector.memcheck305, %iter.check319 %i.02.i.i.i.i167.ph = phi i64 [ 0, %iter.check319 ], [ 0, %vector.memcheck305 ], [ %n.vec324, %vec.epilog.iter.check333 ], [ %n.vec340, %vec.epilog.middle.block330 ] br label %ForBody.i.i.i.i171 ForBody.i.i.i.i171: ; preds = %ForBody.i.i.i.i171, %ForBody.i.i.i.i171.preheader %i.02.i.i.i.i167 = phi i64 [ %i411, %ForBody.i.i.i.i171 ], [ %i.02.i.i.i.i167.ph, %ForBody.i.i.i.i171.preheader ] %.idx12.i168 = add nsw i64 %i.02.i.i.i.i167, %index.014.i158 %i408 = getelementptr inbounds i8, i8* %i349, i64 %.idx12.i168 %i409 = load i8, i8* %i408, align 1, !noalias !120 %.idx.i.i.i169 = add nsw i64 %i.02.i.i.i.i167, %i353 %i410 = getelementptr inbounds i8, i8* %i359, i64 %.idx.i.i.i169 store i8 %i409, i8* %i410, align 1, !noalias !120 %i411 = add nuw i64 %i.02.i.i.i.i167, 1 %exitcond.not.i.i.i.i170 = icmp eq i64 %i411, %n.0.i.i.i164 br i1 %exitcond.not.i.i.i.i170, label %EndIf9.i.i.i173, label %ForBody.i.i.i.i171, !llvm.loop !133 EndIf9.i.i.i173: ; preds = %ForBody.i.i.i.i171, %vec.epilog.middle.block330, %middle.block315 %i412 = load i64, i64* %i352, align 8, !noalias !120 %i413 = add nuw i64 %i412, %n.0.i.i.i164 store i64 %i413, i64* %i352, align 8, !noalias !120 %.pre.i172 = load i64, i64* %i6, align 8 br label %ErrRetContinue.i177 ErrRetContinue.i177: ; preds = %EndIf9.i.i.i173, %WhileBody.i160 %i414 = phi i64 [ %i348, %WhileBody.i160 ], [ %.pre.i172, %EndIf9.i.i.i173 ] %.sroa.0.1.ph.i175 = phi i64 [ 0, %WhileBody.i160 ], [ %n.0.i.i.i164, %EndIf9.i.i.i173 ] %i415 = add nuw i64 %.sroa.0.1.ph.i175, %index.014.i158 %.not.i176 = icmp eq i64 %i414, %i415 br i1 %.not.i176, label %OptionalEndIf, label %WhileBody.i160 SwitchElse: ; preds = %EndIf3 unreachable OptionalElse: ; preds = %Entry %i416 = getelementptr inbounds %"[]u8", %"[]u8"* %arg, i64 0, i32 1 %i417 = getelementptr inbounds %"[]u8", %"[]u8"* %arg, i64 0, i32 0 %.idx.i179 = getelementptr %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)", %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)"* %arg2, i64 0, i32 0 %i418 = load i64, i64* %i416, align 8 %.not13.i180 = icmp eq i64 %i418, 0 br i1 %.not13.i180, label %OptionalEndIf, label %WhileBody.i183 WhileBody.i183: ; preds = %ErrRetContinue.i200, %OptionalElse %i419 = phi i64 [ %i485, %ErrRetContinue.i200 ], [ %i418, %OptionalElse ] %index.014.i181 = phi i64 [ %i486, %ErrRetContinue.i200 ], [ 0, %OptionalElse ] %i420 = load i8*, i8** %i417, align 8 %i421 = sub nuw i64 %i419, %index.014.i181 %.idx.val.i182 = load %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"*, %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"** %.idx.i179, align 8 %i422 = icmp eq i64 %i421, 0 br i1 %i422, label %ErrRetContinue.i200, label %EndIf.i.i.i185 EndIf.i.i.i185: ; preds = %WhileBody.i183 %i423 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i182, i64 0, i32 1 %i424 = load i64, i64* %i423, align 8, !noalias !134 %i425 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i182, i64 0, i32 0, i32 1 %i426 = load i64, i64* %i425, align 8, !noalias !134 %.not.i.i.i184 = icmp ugt i64 %i426, %i424 br i1 %.not.i.i.i184, label %EndIf3.i.i.i189, label %common.ret EndIf3.i.i.i189: ; preds = %EndIf.i.i.i185 %i427 = add nuw i64 %i424, %i421 %.not25.i.i.i186 = icmp ugt i64 %i427, %i426 %i428 = sub nuw i64 %i426, %i424 %n.0.i.i.i187 = select i1 %.not25.i.i.i186, i64 %i428, i64 %i421 %i429 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i182, i64 0, i32 0, i32 0 %i430 = load i8*, i8** %i429, align 8, !noalias !134 %.not.i.i.i.i188 = icmp eq i64 %n.0.i.i.i187, 0 br i1 %.not.i.i.i.i188, label %common.ret, label %iter.check iter.check: ; preds = %EndIf3.i.i.i189 %min.iters.check = icmp ult i64 %n.0.i.i.i187, 8 br i1 %min.iters.check, label %ForBody.i.i.i.i194.preheader, label %vector.memcheck vector.memcheck: ; preds = %iter.check %scevgep = getelementptr i8, i8* %i430, i64 %i424 %i431 = add i64 %i419, %i424 %i432 = sub i64 %i431, %index.014.i181 %umin = call i64 @llvm.umin.i64(i64 %i426, i64 %i432) %scevgep252 = getelementptr i8, i8* %i430, i64 %umin %scevgep253 = getelementptr i8, i8* %i420, i64 %index.014.i181 %i433 = add i64 %index.014.i181, %umin %i434 = sub i64 %i433, %i424 %scevgep254 = getelementptr i8, i8* %i420, i64 %i434 %bound0 = icmp ult i8* %scevgep, %scevgep254 %bound1 = icmp ult i8* %scevgep253, %scevgep252 %found.conflict = and i1 %bound0, %bound1 br i1 %found.conflict, label %ForBody.i.i.i.i194.preheader, label %vector.main.loop.iter.check vector.main.loop.iter.check: ; preds = %vector.memcheck %min.iters.check255 = icmp ult i64 %n.0.i.i.i187, 32 br i1 %min.iters.check255, label %vec.epilog.ph, label %vector.ph vector.ph: ; preds = %vector.main.loop.iter.check %n.vec = and i64 %n.0.i.i.i187, -32 %i435 = add i64 %n.vec, -32 %i436 = lshr exact i64 %i435, 5 %i437 = add nuw nsw i64 %i436, 1 %xtraiter = and i64 %i437, 1 %i438 = icmp eq i64 %i435, 0 br i1 %i438, label %middle.block.unr-lcssa, label %vector.ph.new vector.ph.new: ; preds = %vector.ph %unroll_iter = and i64 %i437, 1152921504606846974 br label %vector.body vector.body: ; preds = %vector.body, %vector.ph.new %index = phi i64 [ 0, %vector.ph.new ], [ %index.next.1, %vector.body ] %niter = phi i64 [ %unroll_iter, %vector.ph.new ], [ %niter.nsub.1, %vector.body ] %i439 = add nsw i64 %index, %index.014.i181 %i440 = getelementptr inbounds i8, i8* %i420, i64 %i439 %i441 = bitcast i8* %i440 to <16 x i8>* %wide.load = load <16 x i8>, <16 x i8>* %i441, align 1, !alias.scope !139, !noalias !134 %i442 = getelementptr inbounds i8, i8* %i440, i64 16 %i443 = bitcast i8* %i442 to <16 x i8>* %wide.load256 = load <16 x i8>, <16 x i8>* %i443, align 1, !alias.scope !139, !noalias !134 %i444 = add nsw i64 %index, %i424 %i445 = getelementptr inbounds i8, i8* %i430, i64 %i444 %i446 = bitcast i8* %i445 to <16 x i8>* store <16 x i8> %wide.load, <16 x i8>* %i446, align 1, !alias.scope !142, !noalias !144 %i447 = getelementptr inbounds i8, i8* %i445, i64 16 %i448 = bitcast i8* %i447 to <16 x i8>* store <16 x i8> %wide.load256, <16 x i8>* %i448, align 1, !alias.scope !142, !noalias !144 %index.next = or i64 %index, 32 %i449 = add nsw i64 %index.next, %index.014.i181 %i450 = getelementptr inbounds i8, i8* %i420, i64 %i449 %i451 = bitcast i8* %i450 to <16 x i8>* %wide.load.1 = load <16 x i8>, <16 x i8>* %i451, align 1, !alias.scope !139, !noalias !134 %i452 = getelementptr inbounds i8, i8* %i450, i64 16 %i453 = bitcast i8* %i452 to <16 x i8>* %wide.load256.1 = load <16 x i8>, <16 x i8>* %i453, align 1, !alias.scope !139, !noalias !134 %i454 = add nsw i64 %index.next, %i424 %i455 = getelementptr inbounds i8, i8* %i430, i64 %i454 %i456 = bitcast i8* %i455 to <16 x i8>* store <16 x i8> %wide.load.1, <16 x i8>* %i456, align 1, !alias.scope !142, !noalias !144 %i457 = getelementptr inbounds i8, i8* %i455, i64 16 %i458 = bitcast i8* %i457 to <16 x i8>* store <16 x i8> %wide.load256.1, <16 x i8>* %i458, align 1, !alias.scope !142, !noalias !144 %index.next.1 = add nuw i64 %index, 64 %niter.nsub.1 = add i64 %niter, -2 %niter.ncmp.1 = icmp eq i64 %niter.nsub.1, 0 br i1 %niter.ncmp.1, label %middle.block.unr-lcssa, label %vector.body, !llvm.loop !145 middle.block.unr-lcssa: ; preds = %vector.body, %vector.ph %index.unr = phi i64 [ 0, %vector.ph ], [ %index.next.1, %vector.body ] %lcmp.mod.not = icmp eq i64 %xtraiter, 0 br i1 %lcmp.mod.not, label %middle.block, label %vector.body.epil vector.body.epil: ; preds = %middle.block.unr-lcssa %i459 = add nsw i64 %index.unr, %index.014.i181 %i460 = getelementptr inbounds i8, i8* %i420, i64 %i459 %i461 = bitcast i8* %i460 to <16 x i8>* %wide.load.epil = load <16 x i8>, <16 x i8>* %i461, align 1, !alias.scope !139, !noalias !134 %i462 = getelementptr inbounds i8, i8* %i460, i64 16 %i463 = bitcast i8* %i462 to <16 x i8>* %wide.load256.epil = load <16 x i8>, <16 x i8>* %i463, align 1, !alias.scope !139, !noalias !134 %i464 = add nsw i64 %index.unr, %i424 %i465 = getelementptr inbounds i8, i8* %i430, i64 %i464 %i466 = bitcast i8* %i465 to <16 x i8>* store <16 x i8> %wide.load.epil, <16 x i8>* %i466, align 1, !alias.scope !142, !noalias !144 %i467 = getelementptr inbounds i8, i8* %i465, i64 16 %i468 = bitcast i8* %i467 to <16 x i8>* store <16 x i8> %wide.load256.epil, <16 x i8>* %i468, align 1, !alias.scope !142, !noalias !144 br label %middle.block middle.block: ; preds = %vector.body.epil, %middle.block.unr-lcssa %cmp.n = icmp eq i64 %n.0.i.i.i187, %n.vec br i1 %cmp.n, label %EndIf9.i.i.i196, label %vec.epilog.iter.check vec.epilog.iter.check: ; preds = %middle.block %n.vec.remaining = and i64 %n.0.i.i.i187, 24 %min.epilog.iters.check = icmp eq i64 %n.vec.remaining, 0 br i1 %min.epilog.iters.check, label %ForBody.i.i.i.i194.preheader, label %vec.epilog.ph vec.epilog.ph: ; preds = %vec.epilog.iter.check, %vector.main.loop.iter.check %vec.epilog.resume.val = phi i64 [ %n.vec, %vec.epilog.iter.check ], [ 0, %vector.main.loop.iter.check ] %i469 = add i64 %i419, %i424 %i470 = sub i64 %i469, %index.014.i181 %umin257 = call i64 @llvm.umin.i64(i64 %i426, i64 %i470) %i471 = sub i64 %umin257, %i424 %n.vec259 = and i64 %i471, -8 br label %vec.epilog.vector.body vec.epilog.vector.body: ; preds = %vec.epilog.vector.body, %vec.epilog.ph %index260 = phi i64 [ %vec.epilog.resume.val, %vec.epilog.ph ], [ %index.next261, %vec.epilog.vector.body ] %i472 = add nsw i64 %index260, %index.014.i181 %i473 = getelementptr inbounds i8, i8* %i420, i64 %i472 %i474 = bitcast i8* %i473 to <8 x i8>* %wide.load263 = load <8 x i8>, <8 x i8>* %i474, align 1, !noalias !134 %i475 = add nsw i64 %index260, %i424 %i476 = getelementptr inbounds i8, i8* %i430, i64 %i475 %i477 = bitcast i8* %i476 to <8 x i8>* store <8 x i8> %wide.load263, <8 x i8>* %i477, align 1, !noalias !134 %index.next261 = add nuw i64 %index260, 8 %i478 = icmp eq i64 %index.next261, %n.vec259 br i1 %i478, label %vec.epilog.middle.block, label %vec.epilog.vector.body, !llvm.loop !146 vec.epilog.middle.block: ; preds = %vec.epilog.vector.body %cmp.n262 = icmp eq i64 %i471, %n.vec259 br i1 %cmp.n262, label %EndIf9.i.i.i196, label %ForBody.i.i.i.i194.preheader ForBody.i.i.i.i194.preheader: ; preds = %vec.epilog.middle.block, %vec.epilog.iter.check, %vector.memcheck, %iter.check %i.02.i.i.i.i190.ph = phi i64 [ 0, %iter.check ], [ 0, %vector.memcheck ], [ %n.vec, %vec.epilog.iter.check ], [ %n.vec259, %vec.epilog.middle.block ] br label %ForBody.i.i.i.i194 ForBody.i.i.i.i194: ; preds = %ForBody.i.i.i.i194, %ForBody.i.i.i.i194.preheader %i.02.i.i.i.i190 = phi i64 [ %i482, %ForBody.i.i.i.i194 ], [ %i.02.i.i.i.i190.ph, %ForBody.i.i.i.i194.preheader ] %.idx12.i191 = add nsw i64 %i.02.i.i.i.i190, %index.014.i181 %i479 = getelementptr inbounds i8, i8* %i420, i64 %.idx12.i191 %i480 = load i8, i8* %i479, align 1, !noalias !134 %.idx.i.i.i192 = add nsw i64 %i.02.i.i.i.i190, %i424 %i481 = getelementptr inbounds i8, i8* %i430, i64 %.idx.i.i.i192 store i8 %i480, i8* %i481, align 1, !noalias !134 %i482 = add nuw i64 %i.02.i.i.i.i190, 1 %exitcond.not.i.i.i.i193 = icmp eq i64 %i482, %n.0.i.i.i187 br i1 %exitcond.not.i.i.i.i193, label %EndIf9.i.i.i196, label %ForBody.i.i.i.i194, !llvm.loop !147 EndIf9.i.i.i196: ; preds = %ForBody.i.i.i.i194, %vec.epilog.middle.block, %middle.block %i483 = load i64, i64* %i423, align 8, !noalias !134 %i484 = add nuw i64 %i483, %n.0.i.i.i187 store i64 %i484, i64* %i423, align 8, !noalias !134 %.pre.i195 = load i64, i64* %i416, align 8 br label %ErrRetContinue.i200 ErrRetContinue.i200: ; preds = %EndIf9.i.i.i196, %WhileBody.i183 %i485 = phi i64 [ %i419, %WhileBody.i183 ], [ %.pre.i195, %EndIf9.i.i.i196 ] %.sroa.0.1.ph.i198 = phi i64 [ 0, %WhileBody.i183 ], [ %n.0.i.i.i187, %EndIf9.i.i.i196 ] %i486 = add nuw i64 %.sroa.0.1.ph.i198, %index.014.i181 %.not.i199 = icmp eq i64 %i485, %i486 br i1 %.not.i199, label %OptionalEndIf, label %WhileBody.i183 OptionalEndIf: ; preds = %ErrRetContinue.i200, %OptionalElse, %ErrRetContinue.i177, %ErrRetContinue13, %ErrRetContinue9, %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes.exit" br label %common.ret } ; Function Attrs: nobuiltin nofree norecurse nosync nounwind define internal fastcc i16 @"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).writeByteNTimes"(%"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)"* nocapture nonnull readonly align 8 %arg, i8 %arg1, i64 %arg2) unnamed_addr #5 { Entry: %bytes = alloca [256 x i8], align 1 %bytes15 = getelementptr inbounds [256 x i8], [256 x i8]* %bytes, i64 0, i64 0 call void @llvm.memset.p0i8.i64(i8* noundef nonnull align 1 dereferenceable(256) %bytes15, i8 %arg1, i64 256, i1 false) %.idx.i = getelementptr %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)", %"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write)"* %arg, i64 0, i32 0 %.not12 = icmp eq i64 %arg2, 0 br i1 %.not12, label %common.ret, label %WhileBody WhileBody: ; preds = %ErrRetContinue, %Entry %remaining.013 = phi i64 [ %i16, %ErrRetContinue ], [ %arg2, %Entry ] %i = icmp ult i64 %remaining.013, 256 %..i = select i1 %i, i64 %remaining.013, i64 256 br label %WhileBody.i WhileBody.i: ; preds = %ErrRetContinue.i, %WhileBody %index.014.i = phi i64 [ %i15, %ErrRetContinue.i ], [ 0, %WhileBody ] %i3 = sub nuw i64 %..i, %index.014.i %.idx.val.i = load %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"*, %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"** %.idx.i, align 8 %i4 = icmp eq i64 %i3, 0 br i1 %i4, label %ErrRetContinue.i, label %EndIf.i.i.i EndIf.i.i.i: ; preds = %WhileBody.i %i5 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i, i64 0, i32 1 %i6 = load i64, i64* %i5, align 8, !noalias !148 %i7 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i, i64 0, i32 0, i32 1 %i8 = load i64, i64* %i7, align 8, !noalias !148 %.not.i.i.i = icmp ugt i64 %i8, %i6 br i1 %.not.i.i.i, label %EndIf3.i.i.i, label %common.ret EndIf3.i.i.i: ; preds = %EndIf.i.i.i %i9 = add nuw i64 %i6, %i3 %.not25.i.i.i = icmp ugt i64 %i9, %i8 %i10 = sub nuw i64 %i8, %i6 %n.0.i.i.i = select i1 %.not25.i.i.i, i64 %i10, i64 %i3 %.not.i.i.i.i = icmp eq i64 %n.0.i.i.i, 0 br i1 %.not.i.i.i.i, label %common.ret, label %ForBody.i.i.i.i.preheader ForBody.i.i.i.i.preheader: ; preds = %EndIf3.i.i.i %i11 = getelementptr inbounds %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)", %"std.io.fixed_buffer_stream.FixedBufferStream([]u8)"* %.idx.val.i, i64 0, i32 0, i32 0 %i12 = load i8*, i8** %i11, align 8, !noalias !148 %scevgep = getelementptr i8, i8* %i12, i64 %i6 %scevgep16 = getelementptr [256 x i8], [256 x i8]* %bytes, i64 0, i64 %index.014.i call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %scevgep, i8* align 1 %scevgep16, i64 %n.0.i.i.i, i1 false) %i13 = load i64, i64* %i5, align 8, !noalias !148 %i14 = add nuw i64 %i13, %n.0.i.i.i store i64 %i14, i64* %i5, align 8, !noalias !148 br label %ErrRetContinue.i ErrRetContinue.i: ; preds = %ForBody.i.i.i.i.preheader, %WhileBody.i %.sroa.0.1.ph.i = phi i64 [ 0, %WhileBody.i ], [ %n.0.i.i.i, %ForBody.i.i.i.i.preheader ] %i15 = add nuw i64 %.sroa.0.1.ph.i, %index.014.i %.not.i5 = icmp eq i64 %..i, %i15 br i1 %.not.i5, label %ErrRetContinue, label %WhileBody.i common.ret: ; preds = %ErrRetContinue, %EndIf3.i.i.i, %EndIf.i.i.i, %Entry %common.ret.op = phi i16 [ 0, %Entry ], [ 10, %EndIf.i.i.i ], [ 10, %EndIf3.i.i.i ], [ 0, %ErrRetContinue ] ret i16 %common.ret.op ErrRetContinue: ; preds = %ErrRetContinue.i %i16 = sub nuw i64 %remaining.013, %..i %.not = icmp eq i64 %i16, 0 br i1 %.not, label %common.ret, label %WhileBody } ; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn declare void @llvm.assume(i1 noundef) #6 ; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn declare void @llvm.experimental.noalias.scope.decl(metadata) #6 ; Function Attrs: argmemonly nofree nosync nounwind willreturn declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #7 ; Function Attrs: argmemonly nofree nosync nounwind willreturn declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #7 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare i64 @llvm.abs.i64(i64, i1 immarg) #2 ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn declare i64 @llvm.umin.i64(i64, i64) #2 define internal fastcc void @Num_toStr_9f76b7eb7fdc0311cd3208cdbbebbf814dd3a05e35191c96947b358a362b40(i64 %"#arg1", %str.RocStr* %arg) { entry: %return_str_alloca = alloca %str.RocStr, align 8 call void @roc_builtins.str.from_int.i64(%str.RocStr* noalias nocapture nonnull sret(%str.RocStr) %return_str_alloca, i64 %"#arg1") %i = bitcast %str.RocStr* %arg to i8* %i1 = bitcast %str.RocStr* %return_str_alloca to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %i, i8* noundef nonnull align 8 dereferenceable(24) %i1, i64 24, i1 false) ret void } define internal fastcc i64 @"#UserApp_22_dc765660b06ee03dd16fd7ca5b957e8c805161ac2c4af28c5a10ab2ab432ca1"(i64 %y, { i64 } %"#arg_closure") { entry: %struct_field_access_record_0 = extractvalue { i64 } %"#arg_closure", 0 %call = tail call fastcc i64 @Num_add_7aa8ca4a2506da9133d8f889678b76f716ce45d2e22fdb7b70a15e56a0eff8(i64 %struct_field_access_record_0, i64 %y) ret i64 %call } define internal fastcc void @_mainForHost_67abdd721024f0ff4eb3f4c2fc13bc5bad42db7851d456d88d203d15aaa450(%str.RocStr* %arg) { entry: %result_value = alloca %str.RocStr, align 8 call fastcc void @"#UserApp_main_df3f61984a92fdb4057192dc43dd748ea778adc52bc498ce8524c014b81119"(%str.RocStr* nonnull %result_value) %i = bitcast %str.RocStr* %arg to i8* %i1 = bitcast %str.RocStr* %result_value to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %i, i8* noundef nonnull align 8 dereferenceable(24) %i1, i64 24, i1 false) ret void } define void @roc__mainForHost_1_exposed_generic(%str.RocStr* %arg) { entry: %result_value = alloca %str.RocStr, align 8 call fastcc void @_mainForHost_67abdd721024f0ff4eb3f4c2fc13bc5bad42db7851d456d88d203d15aaa450(%str.RocStr* %result_value) %i = bitcast %str.RocStr* %arg to i8* %i1 = bitcast %str.RocStr* %result_value to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %i, i8* align 8 %i1, i64 24, i1 false) ret void } define void @roc__mainForHost_1_exposed(%str.RocStr* sret(%str.RocStr*) %arg) { entry: %result_value = alloca %str.RocStr, align 8 call fastcc void @_mainForHost_67abdd721024f0ff4eb3f4c2fc13bc5bad42db7851d456d88d203d15aaa450(%str.RocStr* %result_value) %load_result = load %str.RocStr, %str.RocStr* %result_value, align 8 store %str.RocStr %load_result, %str.RocStr* %arg, align 8 ret void } define i64 @roc__mainForHost_size() { entry: ret i64 ptrtoint (%str.RocStr* getelementptr (%str.RocStr, %str.RocStr* null, i32 1) to i64) } define internal fastcc void @"#UserApp_apply_26b25d457597a7b0463f9620f666dd10aa2c4373a55967c7c8d70922a2d6ece"({ { [0 x i8] }, i8 }* %funRes, { { [1 x i64] }, i8 }* %valRes, { { [1 x i64] }, i8 }* %arg) { entry: %opaque_tag25 = alloca { { [1 x i64] }, i8 }, align 8 %opaque_tag16 = alloca { { [1 x i64] }, i8 }, align 8 %opaque_tag = alloca { { [1 x i64] }, i8 }, align 8 %tag_id_ptr = getelementptr inbounds { { [0 x i8] }, i8 }, { { [0 x i8] }, i8 }* %funRes, i64 0, i32 1 %load_tag_id = load i8, i8* %tag_id_ptr, align 1 %eq_u8 = icmp eq i8 %load_tag_id, 0 br i1 %eq_u8, label %then_block, label %else_block then_block: ; preds = %entry %tag_id_ptr1 = getelementptr inbounds { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %opaque_tag, i64 0, i32 1 store i8 0, i8* %tag_id_ptr1, align 8 %i = bitcast { { [1 x i64] }, i8 }* %arg to i8* %i1 = bitcast { { [1 x i64] }, i8 }* %opaque_tag to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(9) %i, i8* noundef nonnull align 8 dereferenceable(9) %i1, i64 9, i1 false) ret void else_block: ; preds = %entry %tag_id_ptr6 = getelementptr inbounds { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %valRes, i64 0, i32 1 %load_tag_id7 = load i8, i8* %tag_id_ptr6, align 1 %eq_u88 = icmp eq i8 %load_tag_id7, 0 br i1 %eq_u88, label %then_block10, label %else_block11 then_block10: ; preds = %else_block %tag_id_ptr17 = getelementptr inbounds { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %opaque_tag16, i64 0, i32 1 store i8 0, i8* %tag_id_ptr17, align 8 %i2 = bitcast { { [1 x i64] }, i8 }* %arg to i8* %i3 = bitcast { { [1 x i64] }, i8 }* %opaque_tag16 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(9) %i2, i8* noundef nonnull align 8 dereferenceable(9) %i3, i64 9, i1 false) ret void else_block11: ; preds = %else_block %at_index_struct_gep_data23 = getelementptr { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %valRes, i64 0, i32 0, i32 0, i64 0 %load_at_index_ptr24 = load i64, i64* %at_index_struct_gep_data23, align 8 %call = tail call fastcc { i64 } @"#UserApp_20_e8613f5a5bc9f9feeda32a8e7c80b69dd4878e47b6a91723fb15eb84236b6a2b"(i64 %load_at_index_ptr24) %tag_id_ptr26 = getelementptr inbounds { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %opaque_tag25, i64 0, i32 1 store i8 1, i8* %tag_id_ptr26, align 8 %i4 = extractvalue { i64 } %call, 0 %i5 = getelementptr inbounds { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %opaque_tag25, i64 0, i32 0, i32 0, i64 0 store i64 %i4, i64* %i5, align 8 %i6 = bitcast { { [1 x i64] }, i8 }* %arg to i8* %i7 = bitcast { { [1 x i64] }, i8 }* %opaque_tag25 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(9) %i6, i8* noundef nonnull align 8 dereferenceable(9) %i7, i64 9, i1 false) ret void } define internal fastcc void @"#UserApp_apply_9d9f29527a6be626a8f5985b26e19b237b44872b03631811df4416fc1713178"({ { [1 x i64] }, i8 }* %funRes, { { [1 x i64] }, i8 }* %valRes, { { [1 x i64] }, i8 }* %arg) { entry: %opaque_tag25 = alloca { { [1 x i64] }, i8 }, align 8 %opaque_tag16 = alloca { { [1 x i64] }, i8 }, align 8 %opaque_tag = alloca { { [1 x i64] }, i8 }, align 8 %tag_id_ptr = getelementptr inbounds { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %funRes, i64 0, i32 1 %load_tag_id = load i8, i8* %tag_id_ptr, align 1 %eq_u8 = icmp eq i8 %load_tag_id, 0 br i1 %eq_u8, label %then_block, label %else_block then_block: ; preds = %entry %tag_id_ptr1 = getelementptr inbounds { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %opaque_tag, i64 0, i32 1 store i8 0, i8* %tag_id_ptr1, align 8 %i = bitcast { { [1 x i64] }, i8 }* %arg to i8* %i1 = bitcast { { [1 x i64] }, i8 }* %opaque_tag to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(9) %i, i8* noundef nonnull align 8 dereferenceable(9) %i1, i64 9, i1 false) ret void else_block: ; preds = %entry %tag_id_ptr6 = getelementptr inbounds { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %valRes, i64 0, i32 1 %load_tag_id7 = load i8, i8* %tag_id_ptr6, align 1 %eq_u88 = icmp eq i8 %load_tag_id7, 0 br i1 %eq_u88, label %then_block10, label %else_block11 then_block10: ; preds = %else_block %tag_id_ptr17 = getelementptr inbounds { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %opaque_tag16, i64 0, i32 1 store i8 0, i8* %tag_id_ptr17, align 8 %i2 = bitcast { { [1 x i64] }, i8 }* %arg to i8* %i3 = bitcast { { [1 x i64] }, i8 }* %opaque_tag16 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(9) %i2, i8* noundef nonnull align 8 dereferenceable(9) %i3, i64 9, i1 false) ret void else_block11: ; preds = %else_block %i4 = getelementptr { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %funRes, i64 0, i32 0, i32 0, i64 0 %load_at_index_ptr5.unpack = load i64, i64* %i4, align 8 %load_at_index_ptr530 = insertvalue { i64 } undef, i64 %load_at_index_ptr5.unpack, 0 %at_index_struct_gep_data23 = getelementptr { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %valRes, i64 0, i32 0, i32 0, i64 0 %load_at_index_ptr24 = load i64, i64* %at_index_struct_gep_data23, align 8 %call = tail call fastcc i64 @"#UserApp_22_dc765660b06ee03dd16fd7ca5b957e8c805161ac2c4af28c5a10ab2ab432ca1"(i64 %load_at_index_ptr24, { i64 } %load_at_index_ptr530) %tag_id_ptr26 = getelementptr inbounds { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %opaque_tag25, i64 0, i32 1 store i8 1, i8* %tag_id_ptr26, align 8 %get_tag_field_ptr29 = getelementptr inbounds { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %opaque_tag25, i64 0, i32 0, i32 0, i64 0 store i64 %call, i64* %get_tag_field_ptr29, align 8 %i5 = bitcast { { [1 x i64] }, i8 }* %arg to i8* %i6 = bitcast { { [1 x i64] }, i8 }* %opaque_tag25 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(9) %i5, i8* noundef nonnull align 8 dereferenceable(9) %i6, i64 9, i1 false) ret void } define internal fastcc i64 @Num_add_7aa8ca4a2506da9133d8f889678b76f716ce45d2e22fdb7b70a15e56a0eff8(i64 %"#arg1", i64 %"#arg2") { entry: %call = tail call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %"#arg1", i64 %"#arg2") %has_overflowed = extractvalue { i64, i1 } %call, 1 br i1 %has_overflowed, label %throw_block, label %then_block then_block: ; preds = %entry %operation_result = extractvalue { i64, i1 } %call, 0 ret i64 %operation_result throw_block: ; preds = %entry tail call void @roc_panic(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @_Error_message_1012005107526490057, i64 0, i64 0), i32 0) unreachable } define internal fastcc void @"#UserApp_main_df3f61984a92fdb4057192dc43dd748ea778adc52bc498ce8524c014b81119"(%str.RocStr* %arg) { entry: %const_str_store9 = alloca %str.RocStr, align 8 %result_value8 = alloca %str.RocStr, align 8 %const_str_store = alloca %str.RocStr, align 8 %result_value7 = alloca %str.RocStr, align 8 %result_value = alloca { { [1 x i64] }, i8 }, align 8 %opaque_tag1 = alloca { { [1 x i64] }, i8 }, align 8 %opaque_tag = alloca { { [1 x i64] }, i8 }, align 8 %tag_id_ptr = getelementptr inbounds { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %opaque_tag, i64 0, i32 1 store i8 1, i8* %tag_id_ptr, align 8 %get_tag_field_ptr = getelementptr inbounds { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %opaque_tag, i64 0, i32 0, i32 0, i64 0 store i64 123456789, i64* %get_tag_field_ptr, align 8 %tag_id_ptr2 = getelementptr inbounds { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %opaque_tag1, i64 0, i32 1 store i8 0, i8* %tag_id_ptr2, align 8 call fastcc void @"#UserApp_example_fb5e512425fc9449316ec95969ebe71e2d576dbab833d61e2a5b9330fd70ee2"({ { [1 x i64] }, i8 }* nonnull %opaque_tag, { { [1 x i64] }, i8 }* nonnull %opaque_tag1, { { [1 x i64] }, i8 }* nonnull %result_value) %tag_id_ptr6 = getelementptr inbounds { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %result_value, i64 0, i32 1 %load_tag_id = load i8, i8* %tag_id_ptr6, align 8 %eq_u8 = icmp eq i8 %load_tag_id, 1 br i1 %eq_u8, label %then_block, label %else_block then_block: ; preds = %entry %at_index_struct_gep_data = getelementptr inbounds { { [1 x i64] }, i8 }, { { [1 x i64] }, i8 }* %result_value, i64 0, i32 0, i32 0, i64 0 %load_at_index_ptr = load i64, i64* %at_index_struct_gep_data, align 8 call fastcc void @Num_toStr_9f76b7eb7fdc0311cd3208cdbbebbf814dd3a05e35191c96947b358a362b40(i64 %load_at_index_ptr, %str.RocStr* nonnull %result_value7) %const_str_store.repack = getelementptr inbounds %str.RocStr, %str.RocStr* %const_str_store, i64 0, i32 0 store i8* getelementptr inbounds ([57 x i8], [57 x i8]* @_str_literal_4605642985354305011, i64 0, i64 8), i8** %const_str_store.repack, align 8 %const_str_store.repack12 = getelementptr inbounds %str.RocStr, %str.RocStr* %const_str_store, i64 0, i32 1 store i64 49, i64* %const_str_store.repack12, align 8 %const_str_store.repack13 = getelementptr inbounds %str.RocStr, %str.RocStr* %const_str_store, i64 0, i32 2 store i64 49, i64* %const_str_store.repack13, align 8 call fastcc void @Str_concat_2594b6a92ebfb1c3312deb7d1c015fb95e9fbe9bd7bc6b527af7813ec7b910(%str.RocStr* nonnull %const_str_store, %str.RocStr* nonnull %result_value7, %str.RocStr* nonnull %result_value8) call fastcc void @"#Attr_#dec_1"(%str.RocStr* nonnull %result_value7) %i = bitcast %str.RocStr* %arg to i8* %i1 = bitcast %str.RocStr* %result_value8 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %i, i8* noundef nonnull align 8 dereferenceable(24) %i1, i64 24, i1 false) ret void else_block: ; preds = %entry %const_str_store9.repack = getelementptr inbounds %str.RocStr, %str.RocStr* %const_str_store9, i64 0, i32 0 store i8* getelementptr inbounds ([54 x i8], [54 x i8]* @_str_literal_13338901839589407859, i64 0, i64 8), i8** %const_str_store9.repack, align 8 %const_str_store9.repack10 = getelementptr inbounds %str.RocStr, %str.RocStr* %const_str_store9, i64 0, i32 1 store i64 46, i64* %const_str_store9.repack10, align 8 %const_str_store9.repack11 = getelementptr inbounds %str.RocStr, %str.RocStr* %const_str_store9, i64 0, i32 2 store i64 46, i64* %const_str_store9.repack11, align 8 %i2 = bitcast %str.RocStr* %arg to i8* %i3 = bitcast %str.RocStr* %const_str_store9 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %i2, i8* noundef nonnull align 8 dereferenceable(24) %i3, i64 24, i1 false) ret void } define internal fastcc void @"#UserApp_example_fb5e512425fc9449316ec95969ebe71e2d576dbab833d61e2a5b9330fd70ee2"({ { [1 x i64] }, i8 }* %lhs, { { [1 x i64] }, i8 }* %rhs, { { [1 x i64] }, i8 }* %arg) { entry: %result_value1 = alloca { { [1 x i64] }, i8 }, align 8 %result_value = alloca { { [1 x i64] }, i8 }, align 8 %opaque_tag = alloca { { [0 x i8] }, i8 }, align 8 %tag_id_ptr = getelementptr inbounds { { [0 x i8] }, i8 }, { { [0 x i8] }, i8 }* %opaque_tag, i64 0, i32 1 store i8 1, i8* %tag_id_ptr, align 8 call fastcc void @"#UserApp_apply_26b25d457597a7b0463f9620f666dd10aa2c4373a55967c7c8d70922a2d6ece"({ { [0 x i8] }, i8 }* nonnull %opaque_tag, { { [1 x i64] }, i8 }* %lhs, { { [1 x i64] }, i8 }* nonnull %result_value) call fastcc void @"#UserApp_apply_9d9f29527a6be626a8f5985b26e19b237b44872b03631811df4416fc1713178"({ { [1 x i64] }, i8 }* nonnull %result_value, { { [1 x i64] }, i8 }* %rhs, { { [1 x i64] }, i8 }* nonnull %result_value1) %i = bitcast { { [1 x i64] }, i8 }* %arg to i8* %i1 = bitcast { { [1 x i64] }, i8 }* %result_value1 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(9) %i, i8* noundef nonnull align 8 dereferenceable(9) %i1, i64 9, i1 false) ret void } define internal fastcc { i64 } @"#UserApp_20_e8613f5a5bc9f9feeda32a8e7c80b69dd4878e47b6a91723fb15eb84236b6a2b"(i64 %x) { entry: %insert_record_field = insertvalue { i64 } zeroinitializer, i64 %x, 0 ret { i64 } %insert_record_field } define internal fastcc void @Str_concat_2594b6a92ebfb1c3312deb7d1c015fb95e9fbe9bd7bc6b527af7813ec7b910(%str.RocStr* %"#arg1", %str.RocStr* %"#arg2", %str.RocStr* %arg) { entry: %return_str_alloca = alloca %str.RocStr, align 8 call void @roc_builtins.str.concat(%str.RocStr* noalias nocapture nonnull sret(%str.RocStr) %return_str_alloca, %str.RocStr* nocapture nonnull readonly byval(%str.RocStr) %"#arg1", %str.RocStr* nocapture nonnull readonly byval(%str.RocStr) %"#arg2") %i = bitcast %str.RocStr* %arg to i8* %i1 = bitcast %str.RocStr* %return_str_alloca to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(24) %i, i8* noundef nonnull align 8 dereferenceable(24) %i1, i64 24, i1 false) ret void } define private fastcc void @"#Attr_#dec_1"(%str.RocStr* %"#arg1") { entry: %load_str_to_stack = load %str.RocStr, %str.RocStr* %"#arg1", align 8 %read_str_capacity = extractvalue %str.RocStr %load_str_to_stack, 2 %is_big_str = icmp sgt i64 %read_str_capacity, 0 br i1 %is_big_str, label %modify_rc, label %modify_rc_str_cont modify_rc_str_cont: ; preds = %modify_rc, %entry ret void modify_rc: ; preds = %entry %read_list_ptr = extractvalue %str.RocStr %load_str_to_stack, 0 %as_usize_ptr = bitcast i8* %read_list_ptr to i64* %get_rc_ptr = getelementptr inbounds i64, i64* %as_usize_ptr, i64 -1 call fastcc void @decrement_refcounted_ptr_8(i64* %get_rc_ptr) br label %modify_rc_str_cont } define internal fastcc void @decrement_refcounted_ptr_8(i64* %arg) { entry: %i = load i64, i64* %arg, align 8 %i1 = icmp eq i64 %i, -9223372036854775808 br i1 %i1, label %Then.i.i, label %Else.i.i Else.i.i: ; preds = %entry %i2 = icmp slt i64 %i, 0 br i1 %i2, label %Then1.i.i, label %roc_builtins.utils.decref.exit Then.i.i: ; preds = %entry %i3 = bitcast i64* %arg to i8* call void @roc_dealloc(i8* %i3, i32 8) #9 br label %roc_builtins.utils.decref.exit Then1.i.i: ; preds = %Else.i.i %i4 = add nsw i64 %i, -1 store i64 %i4, i64* %arg, align 8 br label %roc_builtins.utils.decref.exit roc_builtins.utils.decref.exit: ; preds = %Then1.i.i, %Then.i.i, %Else.i.i ret void } attributes #0 = { argmemonly nofree nounwind willreturn } attributes #1 = { nobuiltin nounwind "target-cpu"="x86-64" "target-features"="-16bit-mode,-32bit-mode,-3dnow,-3dnowa,+64bit,-adx,-aes,-amx-bf16,-amx-int8,-amx-tile,-avx,-avx2,-avx512bf16,-avx512bitalg,-avx512bw,-avx512cd,-avx512dq,-avx512er,-avx512f,-avx512ifma,-avx512pf,-avx512vbmi,-avx512vbmi2,-avx512vl,-avx512vnni,-avx512vp2intersect,-avx512vpopcntdq,-avxvnni,-bmi,-bmi2,-branchfusion,-cldemote,-clflushopt,-clwb,-clzero,+cmov,-cx16,+cx8,-enqcmd,-ermsb,-f16c,-false-deps-lzcnt-tzcnt,-false-deps-popcnt,-fast-11bytenop,-fast-15bytenop,-fast-7bytenop,-fast-bextr,-fast-gather,-fast-hops,-fast-lzcnt,-fast-movbe,-fast-scalar-fsqrt,-fast-scalar-shift-masks,-fast-shld-rotate,-fast-variable-crosslane-shuffle,-fast-variable-perlane-shuffle,-fast-vector-fsqrt,-fast-vector-shift-masks,-fma,-fma4,-fsgsbase,-fsrm,+fxsr,-gfni,-hreset,-idivl-to-divb,+idivq-to-divl,-invpcid,-kl,-lea-sp,-lea-uses-ag,-lvi-cfi,-lvi-load-hardening,-lwp,-lzcnt,+macrofusion,+mmx,-movbe,-movdir64b,-movdiri,-mwaitx,+nopl,-pad-short-functions,-pclmul,-pconfig,-pku,-popcnt,-prefer-128-bit,-prefer-256-bit,-prefer-mask-registers,-prefetchwt1,-prfchw,-ptwrite,-rdpid,-rdrnd,-rdseed,-retpoline,-retpoline-external-thunk,-retpoline-indirect-branches,-retpoline-indirect-calls,-rtm,-sahf,-serialize,-seses,-sgx,-sha,-shstk,+slow-3ops-lea,+slow-incdec,-slow-lea,-slow-pmaddwd,-slow-pmulld,-slow-shld,-slow-two-mem-ops,-slow-unaligned-mem-16,-slow-unaligned-mem-32,-soft-float,+sse,+sse2,-sse3,-sse4.1,-sse4.2,-sse4a,-sse-unaligned-mem,-ssse3,-tbm,-tsxldtrk,-uintr,-use-aa,-use-glm-div-sqrt-costs,-vaes,-vpclmulqdq,+vzeroupper,-waitpkg,-wbnoinvd,-widekl,+x87,-xop,-xsave,-xsavec,-xsaveopt,-xsaves" } attributes #2 = { nofree nosync nounwind readnone speculatable willreturn } attributes #3 = { argmemonly nofree nounwind willreturn writeonly } attributes #4 = { nobuiltin nofree nosync nounwind "target-cpu"="x86-64" "target-features"="-16bit-mode,-32bit-mode,-3dnow,-3dnowa,+64bit,-adx,-aes,-amx-bf16,-amx-int8,-amx-tile,-avx,-avx2,-avx512bf16,-avx512bitalg,-avx512bw,-avx512cd,-avx512dq,-avx512er,-avx512f,-avx512ifma,-avx512pf,-avx512vbmi,-avx512vbmi2,-avx512vl,-avx512vnni,-avx512vp2intersect,-avx512vpopcntdq,-avxvnni,-bmi,-bmi2,-branchfusion,-cldemote,-clflushopt,-clwb,-clzero,+cmov,-cx16,+cx8,-enqcmd,-ermsb,-f16c,-false-deps-lzcnt-tzcnt,-false-deps-popcnt,-fast-11bytenop,-fast-15bytenop,-fast-7bytenop,-fast-bextr,-fast-gather,-fast-hops,-fast-lzcnt,-fast-movbe,-fast-scalar-fsqrt,-fast-scalar-shift-masks,-fast-shld-rotate,-fast-variable-crosslane-shuffle,-fast-variable-perlane-shuffle,-fast-vector-fsqrt,-fast-vector-shift-masks,-fma,-fma4,-fsgsbase,-fsrm,+fxsr,-gfni,-hreset,-idivl-to-divb,+idivq-to-divl,-invpcid,-kl,-lea-sp,-lea-uses-ag,-lvi-cfi,-lvi-load-hardening,-lwp,-lzcnt,+macrofusion,+mmx,-movbe,-movdir64b,-movdiri,-mwaitx,+nopl,-pad-short-functions,-pclmul,-pconfig,-pku,-popcnt,-prefer-128-bit,-prefer-256-bit,-prefer-mask-registers,-prefetchwt1,-prfchw,-ptwrite,-rdpid,-rdrnd,-rdseed,-retpoline,-retpoline-external-thunk,-retpoline-indirect-branches,-retpoline-indirect-calls,-rtm,-sahf,-serialize,-seses,-sgx,-sha,-shstk,+slow-3ops-lea,+slow-incdec,-slow-lea,-slow-pmaddwd,-slow-pmulld,-slow-shld,-slow-two-mem-ops,-slow-unaligned-mem-16,-slow-unaligned-mem-32,-soft-float,+sse,+sse2,-sse3,-sse4.1,-sse4.2,-sse4a,-sse-unaligned-mem,-ssse3,-tbm,-tsxldtrk,-uintr,-use-aa,-use-glm-div-sqrt-costs,-vaes,-vpclmulqdq,+vzeroupper,-waitpkg,-wbnoinvd,-widekl,+x87,-xop,-xsave,-xsavec,-xsaveopt,-xsaves" } attributes #5 = { nobuiltin nofree norecurse nosync nounwind "target-cpu"="x86-64" "target-features"="-16bit-mode,-32bit-mode,-3dnow,-3dnowa,+64bit,-adx,-aes,-amx-bf16,-amx-int8,-amx-tile,-avx,-avx2,-avx512bf16,-avx512bitalg,-avx512bw,-avx512cd,-avx512dq,-avx512er,-avx512f,-avx512ifma,-avx512pf,-avx512vbmi,-avx512vbmi2,-avx512vl,-avx512vnni,-avx512vp2intersect,-avx512vpopcntdq,-avxvnni,-bmi,-bmi2,-branchfusion,-cldemote,-clflushopt,-clwb,-clzero,+cmov,-cx16,+cx8,-enqcmd,-ermsb,-f16c,-false-deps-lzcnt-tzcnt,-false-deps-popcnt,-fast-11bytenop,-fast-15bytenop,-fast-7bytenop,-fast-bextr,-fast-gather,-fast-hops,-fast-lzcnt,-fast-movbe,-fast-scalar-fsqrt,-fast-scalar-shift-masks,-fast-shld-rotate,-fast-variable-crosslane-shuffle,-fast-variable-perlane-shuffle,-fast-vector-fsqrt,-fast-vector-shift-masks,-fma,-fma4,-fsgsbase,-fsrm,+fxsr,-gfni,-hreset,-idivl-to-divb,+idivq-to-divl,-invpcid,-kl,-lea-sp,-lea-uses-ag,-lvi-cfi,-lvi-load-hardening,-lwp,-lzcnt,+macrofusion,+mmx,-movbe,-movdir64b,-movdiri,-mwaitx,+nopl,-pad-short-functions,-pclmul,-pconfig,-pku,-popcnt,-prefer-128-bit,-prefer-256-bit,-prefer-mask-registers,-prefetchwt1,-prfchw,-ptwrite,-rdpid,-rdrnd,-rdseed,-retpoline,-retpoline-external-thunk,-retpoline-indirect-branches,-retpoline-indirect-calls,-rtm,-sahf,-serialize,-seses,-sgx,-sha,-shstk,+slow-3ops-lea,+slow-incdec,-slow-lea,-slow-pmaddwd,-slow-pmulld,-slow-shld,-slow-two-mem-ops,-slow-unaligned-mem-16,-slow-unaligned-mem-32,-soft-float,+sse,+sse2,-sse3,-sse4.1,-sse4.2,-sse4a,-sse-unaligned-mem,-ssse3,-tbm,-tsxldtrk,-uintr,-use-aa,-use-glm-div-sqrt-costs,-vaes,-vpclmulqdq,+vzeroupper,-waitpkg,-wbnoinvd,-widekl,+x87,-xop,-xsave,-xsavec,-xsaveopt,-xsaves" } attributes #6 = { inaccessiblememonly nofree nosync nounwind willreturn } attributes #7 = { argmemonly nofree nosync nounwind willreturn } attributes #8 = { nounwind } attributes #9 = { alwaysinline nounwind } !llvm.module.flags = !{!0, !1} !0 = !{i32 2, !"Debug Info Version", i32 3} !1 = !{i32 2, !"Dwarf Version", i32 4} !2 = !{!3} !3 = distinct !{!3, !4, !"str.strConcat: argument 0"} !4 = distinct !{!4, !"str.strConcat"} !5 = !{!6} !6 = distinct !{!6, !7, !"str.RocStr.clone: argument 0"} !7 = distinct !{!7, !"str.RocStr.clone"} !8 = !{!6, !3} !9 = !{!10, !6, !3} !10 = distinct !{!10, !11, !"str.RocStr.allocateBig: argument 0"} !11 = distinct !{!11, !"str.RocStr.allocateBig"} !12 = !{!13} !13 = distinct !{!13, !14, !"str.RocStr.reallocateFresh: argument 0"} !14 = distinct !{!14, !"str.RocStr.reallocateFresh"} !15 = !{!16} !16 = distinct !{!16, !17, !"str.RocStr.allocate: argument 0"} !17 = distinct !{!17, !"str.RocStr.allocate"} !18 = !{!19} !19 = distinct !{!19, !20, !"str.RocStr.allocateBig: argument 0"} !20 = distinct !{!20, !"str.RocStr.allocateBig"} !21 = !{!19, !16, !13} !22 = !{!19, !16} !23 = !{!24} !24 = distinct !{!24, !25, !"str.strFromIntHelp.77: argument 0"} !25 = distinct !{!25, !"str.strFromIntHelp.77"} !26 = !{!27, !29} !27 = distinct !{!27, !28, !"std.mem.span: argument 0"} !28 = distinct !{!28, !"std.mem.span"} !29 = distinct !{!29, !30, !"std.io.fixed_buffer_stream.fixedBufferStream: argument 0"} !30 = distinct !{!30, !"std.io.fixed_buffer_stream.fixedBufferStream"} !31 = !{!32, !24} !32 = distinct !{!32, !33, !"std.fmt.bufPrint.128: argument 0"} !33 = distinct !{!33, !"std.fmt.bufPrint.128"} !34 = !{!29} !35 = !{!36} !36 = distinct !{!36, !37, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).writer: argument 0"} !37 = distinct !{!37, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).writer"} !38 = !{!39} !39 = distinct !{!39, !40, !"str.RocStr.allocate: argument 0"} !40 = distinct !{!40, !"str.RocStr.allocate"} !41 = !{!42} !42 = distinct !{!42, !43, !"str.RocStr.allocateBig: argument 0"} !43 = distinct !{!43, !"str.RocStr.allocateBig"} !44 = !{!42, !39, !45, !24} !45 = distinct !{!45, !46, !"str.RocStr.init: argument 0"} !46 = distinct !{!46, !"str.RocStr.init"} !47 = !{!42, !39} !48 = !{!45, !24} !49 = !{!50} !50 = distinct !{!50, !51, !"std.unicode.utf8CountCodepoints: argument 0"} !51 = distinct !{!51, !"std.unicode.utf8CountCodepoints"} !52 = !{!53, !50} !53 = distinct !{!53, !54, !"std.unicode.utf8Decode: argument 0"} !54 = distinct !{!54, !"std.unicode.utf8Decode"} !55 = !{!56, !50} !56 = distinct !{!56, !57, !"std.unicode.utf8Decode3: argument 0"} !57 = distinct !{!57, !"std.unicode.utf8Decode3"} !58 = !{!59, !50} !59 = distinct !{!59, !60, !"std.unicode.utf8Decode4: argument 0"} !60 = distinct !{!60, !"std.unicode.utf8Decode4"} !61 = !{!62, !64} !62 = distinct !{!62, !63, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).write: argument 0"} !63 = distinct !{!63, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).write"} !64 = distinct !{!64, !65, !"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).write: argument 0"} !65 = distinct !{!65, !"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).write"} !66 = !{!67} !67 = distinct !{!67, !68} !68 = distinct !{!68, !"LVerDomain"} !69 = !{!70} !70 = distinct !{!70, !68} !71 = !{!62, !64, !67} !72 = distinct !{!72, !73} !73 = !{!"llvm.loop.isvectorized", i32 1} !74 = distinct !{!74, !75, !73} !75 = !{!"llvm.loop.unroll.runtime.disable"} !76 = distinct !{!76, !73} !77 = !{!78, !80} !78 = distinct !{!78, !79, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).write: argument 0"} !79 = distinct !{!79, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).write"} !80 = distinct !{!80, !81, !"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).write: argument 0"} !81 = distinct !{!81, !"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).write"} !82 = !{!83} !83 = distinct !{!83, !84} !84 = distinct !{!84, !"LVerDomain"} !85 = !{!86} !86 = distinct !{!86, !84} !87 = !{!78, !80, !83} !88 = distinct !{!88, !73} !89 = distinct !{!89, !75, !73} !90 = distinct !{!90, !73} !91 = !{!92, !94} !92 = distinct !{!92, !93, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).write: argument 0"} !93 = distinct !{!93, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).write"} !94 = distinct !{!94, !95, !"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).write: argument 0"} !95 = distinct !{!95, !"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).write"} !96 = !{!97, !99} !97 = distinct !{!97, !98, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).write: argument 0"} !98 = distinct !{!98, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).write"} !99 = distinct !{!99, !100, !"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).write: argument 0"} !100 = distinct !{!100, !"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).write"} !101 = !{!102, !104} !102 = distinct !{!102, !103, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).write: argument 0"} !103 = distinct !{!103, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).write"} !104 = distinct !{!104, !105, !"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).write: argument 0"} !105 = distinct !{!105, !"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).write"} !106 = !{!107} !107 = distinct !{!107, !108} !108 = distinct !{!108, !"LVerDomain"} !109 = !{!110} !110 = distinct !{!110, !108} !111 = !{!102, !104, !107} !112 = distinct !{!112, !73} !113 = distinct !{!113, !75, !73} !114 = distinct !{!114, !73} !115 = !{!116, !118} !116 = distinct !{!116, !117, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).write: argument 0"} !117 = distinct !{!117, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).write"} !118 = distinct !{!118, !119, !"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).write: argument 0"} !119 = distinct !{!119, !"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).write"} !120 = !{!121, !123} !121 = distinct !{!121, !122, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).write: argument 0"} !122 = distinct !{!122, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).write"} !123 = distinct !{!123, !124, !"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).write: argument 0"} !124 = distinct !{!124, !"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).write"} !125 = !{!126} !126 = distinct !{!126, !127} !127 = distinct !{!127, !"LVerDomain"} !128 = !{!129} !129 = distinct !{!129, !127} !130 = !{!121, !123, !126} !131 = distinct !{!131, !73} !132 = distinct !{!132, !75, !73} !133 = distinct !{!133, !73} !134 = !{!135, !137} !135 = distinct !{!135, !136, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).write: argument 0"} !136 = distinct !{!136, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).write"} !137 = distinct !{!137, !138, !"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).write: argument 0"} !138 = distinct !{!138, !"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).write"} !139 = !{!140} !140 = distinct !{!140, !141} !141 = distinct !{!141, !"LVerDomain"} !142 = !{!143} !143 = distinct !{!143, !141} !144 = !{!135, !137, !140} !145 = distinct !{!145, !73} !146 = distinct !{!146, !75, !73} !147 = distinct !{!147, !73} !148 = !{!149, !151} !149 = distinct !{!149, !150, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).write: argument 0"} !150 = distinct !{!150, !"std.io.fixed_buffer_stream.FixedBufferStream([]u8).write"} !151 = distinct !{!151, !152, !"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).write: argument 0"} !152 = distinct !{!152, !"std.io.writer.Writer(*std.io.fixed_buffer_stream.FixedBufferStream([]u8),std.io.fixed_buffer_stream.WriteError,std.io.fixed_buffer_stream.FixedBufferStream([]u8).write).write"}
Become a Patron
Sponsor on GitHub
Donate via PayPal
Source on GitHub
Mailing list
Installed libraries
Wiki
Report an issue
How it works
Contact the author
CE on Mastodon
CE on Bluesky
About the author
Statistics
Changelog
Version tree