Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

List comprehension of empty arrays no longer works #460

Closed
jgreener64 opened this issue Sep 28, 2022 · 3 comments
Closed

List comprehension of empty arrays no longer works #460

jgreener64 opened this issue Sep 28, 2022 · 3 comments

Comments

@jgreener64
Copy link
Contributor

I am on Julia 1.8.1. The following worked on commit eb030aa:

using Enzyme

function f!(a)
    as = [zero(a) for _ in 1:2]
    a .+= sum(as)
    return nothing
end

a = rand(5)
da = zero(a)
autodiff(f!, Duplicated(a, da))

But on the next commit 2e862cb (with Enzyme_jll 0.0.38) it errors:

julia: /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstrTypes.h:1445: void llvm::CallBase::setCalledFunction(llvm::FunctionType*, llvm::Value*): Assertion `getType() == FTy->getReturnType()' failed.

signal (6): Aborted
in expression starting at /home/jgreener/dms/molly_dev/enzyme_err8.jl:11
gsignal at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
abort at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x7f8126b65728)
__assert_fail at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
setCalledFunction at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstrTypes.h:1445 [inlined]
setCalledFunction at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstrTypes.h:1430 [inlined]
CreateAugmentedPrimal at /workspace/srcdir/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:2705
visitCallInst at /workspace/srcdir/Enzyme/enzyme/Enzyme/AdjointGenerator.h:11768
delegateCallInst at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:302 [inlined]
visitCall at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/Instruction.def:209 [inlined]
visit at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/Instruction.def:209
visit at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:112 [inlined]
CreateAugmentedPrimal at /workspace/srcdir/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:2213
visitCallInst at /workspace/srcdir/Enzyme/enzyme/Enzyme/AdjointGenerator.h:11768
delegateCallInst at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:302 [inlined]
visitCall at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/Instruction.def:209 [inlined]
visit at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/Instruction.def:209
visit at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:112 [inlined]
CreateAugmentedPrimal at /workspace/srcdir/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:2213
visitCallInst at /workspace/srcdir/Enzyme/enzyme/Enzyme/AdjointGenerator.h:11768
delegateCallInst at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:302 [inlined]
visitCall at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/Instruction.def:209 [inlined]
visit at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/Instruction.def:209
visit at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:112 [inlined]
CreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:3916
EnzymeCreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme/CApi.cpp:473
EnzymeCreatePrimalAndGradient at /home/jgreener/.julia/dev/Enzyme/src/api.jl:118
enzyme! at /home/jgreener/.julia/dev/Enzyme/src/compiler.jl:4281
unknown function (ip: 0x7f7f8a1cc4a2)
_jl_invoke at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2549
#codegen#112 at /home/jgreener/.julia/dev/Enzyme/src/compiler.jl:5267
codegen##kw at /home/jgreener/.julia/dev/Enzyme/src/compiler.jl:4937 [inlined]
_thunk at /home/jgreener/.julia/dev/Enzyme/src/compiler.jl:5740 [inlined]
_thunk at /home/jgreener/.julia/dev/Enzyme/src/compiler.jl:5734
unknown function (ip: 0x7f80c80e193d)
_jl_invoke at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2549
cached_compilation at /home/jgreener/.julia/dev/Enzyme/src/compiler.jl:5778
unknown function (ip: 0x7f80c80be633)
_jl_invoke at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2549
#s814#139 at /home/jgreener/.julia/dev/Enzyme/src/compiler.jl:5838 [inlined]
#s814#139 at ./none:0
_jl_invoke at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2549
GeneratedFunctionStub at ./boot.jl:582
_jl_invoke at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2549
jl_apply at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/julia.h:1838 [inlined]
jl_call_staged at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/method.c:520
ijl_code_for_staged at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/method.c:571
get_staged at ./compiler/utilities.jl:114
retrieve_code_info at ./compiler/utilities.jl:126 [inlined]
InferenceState at ./compiler/inferencestate.jl:284
typeinf_edge at ./compiler/typeinfer.jl:868
abstract_call_method at ./compiler/abstractinterpretation.jl:641
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:153
abstract_call_known at ./compiler/abstractinterpretation.jl:1696
abstract_call at ./compiler/abstractinterpretation.jl:1766
abstract_call at ./compiler/abstractinterpretation.jl:1733
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1890
typeinf_local at ./compiler/abstractinterpretation.jl:2366
typeinf_nocycle at ./compiler/abstractinterpretation.jl:2462
_typeinf at ./compiler/typeinfer.jl:230
typeinf at ./compiler/typeinfer.jl:213
typeinf_edge at ./compiler/typeinfer.jl:877
abstract_call_method at ./compiler/abstractinterpretation.jl:641
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:153
abstract_call_known at ./compiler/abstractinterpretation.jl:1696
abstract_call at ./compiler/abstractinterpretation.jl:1766
abstract_call at ./compiler/abstractinterpretation.jl:1733
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1890
typeinf_local at ./compiler/abstractinterpretation.jl:2366
typeinf_nocycle at ./compiler/abstractinterpretation.jl:2462
_typeinf at ./compiler/typeinfer.jl:230
typeinf at ./compiler/typeinfer.jl:213
typeinf_edge at ./compiler/typeinfer.jl:877
abstract_call_method at ./compiler/abstractinterpretation.jl:641
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:153
abstract_call_known at ./compiler/abstractinterpretation.jl:1696
abstract_call at ./compiler/abstractinterpretation.jl:1766
abstract_call at ./compiler/abstractinterpretation.jl:1733
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1890
typeinf_local at ./compiler/abstractinterpretation.jl:2366
typeinf_nocycle at ./compiler/abstractinterpretation.jl:2462
_typeinf at ./compiler/typeinfer.jl:230
typeinf at ./compiler/typeinfer.jl:213
typeinf_edge at ./compiler/typeinfer.jl:877
abstract_call_method at ./compiler/abstractinterpretation.jl:641
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:153
abstract_call_known at ./compiler/abstractinterpretation.jl:1696
abstract_call at ./compiler/abstractinterpretation.jl:1766
abstract_call at ./compiler/abstractinterpretation.jl:1733
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1890
typeinf_local at ./compiler/abstractinterpretation.jl:2340
typeinf_nocycle at ./compiler/abstractinterpretation.jl:2462
_typeinf at ./compiler/typeinfer.jl:230
typeinf at ./compiler/typeinfer.jl:213
typeinf_edge at ./compiler/typeinfer.jl:877
abstract_call_method at ./compiler/abstractinterpretation.jl:641
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:153
abstract_call_known at ./compiler/abstractinterpretation.jl:1696
abstract_call at ./compiler/abstractinterpretation.jl:1766
abstract_apply at ./compiler/abstractinterpretation.jl:1339
abstract_call_known at ./compiler/abstractinterpretation.jl:1600
abstract_call at ./compiler/abstractinterpretation.jl:1766
abstract_call at ./compiler/abstractinterpretation.jl:1733
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1890
typeinf_local at ./compiler/abstractinterpretation.jl:2366
typeinf_nocycle at ./compiler/abstractinterpretation.jl:2462
_typeinf at ./compiler/typeinfer.jl:230
typeinf at ./compiler/typeinfer.jl:213
typeinf_edge at ./compiler/typeinfer.jl:877
abstract_call_method at ./compiler/abstractinterpretation.jl:641
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:153
abstract_call_known at ./compiler/abstractinterpretation.jl:1696
abstract_call at ./compiler/abstractinterpretation.jl:1766
abstract_apply at ./compiler/abstractinterpretation.jl:1339
abstract_call_known at ./compiler/abstractinterpretation.jl:1600
abstract_call at ./compiler/abstractinterpretation.jl:1766
abstract_call at ./compiler/abstractinterpretation.jl:1733
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1890
typeinf_local at ./compiler/abstractinterpretation.jl:2366
typeinf_nocycle at ./compiler/abstractinterpretation.jl:2462
_typeinf at ./compiler/typeinfer.jl:230
typeinf at ./compiler/typeinfer.jl:213
typeinf_ext at ./compiler/typeinfer.jl:967
typeinf_ext_toplevel at ./compiler/typeinfer.jl:1000
typeinf_ext_toplevel at ./compiler/typeinfer.jl:996
jfptr_typeinf_ext_toplevel_18807.clone_1 at /home/jgreener/soft/julia/julia-1.8.1/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2549
jl_apply at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/julia.h:1838 [inlined]
jl_type_infer at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:319
jl_generate_fptr_impl at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/jitlayers.cpp:319
jl_compile_method_internal at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2081 [inlined]
jl_compile_method_internal at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2025
_jl_invoke at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2359 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2549
jl_apply at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/julia.h:1838 [inlined]
do_call at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/interpreter.c:126
eval_value at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/interpreter.c:215
eval_stmt_value at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/interpreter.c:166 [inlined]
eval_body at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/interpreter.c:612
jl_interpret_toplevel_thunk at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/interpreter.c:750
jl_toplevel_eval_flex at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/toplevel.c:906
jl_toplevel_eval_flex at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/toplevel.c:850
ijl_toplevel_eval_in at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/toplevel.c:965
eval at ./boot.jl:368 [inlined]
include_string at ./loading.jl:1428
_jl_invoke at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2549
_include at ./loading.jl:1488
include at ./Base.jl:419
jfptr_include_32221.clone_1 at /home/jgreener/soft/julia/julia-1.8.1/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2549
exec_options at ./client.jl:303
_start at ./client.jl:522
jfptr__start_61720.clone_1 at /home/jgreener/soft/julia/julia-1.8.1/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/gf.c:2549
jl_apply at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/julia.h:1838 [inlined]
true_main at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/jlapi.c:575
jl_repl_entrypoint at /cache/build/default-amdci5-0/julialang/julia-release-1-dot-8/src/jlapi.c:719
main at julia (unknown line)
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x401098)
Allocations: 34297234 (Pool: 34254542; Big: 42692); GC: 41
Aborted (core dumped)
@wsmoses
Copy link
Member

wsmoses commented Sep 28, 2022

Oh excellent, this hits exactly the recursive anonymous GC cache case that we didn't have a test for and needed one!

This will unfortunately require a jll bump to fix (among a few other things)

@wsmoses
Copy link
Member

wsmoses commented Sep 28, 2022

user:   %_augmented21 = call fastcc { i8*, {} addrspace(10)*, {} addrspace(10)* } @fakeaugmented_julia_mapreduce_impl_1858.2({} addrspace(10)* %0, {} addrspace(10)* %"'", i64 %54, i64 %2), !dbg !67 NewF: ; Function Attrs: mustprogress noinline willreturn
define internal fastcc { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } @augmented_julia_mapreduce_impl_1858({} addrspace(10)* noundef nonnull align 16 dereferenceable(40) %0, {} addrspace(10)* %"'", i64 signext %1, i64 signext %2) unnamed_addr #21 !dbg !1229 {
top:
  %3 = call {}*** @julia.get_pgcstack()
  %4 = alloca { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }, align 8
  store { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } zeroinitializer, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }* %4, align 8
  %5 = bitcast {}*** %3 to {}**
  %6 = getelementptr inbounds {}*, {}** %5, i64 -12
  %7 = getelementptr inbounds {}*, {}** %6, i64 14
  %8 = bitcast {}** %7 to i8**
  %9 = load i8*, i8** %8, align 8
  %10 = call noalias nonnull dereferenceable(304) dereferenceable_or_null(304) {} addrspace(10)* @jl_gc_alloc_typed(i8* %9, i64 304, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140090790965376 to {}*) to {} addrspace(10)*))
  %tapemem = bitcast {} addrspace(10)* %10 to { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)*
  %11 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }* %4, i32 0, i32 0
  store {} addrspace(10)* %10, {} addrspace(10)** %11, align 8
  %"iv'ac" = alloca i64, align 8
  %"'ipl19_cache" = alloca {} addrspace(10)* addrspace(10)*, align 8
  %subcache33_cache = alloca { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, align 8
  %_cache = alloca {} addrspace(10)* addrspace(10)*, align 8
  %"'ac34_cache" = alloca {} addrspace(10)* addrspace(10)*, align 8
  %value_phi526_cache = alloca {} addrspace(10)* addrspace(10)*, align 8
  %_cache35 = alloca {} addrspace(10)* addrspace(10)*, align 8
  %.not = icmp eq i64 %2, %1, !dbg !1230
  br i1 %.not, label %L3, label %L5, !dbg !1231

L3:                                               ; preds = %top
  %12 = add i64 %2, -1, !dbg !1232
  %"'ipc" = bitcast {} addrspace(10)* %"'" to {} addrspace(10)* addrspace(13)* addrspace(10)*, !dbg !1232
  %13 = bitcast {} addrspace(10)* %0 to {} addrspace(10)* addrspace(13)* addrspace(10)*, !dbg !1232
  %"'ipc11" = addrspacecast {} addrspace(10)* addrspace(13)* addrspace(10)* %"'ipc" to {} addrspace(10)* addrspace(13)* addrspace(11)*, !dbg !1232
  %14 = addrspacecast {} addrspace(10)* addrspace(13)* addrspace(10)* %13 to {} addrspace(10)* addrspace(13)* addrspace(11)*, !dbg !1232
  %"'ipl12" = load {} addrspace(10)* addrspace(13)*, {} addrspace(10)* addrspace(13)* addrspace(11)* %"'ipc11", align 16, !dbg !1232, !tbaa !77, !nonnull !4
  %15 = load {} addrspace(10)* addrspace(13)*, {} addrspace(10)* addrspace(13)* addrspace(11)* %14, align 16, !dbg !1232, !tbaa !77, !nonnull !4
  %"'ipg" = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %"'ipl12", i64 %12, !dbg !1232
  %16 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %15, i64 %12, !dbg !1232
  %"'ipl" = load {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %"'ipg", align 8, !dbg !1232, !tbaa !85
  %17 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 0, !dbg !1232
  store {} addrspace(10)* %"'ipl", {} addrspace(10)* addrspace(10)* %17, align 8, !dbg !1232
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %"'ipl"), !dbg !1232
  %18 = load {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %16, align 8, !dbg !1232, !tbaa !85
  %19 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 19, !dbg !1232
  store {} addrspace(10)* %18, {} addrspace(10)* addrspace(10)* %19, align 8, !dbg !1232
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %18), !dbg !1232
  %.not17 = icmp eq {} addrspace(10)* %18, null, !dbg !1232
  br i1 %.not17, label %fail, label %common.ret, !dbg !1232

L5:                                               ; preds = %top
  %20 = sub i64 %2, %1, !dbg !1234
  %.not18 = icmp slt i64 %20, 1024, !dbg !1236
  br i1 %.not18, label %L8, label %L59, !dbg !1235

L8:                                               ; preds = %L5
  %21 = add i64 %1, -1, !dbg !1237
  %"'ipc15" = bitcast {} addrspace(10)* %"'" to {} addrspace(10)* addrspace(13)* addrspace(10)*, !dbg !1237
  %22 = bitcast {} addrspace(10)* %0 to {} addrspace(10)* addrspace(13)* addrspace(10)*, !dbg !1237
  %"'ipc16" = addrspacecast {} addrspace(10)* addrspace(13)* addrspace(10)* %"'ipc15" to {} addrspace(10)* addrspace(13)* addrspace(11)*, !dbg !1237
  %23 = addrspacecast {} addrspace(10)* addrspace(13)* addrspace(10)* %22 to {} addrspace(10)* addrspace(13)* addrspace(11)*, !dbg !1237
  %"'ipl17" = load {} addrspace(10)* addrspace(13)*, {} addrspace(10)* addrspace(13)* addrspace(11)* %"'ipc16", align 16, !dbg !1237, !tbaa !77, !nonnull !4
  %24 = load {} addrspace(10)* addrspace(13)*, {} addrspace(10)* addrspace(13)* addrspace(11)* %23, align 16, !dbg !1237, !tbaa !77, !nonnull !4
  %"'ipg13" = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %"'ipl17", i64 %21, !dbg !1237
  %25 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %24, i64 %21, !dbg !1237
  %"'ipl14" = load {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %"'ipg13", align 8, !dbg !1237, !tbaa !85
  %26 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 1, !dbg !1237
  store {} addrspace(10)* %"'ipl14", {} addrspace(10)* addrspace(10)* %26, align 8, !dbg !1237
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %"'ipl14"), !dbg !1237
  %27 = load {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %25, align 8, !dbg !1237, !tbaa !85
  %28 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 20, !dbg !1237
  store {} addrspace(10)* %27, {} addrspace(10)* addrspace(10)* %28, align 8, !dbg !1237
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %27), !dbg !1237
  %.not19 = icmp eq {} addrspace(10)* %27, null, !dbg !1237
  br i1 %.not19, label %fail1, label %pass2, !dbg !1237

L32:                                              ; preds = %pass9, %L32.preheader
  %iv = phi i64 [ %iv.next, %pass9 ], [ 0, %L32.preheader ]
  %29 = phi {} addrspace(10)* [ %"'ac34", %pass9 ], [ %"'ac31", %L32.preheader ]
  %value_phi526 = phi {} addrspace(10)* [ %163, %pass9 ], [ %80, %L32.preheader ]
  %iv.next = add nuw nsw i64 %iv, 1, !dbg !1239
  %30 = add i64 %84, %iv, !dbg !1239
  %"'ipl20" = load {} addrspace(10)* addrspace(13)*, {} addrspace(10)* addrspace(13)* addrspace(11)* %"'ipc16", align 16, !dbg !1239, !tbaa !77, !nonnull !4
  %31 = load {} addrspace(10)* addrspace(13)*, {} addrspace(10)* addrspace(13)* addrspace(11)* %23, align 16, !dbg !1239, !tbaa !77, !nonnull !4
  %"'ipg18" = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %"'ipl20", i64 %30, !dbg !1239
  %32 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %31, i64 %30, !dbg !1239
  %"'ipl19" = load {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %"'ipg18", align 8, !dbg !1239, !tbaa !85
  %33 = load {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)** %"'ipl19_cache", align 8, !dbg !1239, !dereferenceable !829, !invariant.group !1243
  %34 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %33, i64 %iv, !dbg !1239
  store {} addrspace(10)* %"'ipl19", {} addrspace(10)* addrspace(10)* %34, align 8, !dbg !1239, !tbaa !85, !invariant.group !1244
  %35 = load {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)** %value_phi526_cache, align 8, !dbg !1239, !dereferenceable !829, !invariant.group !1245
  %36 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %35, i64 %iv, !dbg !1239
  store {} addrspace(10)* %value_phi526, {} addrspace(10)* addrspace(10)* %36, align 8, !dbg !1239, !invariant.group !1246
  %37 = bitcast {} addrspace(10)* addrspace(10)* %35 to {} addrspace(10)*, !dbg !1239
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %37, {} addrspace(10)* %value_phi526), !dbg !1239
  %38 = bitcast {} addrspace(10)* addrspace(10)* %33 to {} addrspace(10)*, !dbg !1239
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %38, {} addrspace(10)* %"'ipl19"), !dbg !1239
  %39 = load {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %32, align 8, !dbg !1239, !tbaa !85
  %40 = load {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)** %_cache35, align 8, !dbg !1239, !dereferenceable !829, !invariant.group !1247
  %41 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %40, i64 %iv, !dbg !1239
  store {} addrspace(10)* %39, {} addrspace(10)* addrspace(10)* %41, align 8, !dbg !1239, !tbaa !85, !invariant.group !1248
  %42 = bitcast {} addrspace(10)* addrspace(10)* %40 to {} addrspace(10)*, !dbg !1239
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %42, {} addrspace(10)* %39), !dbg !1239
  %.not23 = icmp eq {} addrspace(10)* %39, null, !dbg !1239
  br i1 %.not23, label %fail8, label %pass9, !dbg !1239

common.ret.loopexit:                              ; preds = %pass9
  br label %common.ret, !dbg !1249

common.ret:                                       ; preds = %pass4, %L59, %common.ret.loopexit, %L3
  %43 = phi {} addrspace(10)* [ %"'ac", %L59 ], [ %"'ac31", %pass4 ], [ %"'ipl", %L3 ], [ %"'ac34", %common.ret.loopexit ]
  %common.ret.op = phi {} addrspace(10)* [ %66, %L59 ], [ %80, %pass4 ], [ %18, %L3 ], [ %163, %common.ret.loopexit ]
  %44 = insertvalue { i8*, {} addrspace(10)*, {} addrspace(10)* } undef, {} addrspace(10)* %common.ret.op, 1, !dbg !1249
  %45 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }* %4, i32 0, i32 1, !dbg !1249
  store {} addrspace(10)* %common.ret.op, {} addrspace(10)** %45, align 8, !dbg !1249
  %46 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }* %4, i32 0, i32 2, !dbg !1249
  store {} addrspace(10)* %43, {} addrspace(10)** %46, align 8, !dbg !1249
  %47 = load { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }* %4, align 8, !dbg !1249
  ret { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %47, !dbg !1249

L59:                                              ; preds = %L5
  %48 = ashr i64 %20, 1, !dbg !1250
  %49 = add i64 %48, %1, !dbg !1253
  %_augmented24 = call fastcc { i8*, {} addrspace(10)*, {} addrspace(10)* } @fakeaugmented_julia_mapreduce_impl_1858.2({} addrspace(10)* %0, {} addrspace(10)* %"'", i64 %1, i64 %49), !dbg !1254
  %subcache25 = extractvalue { i8*, {} addrspace(10)*, {} addrspace(10)* } %_augmented24, 0, !dbg !1254
  %50 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 9, !dbg !1254
  store i8* %subcache25, i8* addrspace(10)* %50, align 8, !dbg !1254
  %51 = extractvalue { i8*, {} addrspace(10)*, {} addrspace(10)* } %_augmented24, 1, !dbg !1254
  %52 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 10, !dbg !1255
  store {} addrspace(10)* %51, {} addrspace(10)* addrspace(10)* %52, align 8, !dbg !1255
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %51), !dbg !1255
  %"'ac26" = extractvalue { i8*, {} addrspace(10)*, {} addrspace(10)* } %_augmented24, 2, !dbg !1255
  %53 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 11, !dbg !1255
  store {} addrspace(10)* %"'ac26", {} addrspace(10)* addrspace(10)* %53, align 8, !dbg !1255
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %"'ac26"), !dbg !1255
  %54 = add i64 %49, 1, !dbg !1255
  %_augmented21 = call fastcc { i8*, {} addrspace(10)*, {} addrspace(10)* } @fakeaugmented_julia_mapreduce_impl_1858.2({} addrspace(10)* %0, {} addrspace(10)* %"'", i64 %54, i64 %2), !dbg !1256
  %subcache22 = extractvalue { i8*, {} addrspace(10)*, {} addrspace(10)* } %_augmented21, 0, !dbg !1256
  %55 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 6, !dbg !1256
  store i8* %subcache22, i8* addrspace(10)* %55, align 8, !dbg !1256
  %56 = extractvalue { i8*, {} addrspace(10)*, {} addrspace(10)* } %_augmented21, 1, !dbg !1256
  %57 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 7, !dbg !1257
  store {} addrspace(10)* %56, {} addrspace(10)* addrspace(10)* %57, align 8, !dbg !1257
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %56), !dbg !1257
  %"'ac23" = extractvalue { i8*, {} addrspace(10)*, {} addrspace(10)* } %_augmented21, 2, !dbg !1257
  %58 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 8, !dbg !1257
  store {} addrspace(10)* %"'ac23", {} addrspace(10)* addrspace(10)* %58, align 8, !dbg !1257
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %"'ac23"), !dbg !1257
  %_augmented = call fastcc { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)* } @augmented_julia___1864({} addrspace(10)* %51, {} addrspace(10)* %"'ac26", {} addrspace(10)* %56, {} addrspace(10)* %"'ac23"), !dbg !1257
  %subcache = extractvalue { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)* } %_augmented, 0, !dbg !1257
  %59 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 3, !dbg !1257
  store { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)* %59, align 8, !dbg !1257
  %60 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache, 0, !dbg !1257
  %61 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache, 1, !dbg !1257
  %62 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache, 2, !dbg !1257
  %63 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache, 3, !dbg !1257
  %64 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache, 4, !dbg !1257
  %65 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache, 5, !dbg !1257
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %65, {} addrspace(10)* %64, {} addrspace(10)* %63, {} addrspace(10)* %62, {} addrspace(10)* %61, {} addrspace(10)* %60), !dbg !1257
  %66 = extractvalue { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)* } %_augmented, 1, !dbg !1257
  %67 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 4
  store {} addrspace(10)* %66, {} addrspace(10)* addrspace(10)* %67, align 8
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %66)
  %"'ac" = extractvalue { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)* } %_augmented, 2
  %68 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 5
  store {} addrspace(10)* %"'ac", {} addrspace(10)* addrspace(10)* %68, align 8
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %"'ac")
  br label %common.ret

fail:                                             ; preds = %L3
  call void @ijl_throw({} addrspace(12)* noundef addrspacecast ({}* inttoptr (i64 140100082098864 to {}*) to {} addrspace(12)*)) #23, !dbg !1232
  unreachable, !dbg !1232

fail1:                                            ; preds = %L8
  call void @ijl_throw({} addrspace(12)* noundef addrspacecast ({}* inttoptr (i64 140100082098864 to {}*) to {} addrspace(12)*)) #23, !dbg !1237
  unreachable, !dbg !1237

pass2:                                            ; preds = %L8
  %"'ipg27" = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %"'ipl17", i64 %1, !dbg !1259
  %69 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %24, i64 %1, !dbg !1259
  %"'ipl28" = load {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %"'ipg27", align 8, !dbg !1259, !tbaa !85
  %70 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 12, !dbg !1259
  store {} addrspace(10)* %"'ipl28", {} addrspace(10)* addrspace(10)* %70, align 8, !dbg !1259
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %"'ipl28"), !dbg !1259
  %71 = load {} addrspace(10)*, {} addrspace(10)* addrspace(13)* %69, align 8, !dbg !1259, !tbaa !85
  %72 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 23, !dbg !1259
  store {} addrspace(10)* %71, {} addrspace(10)* addrspace(10)* %72, align 8, !dbg !1259
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %71), !dbg !1259
  %.not20 = icmp eq {} addrspace(10)* %71, null, !dbg !1259
  br i1 %.not20, label %fail3, label %pass4, !dbg !1259

fail3:                                            ; preds = %pass2
  call void @ijl_throw({} addrspace(12)* noundef addrspacecast ({}* inttoptr (i64 140100082098864 to {}*) to {} addrspace(12)*)) #23, !dbg !1259
  unreachable, !dbg !1259

pass4:                                            ; preds = %pass2
  %_augmented29 = call fastcc { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)* } @augmented_julia___1864({} addrspace(10)* %27, {} addrspace(10)* %"'ipl14", {} addrspace(10)* %71, {} addrspace(10)* %"'ipl28"), !dbg !1261
  %subcache30 = extractvalue { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)* } %_augmented29, 0, !dbg !1261
  %73 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 13, !dbg !1261
  store { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache30, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)* %73, align 8, !dbg !1261
  %74 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache30, 0, !dbg !1261
  %75 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache30, 1, !dbg !1261
  %76 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache30, 2, !dbg !1261
  %77 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache30, 3, !dbg !1261
  %78 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache30, 4, !dbg !1261
  %79 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache30, 5, !dbg !1261
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %79, {} addrspace(10)* %78, {} addrspace(10)* %77, {} addrspace(10)* %76, {} addrspace(10)* %75, {} addrspace(10)* %74), !dbg !1261
  %80 = extractvalue { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)* } %_augmented29, 1, !dbg !1261
  %81 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 14, !dbg !1263
  store {} addrspace(10)* %80, {} addrspace(10)* addrspace(10)* %81, align 8, !dbg !1263
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %80), !dbg !1263
  %"'ac31" = extractvalue { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)* } %_augmented29, 2, !dbg !1263
  %82 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 15, !dbg !1263
  store {} addrspace(10)* %"'ac31", {} addrspace(10)* addrspace(10)* %82, align 8, !dbg !1263
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %"'ac31"), !dbg !1263
  %83 = add i64 %1, 2, !dbg !1263
  %.not21 = icmp sgt i64 %83, %2, !dbg !1265
  %84 = add i64 %1, 1, !dbg !1267
  %value_phi = select i1 %.not21, i64 %84, i64 %2, !dbg !1267
  %85 = sub i64 %value_phi, %83, !dbg !1270
  %86 = icmp ugt i64 %85, 9223372036854775806, !dbg !1274
  br i1 %86, label %common.ret, label %L32.preheader, !dbg !1275

L32.preheader:                                    ; preds = %pass4
  %87 = add nuw i64 %85, 1, !dbg !1239
  %88 = mul nuw i64 %87, 8, !dbg !1239
  %89 = call {} addrspace(10)* @ijl_box_int64(i64 %87), !dbg !1239
  %90 = call cc37 {} addrspace(10)* bitcast ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @jl_f_apply_type to {} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*)*)({} addrspace(10)* null, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140090909122032 to {}*) to {} addrspace(10)*), {} addrspace(10)* %89, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140100079346576 to {}*) to {} addrspace(10)*)), !dbg !1239
  %91 = bitcast {}*** %3 to {}**, !dbg !1239
  %92 = getelementptr inbounds {}*, {}** %91, i64 -12, !dbg !1239
  %93 = getelementptr inbounds {}*, {}** %92, i64 14, !dbg !1239
  %94 = bitcast {}** %93 to i8**, !dbg !1239
  %95 = load i8*, i8** %94, align 8, !dbg !1239
  %96 = call noalias nonnull {} addrspace(10)* @jl_gc_alloc_typed(i8* %95, i64 %88, {} addrspace(10)* %90), !dbg !1239
  %"'ipl19_malloccache" = bitcast {} addrspace(10)* %96 to {} addrspace(10)* addrspace(10)*, !dbg !1239
  %97 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 2, !dbg !1239
  store {} addrspace(10)* addrspace(10)* %"'ipl19_malloccache", {} addrspace(10)* addrspace(10)* addrspace(10)* %97, align 8, !dbg !1239
  %98 = bitcast {} addrspace(10)* addrspace(10)* %"'ipl19_malloccache" to {} addrspace(10)*, !dbg !1239
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %98), !dbg !1239
  store {} addrspace(10)* addrspace(10)* %"'ipl19_malloccache", {} addrspace(10)* addrspace(10)** %"'ipl19_cache", align 8, !dbg !1239, !invariant.group !1243
  %99 = mul nuw i64 %87, 64, !dbg !1239
  %100 = call {} addrspace(10)* @ijl_box_int64(i64 %87), !dbg !1239
  %101 = call cc37 {} addrspace(10)* bitcast ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @jl_f_apply_type to {} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*)*)({} addrspace(10)* null, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140090909122032 to {}*) to {} addrspace(10)*), {} addrspace(10)* %100, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140090935931088 to {}*) to {} addrspace(10)*)), !dbg !1239
  %102 = bitcast {}*** %3 to {}**, !dbg !1239
  %103 = getelementptr inbounds {}*, {}** %102, i64 -12, !dbg !1239
  %104 = getelementptr inbounds {}*, {}** %103, i64 14, !dbg !1239
  %105 = bitcast {}** %104 to i8**, !dbg !1239
  %106 = load i8*, i8** %105, align 8, !dbg !1239
  %107 = call noalias nonnull {} addrspace(10)* @jl_gc_alloc_typed(i8* %106, i64 %99, {} addrspace(10)* %101), !dbg !1239
  %subcache33_malloccache = bitcast {} addrspace(10)* %107 to { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, !dbg !1239
  %108 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 16, !dbg !1239
  store { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)* %subcache33_malloccache, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)* addrspace(10)* %108, align 8, !dbg !1239
  %109 = bitcast { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)* %subcache33_malloccache to {} addrspace(10)*, !dbg !1239
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %109), !dbg !1239
  store { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)* %subcache33_malloccache, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)** %subcache33_cache, align 16, !dbg !1239, !invariant.group !1276
  %110 = mul nuw i64 %87, 8, !dbg !1239
  %111 = call {} addrspace(10)* @ijl_box_int64(i64 %87), !dbg !1239
  %112 = call cc37 {} addrspace(10)* bitcast ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @jl_f_apply_type to {} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*)*)({} addrspace(10)* null, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140090909122032 to {}*) to {} addrspace(10)*), {} addrspace(10)* %111, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140100079346576 to {}*) to {} addrspace(10)*)), !dbg !1239
  %113 = bitcast {}*** %3 to {}**, !dbg !1239
  %114 = getelementptr inbounds {}*, {}** %113, i64 -12, !dbg !1239
  %115 = getelementptr inbounds {}*, {}** %114, i64 14, !dbg !1239
  %116 = bitcast {}** %115 to i8**, !dbg !1239
  %117 = load i8*, i8** %116, align 8, !dbg !1239
  %118 = call noalias nonnull {} addrspace(10)* @jl_gc_alloc_typed(i8* %117, i64 %110, {} addrspace(10)* %112), !dbg !1239
  %_malloccache = bitcast {} addrspace(10)* %118 to {} addrspace(10)* addrspace(10)*, !dbg !1239
  %119 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 17, !dbg !1239
  store {} addrspace(10)* addrspace(10)* %_malloccache, {} addrspace(10)* addrspace(10)* addrspace(10)* %119, align 8, !dbg !1239
  %120 = bitcast {} addrspace(10)* addrspace(10)* %_malloccache to {} addrspace(10)*, !dbg !1239
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %120), !dbg !1239
  store {} addrspace(10)* addrspace(10)* %_malloccache, {} addrspace(10)* addrspace(10)** %_cache, align 8, !dbg !1239, !invariant.group !1277
  %121 = mul nuw i64 %87, 8, !dbg !1239
  %122 = call {} addrspace(10)* @ijl_box_int64(i64 %87), !dbg !1239
  %123 = call cc37 {} addrspace(10)* bitcast ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @jl_f_apply_type to {} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*)*)({} addrspace(10)* null, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140090909122032 to {}*) to {} addrspace(10)*), {} addrspace(10)* %122, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140100079346576 to {}*) to {} addrspace(10)*)), !dbg !1239
  %124 = bitcast {}*** %3 to {}**, !dbg !1239
  %125 = getelementptr inbounds {}*, {}** %124, i64 -12, !dbg !1239
  %126 = getelementptr inbounds {}*, {}** %125, i64 14, !dbg !1239
  %127 = bitcast {}** %126 to i8**, !dbg !1239
  %128 = load i8*, i8** %127, align 8, !dbg !1239
  %129 = call noalias nonnull {} addrspace(10)* @jl_gc_alloc_typed(i8* %128, i64 %121, {} addrspace(10)* %123), !dbg !1239
  %"'ac34_malloccache" = bitcast {} addrspace(10)* %129 to {} addrspace(10)* addrspace(10)*, !dbg !1239
  %130 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 18, !dbg !1239
  store {} addrspace(10)* addrspace(10)* %"'ac34_malloccache", {} addrspace(10)* addrspace(10)* addrspace(10)* %130, align 8, !dbg !1239
  %131 = bitcast {} addrspace(10)* addrspace(10)* %"'ac34_malloccache" to {} addrspace(10)*, !dbg !1239
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %131), !dbg !1239
  store {} addrspace(10)* addrspace(10)* %"'ac34_malloccache", {} addrspace(10)* addrspace(10)** %"'ac34_cache", align 8, !dbg !1239, !invariant.group !1278
  %132 = mul nuw i64 %87, 8, !dbg !1239
  %133 = call {} addrspace(10)* @ijl_box_int64(i64 %87), !dbg !1239
  %134 = call cc37 {} addrspace(10)* bitcast ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @jl_f_apply_type to {} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*)*)({} addrspace(10)* null, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140090909122032 to {}*) to {} addrspace(10)*), {} addrspace(10)* %133, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140100079346576 to {}*) to {} addrspace(10)*)), !dbg !1239
  %135 = bitcast {}*** %3 to {}**, !dbg !1239
  %136 = getelementptr inbounds {}*, {}** %135, i64 -12, !dbg !1239
  %137 = getelementptr inbounds {}*, {}** %136, i64 14, !dbg !1239
  %138 = bitcast {}** %137 to i8**, !dbg !1239
  %139 = load i8*, i8** %138, align 8, !dbg !1239
  %140 = call noalias nonnull {} addrspace(10)* @jl_gc_alloc_typed(i8* %139, i64 %132, {} addrspace(10)* %134), !dbg !1239
  %value_phi526_malloccache = bitcast {} addrspace(10)* %140 to {} addrspace(10)* addrspace(10)*, !dbg !1239
  %141 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 21, !dbg !1239
  store {} addrspace(10)* addrspace(10)* %value_phi526_malloccache, {} addrspace(10)* addrspace(10)* addrspace(10)* %141, align 8, !dbg !1239
  %142 = bitcast {} addrspace(10)* addrspace(10)* %value_phi526_malloccache to {} addrspace(10)*, !dbg !1239
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %142), !dbg !1239
  store {} addrspace(10)* addrspace(10)* %value_phi526_malloccache, {} addrspace(10)* addrspace(10)** %value_phi526_cache, align 8, !dbg !1239, !invariant.group !1245
  %143 = mul nuw i64 %87, 8, !dbg !1239
  %144 = call {} addrspace(10)* @ijl_box_int64(i64 %87), !dbg !1239
  %145 = call cc37 {} addrspace(10)* bitcast ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @jl_f_apply_type to {} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*)*)({} addrspace(10)* null, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140090909122032 to {}*) to {} addrspace(10)*), {} addrspace(10)* %144, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140100079346576 to {}*) to {} addrspace(10)*)), !dbg !1239
  %146 = bitcast {}*** %3 to {}**, !dbg !1239
  %147 = getelementptr inbounds {}*, {}** %146, i64 -12, !dbg !1239
  %148 = getelementptr inbounds {}*, {}** %147, i64 14, !dbg !1239
  %149 = bitcast {}** %148 to i8**, !dbg !1239
  %150 = load i8*, i8** %149, align 8, !dbg !1239
  %151 = call noalias nonnull {} addrspace(10)* @jl_gc_alloc_typed(i8* %150, i64 %143, {} addrspace(10)* %145), !dbg !1239
  %_malloccache36 = bitcast {} addrspace(10)* %151 to {} addrspace(10)* addrspace(10)*, !dbg !1239
  %152 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* } addrspace(10)* %tapemem, i32 0, i32 22, !dbg !1239
  store {} addrspace(10)* addrspace(10)* %_malloccache36, {} addrspace(10)* addrspace(10)* addrspace(10)* %152, align 8, !dbg !1239
  %153 = bitcast {} addrspace(10)* addrspace(10)* %_malloccache36 to {} addrspace(10)*, !dbg !1239
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %10, {} addrspace(10)* %153), !dbg !1239
  store {} addrspace(10)* addrspace(10)* %_malloccache36, {} addrspace(10)* addrspace(10)** %_cache35, align 8, !dbg !1239, !invariant.group !1247
  br label %L32, !dbg !1239

fail8:                                            ; preds = %L32
  call void @ijl_throw({} addrspace(12)* addrspacecast ({}* inttoptr (i64 140100082098864 to {}*) to {} addrspace(12)*)) #24, !dbg !1239
  unreachable, !dbg !1239

pass9:                                            ; preds = %L32
  %_augmented32 = call fastcc { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)* } @augmented_julia___1864({} addrspace(10)* %value_phi526, {} addrspace(10)* %29, {} addrspace(10)* %39, {} addrspace(10)* %"'ipl19"), !dbg !1279
  %subcache33 = extractvalue { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)* } %_augmented32, 0, !dbg !1279
  %154 = load { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)** %subcache33_cache, align 8, !dbg !1279, !dereferenceable !829, !invariant.group !1276
  %155 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)* %154, i64 %iv, !dbg !1279
  store { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache33, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)* %155, align 16, !dbg !1279, !invariant.group !1281
  %156 = bitcast { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } addrspace(10)* %154 to {} addrspace(10)*, !dbg !1279
  %157 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache33, 0, !dbg !1279
  %158 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache33, 1, !dbg !1279
  %159 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache33, 2, !dbg !1279
  %160 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache33, 3, !dbg !1279
  %161 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache33, 4, !dbg !1279
  %162 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 } %subcache33, 5, !dbg !1279
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %156, {} addrspace(10)* %162, {} addrspace(10)* %161, {} addrspace(10)* %160, {} addrspace(10)* %159, {} addrspace(10)* %158, {} addrspace(10)* %157), !dbg !1279
  %163 = extractvalue { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)* } %_augmented32, 1, !dbg !1279
  %164 = load {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)** %_cache, align 8, !dbg !1279, !dereferenceable !829, !invariant.group !1277
  %165 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %164, i64 %iv, !dbg !1279
  store {} addrspace(10)* %163, {} addrspace(10)* addrspace(10)* %165, align 8, !dbg !1279, !invariant.group !1282
  %166 = bitcast {} addrspace(10)* addrspace(10)* %164 to {} addrspace(10)*, !dbg !1279
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %166, {} addrspace(10)* %163), !dbg !1279
  %"'ac34" = extractvalue { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i1, i1, i1, i1, i1, i1 }, {} addrspace(10)*, {} addrspace(10)* } %_augmented32, 2, !dbg !1283
  %167 = load {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)** %"'ac34_cache", align 8, !dbg !1283, !dereferenceable !829, !invariant.group !1278
  %168 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %167, i64 %iv, !dbg !1283
  store {} addrspace(10)* %"'ac34", {} addrspace(10)* addrspace(10)* %168, align 8, !dbg !1283, !invariant.group !1285
  %169 = bitcast {} addrspace(10)* addrspace(10)* %167 to {} addrspace(10)*, !dbg !1283
  call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %169, {} addrspace(10)* %"'ac34"), !dbg !1283
  %exitcond.not = icmp eq i64 %iv, %85, !dbg !1283
  br i1 %exitcond.not, label %common.ret.loopexit, label %L32, !dbg !1284, !llvm.loop !1286
}

julia: /home/wmoses/.julia/artifacts/ffd25b575618865cee0c288729a95629485632ee/include/llvm/IR/InstrTypes.h:1445: void llvm::CallBase::setCalledFunction(llvm::FunctionType*, llvm::Value*): Assertion `getType() == FTy->getReturnType()' failed.

@wsmoses
Copy link
Member

wsmoses commented Oct 4, 2022

This should now be fixed on main.

@wsmoses wsmoses closed this as completed Oct 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants