-
Notifications
You must be signed in to change notification settings - Fork 68
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
Attribute 'nocapture' applied to incompatible type #2162
Comments
can you upload the log before GH removes it? |
In any case can you check if #2163 resolves it? |
Here's the log: Got exception outside of a @test
LLVM error: broken gc calling conv fix
Attribute 'nocapture' applied to incompatible type!
{} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64)* @ijl_eqtable_put
; ModuleID = 'start'
source_filename = "start"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128-ni:10:11:12:13"
target triple = "x86_64-linux-gnu"
@jl_small_typeof = external local_unnamed_addr constant i8
@ejl_enz_runtime_error_if_active = external addrspace(10) global {}, !enzyme_inactive !0, !enzyme_ta_norecur !0
@enz_exception = private unnamed_addr constant [68 x i8] c"Enzyme: Not yet implemented augmented forward for jl_idtable_rehash\00", align 1
@ejl_enz_runtime_exc = external addrspace(10) global {}, !enzyme_inactive !0, !enzyme_ta_norecur !0
@ejl_jl_nothing = external addrspace(10) global {}, !enzyme_inactive !0, !enzyme_ta_norecur !0
@enz_exception.8 = private unnamed_addr constant [58 x i8] c"Enzyme: Not yet implemented reverse for jl_idtable_rehash\00", align 1
@enz_exception.15 = private unnamed_addr constant [104 x i8] c"Enzyme: The original primal code hits this error condition, thus differentiating it does not make sense\00", align 1
@enz_exception.16 = private unnamed_addr constant [104 x i8] c"Enzyme: The original primal code hits this error condition, thus differentiating it does not make sense\00", align 1
@enz_exception.17 = private unnamed_addr constant [104 x i8] c"Enzyme: The original primal code hits this error condition, thus differentiating it does not make sense\00", align 1
@enz_exception.18 = private unnamed_addr constant [104 x i8] c"Enzyme: The original primal code hits this error condition, thus differentiating it does not make sense\00", align 1
@enz_exception.19 = private unnamed_addr constant [104 x i8] c"Enzyme: The original primal code hits this error condition, thus differentiating it does not make sense\00", align 1
@enz_exception.20 = private unnamed_addr constant [104 x i8] c"Enzyme: The original primal code hits this error condition, thus differentiating it does not make sense\00", align 1
; Function Attrs: noinline noreturn
define private fastcc void @julia_throw_boundserror_100259({} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(24) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@float, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@float, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}" "enzymejl_parmtype"="139727828651344" "enzymejl_parmtype_ref"="2" %0, [1 x [2 x i64]] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(16) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer}" "enzymejl_parmtype"="139727701162688" "enzymejl_parmtype_ref"="1" %1) unnamed_addr #0 !dbg !8 {
top:
%2 = call {}*** @julia.get_pgcstack()
%current_task13 = getelementptr inbounds {}**, {}*** %2, i64 -14
%3 = bitcast {}*** %current_task13 to {}*
%ptls_field4 = getelementptr inbounds {}**, {}*** %2, i64 2
%4 = bitcast {}*** %ptls_field4 to i64***
%ptls_load56 = load i64**, i64*** %4, align 8, !tbaa !11
%5 = getelementptr inbounds i64*, i64** %ptls_load56, i64 2
%safepoint = load i64*, i64** %5, align 8, !tbaa !15
fence syncscope("singlethread") seq_cst
call void @julia.safepoint(i64* %safepoint) #20, !dbg !17
fence syncscope("singlethread") seq_cst
%6 = call noalias nonnull align 8 dereferenceable(16) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Integer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %3, i64 noundef 16, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727701162688 to {}*) to {} addrspace(10)*)) #21, !dbg !17
%7 = bitcast {} addrspace(10)* %6 to i8 addrspace(10)*, !dbg !17, !enzyme_inactive !0
%8 = bitcast [1 x [2 x i64]] addrspace(11)* %1 to i8 addrspace(11)*, !dbg !17, !enzyme_inactive !0
call void @llvm.memcpy.p10i8.p11i8.i64(i8 addrspace(10)* nocapture nofree noundef nonnull align 8 dereferenceable(16) %7, i8 addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(16) %8, i64 noundef 16, i1 noundef false), !dbg !17, !tbaa !18, !alias.scope !19, !noalias !23, !enzyme_truetype !31
%9 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)*, {} addrspace(10)*, {} addrspace(10)*, ...) @julia.call2({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)* noundef nonnull @ijl_invoke, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727681101648 to {}*) to {} addrspace(10)*), {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727713124240 to {}*) to {} addrspace(10)*), {} addrspace(10)* nofree nonnull %0, {} addrspace(10)* nofree nonnull %6) #22, !dbg !17
%10 = addrspacecast {} addrspace(10)* %9 to {} addrspace(12)*, !dbg !17
call void @ijl_throw({} addrspace(12)* %10) #23, !dbg !17
unreachable, !dbg !17
}
; Function Attrs: nofree memory(none)
declare {}*** @julia.get_pgcstack() local_unnamed_addr #1
; Function Attrs: nofree memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @julia.safepoint(i64*) local_unnamed_addr #2
; Function Attrs: nofree
declare nonnull {} addrspace(10)* @ijl_invoke({} addrspace(10)*, {} addrspace(10)** nocapture readonly, i32, {} addrspace(10)*) #3
; Function Attrs: nofree
declare nonnull {} addrspace(10)* @julia.call2({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)*, {} addrspace(10)*, {} addrspace(10)*, ...) local_unnamed_addr #3
; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(1) memory(inaccessiblemem: readwrite)
declare noalias nonnull {} addrspace(10)* @julia.gc_alloc_obj({}*, i64, {} addrspace(10)*) local_unnamed_addr #4
; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p10i8.p11i8.i64(i8 addrspace(10)* noalias nocapture writeonly, i8 addrspace(11)* noalias nocapture readonly, i64, i1 immarg) #5
; Function Attrs: noreturn
declare void @ijl_throw({} addrspace(12)*) local_unnamed_addr #6
; Function Attrs: noreturn
define private fastcc void @julia_throw_dmrsa_100265([1 x i64] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(8) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}" "enzymejl_parmtype"="139727657705104" "enzymejl_parmtype_ref"="1" %0, i64 signext "enzyme_inactive" "enzyme_type"="{[-1]:Integer}" "enzymejl_parmtype"="139727713683712" "enzymejl_parmtype_ref"="0" %1) unnamed_addr #7 !dbg !32 {
top:
%2 = call {}*** @julia.get_pgcstack()
%current_task14 = getelementptr inbounds {}**, {}*** %2, i64 -14
%3 = bitcast {}*** %current_task14 to {}*
%ptls_field5 = getelementptr inbounds {}**, {}*** %2, i64 2
%4 = bitcast {}*** %ptls_field5 to i64***
%ptls_load67 = load i64**, i64*** %4, align 8, !tbaa !11
%5 = getelementptr inbounds i64*, i64** %ptls_load67, i64 2
%safepoint = load i64*, i64** %5, align 8, !tbaa !15
fence syncscope("singlethread") seq_cst
call void @julia.safepoint(i64* %safepoint) #20, !dbg !34
fence syncscope("singlethread") seq_cst
%6 = call noalias nonnull align 8 dereferenceable(8) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Integer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %3, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727657705104 to {}*) to {} addrspace(10)*)) #21, !dbg !34
%7 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(11)* %0, i64 0, i64 0, !dbg !34
%8 = bitcast {} addrspace(10)* %6 to i64 addrspace(10)*, !dbg !34, !enzyme_inactive !0
%9 = load i64, i64 addrspace(11)* %7, align 8, !dbg !34, !tbaa !15, !alias.scope !35, !noalias !36, !enzyme_type !37, !enzyme_inactive !0, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
store i64 %9, i64 addrspace(10)* %8, align 8, !dbg !34, !tbaa !39, !alias.scope !43, !noalias !44
%10 = call noalias nonnull align 8 dereferenceable(8) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Integer}" {} addrspace(10)* @ijl_box_int64(i64 signext %1) #24, !dbg !34
%11 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)*, {} addrspace(10)*, {} addrspace(10)*, ...) @julia.call2({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)* noundef nonnull @ijl_invoke, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727798897872 to {}*) to {} addrspace(10)*), {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727661032624 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 139727773002672 to {}*) to {} addrspace(10)*), {} addrspace(10)* nofree nonnull %6, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 139727773002608 to {}*) to {} addrspace(10)*), {} addrspace(10)* nonnull %10) #22, !dbg !34
%12 = call noalias nonnull align 8 dereferenceable(8) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Pointer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %3, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727659986192 to {}*) to {} addrspace(10)*)) #21, !dbg !34
%13 = bitcast {} addrspace(10)* %12 to [1 x {} addrspace(10)*] addrspace(10)*, !dbg !34, !enzyme_inactive !0
%14 = getelementptr [1 x {} addrspace(10)*], [1 x {} addrspace(10)*] addrspace(10)* %13, i64 0, i64 0, !dbg !34
store {} addrspace(10)* %11, {} addrspace(10)* addrspace(10)* %14, align 8, !dbg !34, !tbaa !39, !alias.scope !43, !noalias !44
%15 = addrspacecast {} addrspace(10)* %12 to {} addrspace(12)*, !dbg !34, !enzyme_inactive !0
call void @ijl_throw({} addrspace(12)* %15) #23, !dbg !34
unreachable, !dbg !34
}
; Function Attrs: mustprogress nofree nounwind willreturn memory(inaccessiblemem: readwrite)
declare noalias nonnull align 8 dereferenceable(8) {} addrspace(10)* @ijl_box_int64(i64 signext) local_unnamed_addr #8
; Function Attrs: nofree norecurse nounwind memory(inaccessiblemem: readwrite)
declare void @julia.write_barrier({} addrspace(10)* readonly, ...) local_unnamed_addr #9
; Function Attrs: noreturn
declare void @ijl_bounds_error_int({} addrspace(12)*, i64) local_unnamed_addr #10
; Function Attrs: nofree memory(inaccessiblemem: readwrite)
declare token @llvm.julia.gc_preserve_begin(...) #11
; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memmove.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1 immarg) #5
; Function Attrs: nofree memory(inaccessiblemem: readwrite)
declare void @llvm.julia.gc_preserve_end(token) #11
; Function Attrs: mustprogress nofree nounwind willreturn memory(inaccessiblemem: readwrite)
declare noalias nonnull align 16 dereferenceable(16) {} addrspace(10)* @jl_alloc_genericmemory({} addrspace(10)*, i64) local_unnamed_addr #12
; Function Attrs: mustprogress nofree nounwind willreturn
declare noalias nonnull {} addrspace(10)* @ijl_idtable_rehash({} addrspace(10)*, i64) local_unnamed_addr #13
; Function Attrs: memory(argmem: readwrite)
declare {} addrspace(10)* @ijl_eqtable_put({} addrspace(10)*, {} addrspace(10)* "enzyme_inactive", {} addrspace(10)*, i64 nocapture writeonly "enzyme_inactive") local_unnamed_addr #14
; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #15
; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #15
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #16
declare {} addrspace(10)* @jl_typeof({} addrspace(10)*, ...)
declare {} addrspace(10)* @ijl_apply_generic({} addrspace(10)*, {} addrspace(10)**, i32)
declare {} addrspace(10)* @julia.call({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)*, {} addrspace(10)*, ...)
; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #17
; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p10i8.i64(i8 addrspace(10)* nocapture writeonly, i8, i64, i1 immarg) #17
declare void @jl_throw({} addrspace(12)*)
define void @augmented_julia_CachedWalk_100192_inner_7wrap({ { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* noalias nocapture nofree nonnull sret({ { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }) align 8 dereferenceable(176) %0, [17 x {} addrspace(10)*]* noalias nocapture nofree writeonly %1, { { [1 x {} addrspace(10)*] }, {} addrspace(10)* } %2, { { [1 x {} addrspace(10)*] }, {} addrspace(10)* } %3, [1 x { { [1 x {} addrspace(10)*] }, {} addrspace(10)* }] %4, [1 x { { [1 x {} addrspace(10)*] }, {} addrspace(10)* }] %5, {} addrspace(10)* %6, i64 %7) #18 !dbg !45 {
entry:
%8 = call {}*** @julia.get_pgcstack()
%9 = alloca [1 x [2 x i64]], align 8
%10 = alloca [1 x [2 x i64]], align 8
%11 = alloca [1 x i64], align 8
%12 = alloca i32, align 8
%13 = bitcast [1 x [2 x i64]]* %9 to i8*
call void @llvm.lifetime.start.p0i8(i64 noundef 16, i8* noundef nonnull dereferenceable(16) %13)
%14 = bitcast [1 x [2 x i64]]* %10 to i8*
call void @llvm.lifetime.start.p0i8(i64 noundef 16, i8* noundef nonnull dereferenceable(16) %14)
%15 = bitcast [1 x i64]* %11 to i8*
call void @llvm.lifetime.start.p0i8(i64 noundef 8, i8* noundef nonnull dereferenceable(8) %15)
%16 = bitcast i32* %12 to i8*
call void @llvm.lifetime.start.p0i8(i64 noundef 4, i8* noundef nonnull align 8 %16)
%.fca.0.0.0.extract.i = extractvalue { { [1 x {} addrspace(10)*] }, {} addrspace(10)* } %2, 0, 0, 0, !dbg !47
%".fca.0.0.0.extract'ipev.i" = extractvalue { { [1 x {} addrspace(10)*] }, {} addrspace(10)* } %3, 0, 0, 0, !dbg !47
%.fca.1.extract.i = extractvalue { { [1 x {} addrspace(10)*] }, {} addrspace(10)* } %2, 1, !dbg !47
%".fca.1.extract'ipev.i" = extractvalue { { [1 x {} addrspace(10)*] }, {} addrspace(10)* } %3, 1
%pgcstack.i.i = call {}*** @julia.get_pgcstack() #25
%current_task1.i121.i = getelementptr inbounds {}**, {}*** %pgcstack.i.i, i64 -14
%ptls_field.i122.i = getelementptr inbounds {}**, {}*** %pgcstack.i.i, i64 2
%17 = bitcast {}*** %ptls_field.i122.i to i64***
%ptls_load.i123124.i = load i64**, i64*** %17, align 8, !tbaa !11, !alias.scope !50, !noalias !53
%18 = getelementptr inbounds i64*, i64** %ptls_load.i123124.i, i64 2
%safepoint.i.i = load i64*, i64** %18, align 8, !tbaa !15, !alias.scope !55, !noalias !58
fence syncscope("singlethread") seq_cst
call void @julia.safepoint(i64* %safepoint.i.i) #25, !dbg !60
fence syncscope("singlethread") seq_cst
%"'ipc.i" = bitcast {} addrspace(10)* %".fca.1.extract'ipev.i" to {} addrspace(10)* addrspace(10)*, !dbg !62
%19 = bitcast {} addrspace(10)* %.fca.1.extract.i to {} addrspace(10)* addrspace(10)*, !dbg !62
%"'ipc14.i" = addrspacecast {} addrspace(10)* addrspace(10)* %"'ipc.i" to {} addrspace(10)* addrspace(11)*, !dbg !62
%20 = addrspacecast {} addrspace(10)* addrspace(10)* %19 to {} addrspace(10)* addrspace(11)*, !dbg !62
%"'ipl.i" = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipc14.i" unordered, align 8, !dbg !62, !tbaa !74, !alias.scope !76, !noalias !79, !nonnull !0, !dereferenceable !81
%21 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %20 unordered, align 8, !dbg !62, !tbaa !74, !alias.scope !82, !noalias !83, !nonnull !0, !dereferenceable !81, !align !84, !enzyme_type !85, !enzymejl_source_type_Memory\7BAny\7D !0, !enzymejl_byref_MUT_REF !0
%22 = call {} addrspace(10)* inttoptr (i64 139727991100400 to {} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*)*)({} addrspace(10)* nonnull %"'ipl.i", {} addrspace(10)* %6, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 139727864149104 to {}*) to {} addrspace(10)*)), !dbg !88
%23 = call {} addrspace(10)* ({} addrspace(10)*, ...) @jl_typeof({} addrspace(10)* %22), !dbg !88
%24 = call {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)*, {} addrspace(10)*, ...) @julia.call({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* noundef nonnull @ijl_apply_generic, {} addrspace(10)* noundef @ejl_enz_runtime_error_if_active, {} addrspace(10)* %23), !dbg !88
%25 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* inttoptr (i64 139727991100400 to {} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*)*)({} addrspace(10)* noundef nonnull readonly %21, {} addrspace(10)* noundef nonnull readonly %6, {} addrspace(10)* noundef readonly addrspacecast ({}* inttoptr (i64 139727864149104 to {}*) to {} addrspace(10)*)) #25, !dbg !88
%26 = addrspacecast {} addrspace(10)* %25 to {} addrspace(11)*, !dbg !89
%.not.i = icmp eq {} addrspace(11)* %26, addrspacecast ({}* inttoptr (i64 139727864149104 to {}*) to {} addrspace(11)*), !dbg !89
br i1 %.not.i, label %L27.i.i, label %L25.i.i, !dbg !90
L25.i.i: ; preds = %entry
br label %augmented_julia_CachedWalk_100192_inner.7.exit, !dbg !91
L27.i.i: ; preds = %entry
%27 = bitcast {} addrspace(10)* %6 to i8 addrspace(10)*, !dbg !92
%28 = addrspacecast i8 addrspace(10)* %27 to i8 addrspace(11)*, !dbg !92
%29 = getelementptr inbounds i8, i8 addrspace(11)* %28, i64 16, !dbg !92
%30 = bitcast i8 addrspace(11)* %29 to i64 addrspace(11)*, !dbg !92
%31 = load i64, i64 addrspace(11)* %30, align 8, !dbg !92, !tbaa !109, !alias.scope !112, !noalias !115, !enzyme_type !37, !enzyme_inactive !0, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
%value_phi3.i.i = call i64 @llvm.smax.i64(i64 %31, i64 noundef 0) #25, !dbg !117
%32 = add i64 %7, 1, !dbg !124
%33 = add i64 %value_phi3.i.i, %7, !dbg !124
%.not125.i = icmp sgt i64 %32, %33, !dbg !131
%spec.select6.i = select i1 %.not125.i, i64 %7, i64 %33, !dbg !147
%.sroa.074.0..sroa_idx.i = getelementptr inbounds [1 x [2 x i64]], [1 x [2 x i64]]* %10, i64 0, i64 0, i64 0, !dbg !148
store i64 %32, i64* %.sroa.074.0..sroa_idx.i, align 8, !dbg !148, !tbaa !152, !alias.scope !154, !noalias !155
%.sroa.577.0..sroa_idx78.i = getelementptr inbounds [1 x [2 x i64]], [1 x [2 x i64]]* %10, i64 0, i64 0, i64 1, !dbg !148
store i64 %spec.select6.i, i64* %.sroa.577.0..sroa_idx78.i, align 8, !dbg !148, !tbaa !152, !alias.scope !154, !noalias !155
%34 = bitcast {} addrspace(10)* %.fca.0.0.0.extract.i to i8 addrspace(10)*, !dbg !158
%35 = addrspacecast i8 addrspace(10)* %34 to i8 addrspace(11)*, !dbg !158
%36 = getelementptr inbounds i8, i8 addrspace(11)* %35, i64 16, !dbg !158
%37 = bitcast i8 addrspace(11)* %36 to i64 addrspace(11)*, !dbg !158
%38 = load i64, i64 addrspace(11)* %37, align 8, !dbg !158, !tbaa !109, !alias.scope !166, !noalias !169, !enzyme_type !37, !enzyme_inactive !0, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
%39 = icmp slt i64 %spec.select6.i, %32, !dbg !171
%40 = icmp ugt i64 %38, %7, !dbg !179
%41 = add i64 %spec.select6.i, -1, !dbg !181
%42 = icmp ult i64 %41, %38, !dbg !179
%43 = and i1 %40, %42, !dbg !183
%44 = or i1 %39, %43, !dbg !186
br i1 %44, label %L81.i.i, label %L82.i.i, !dbg !188
L81.i.i: ; preds = %L27.i.i
%45 = sub i64 %spec.select6.i, %32, !dbg !189
%46 = add i64 %45, 1, !dbg !193
%.not129.i = icmp eq i64 %46, 0, !dbg !194
br i1 %.not129.i, label %L91.i.i, label %L93.i.i, !dbg !194
L82.i.i: ; preds = %L27.i.i
%47 = addrspacecast [1 x [2 x i64]]* %10 to [1 x [2 x i64]] addrspace(11)*, !dbg !188
call fastcc void @julia_throw_boundserror_100259({} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(24) %.fca.0.0.0.extract.i, [1 x [2 x i64]] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(16) %47) #26, !dbg !188
unreachable, !dbg !188
L91.i.i: ; preds = %L81.i.i
%48 = load atomic {} addrspace(10)*, {} addrspace(10)** inttoptr (i64 139727828652464 to {} addrspace(10)**) unordered, align 16, !dbg !205, !tbaa !15, !alias.scope !206, !noalias !209, !nonnull !0, !enzyme_type !211, !enzymejl_source_type_Memory\7BFloat32\7D !0, !enzymejl_byref_BITS_REF !0
br label %L95.i.i
L93.i.i: ; preds = %L81.i.i
%49 = call {} addrspace(10)* @jl_alloc_genericmemory({} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727828652432 to {}*) to {} addrspace(10)*), i64 %46) #27, !dbg !215
%50 = shl i64 %46, 2, !dbg !215
%51 = bitcast {} addrspace(10)* %49 to <{ i64, i8* }> addrspace(10)*, !dbg !215
%52 = getelementptr inbounds <{ i64, i8* }>, <{ i64, i8* }> addrspace(10)* %51, i64 0, i32 1, !dbg !215
%53 = load i8*, i8* addrspace(10)* %52, align 8, !dbg !215
call void @llvm.memset.p0i8.i64(i8* align 4 %53, i8 noundef 0, i64 %50, i1 noundef false), !dbg !215
%54 = call noalias "enzyme_type"="{[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Pointer, [-1,8,-1]:Float@float}" {} addrspace(10)* @jl_alloc_genericmemory({} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727828652432 to {}*) to {} addrspace(10)*), i64 %46) #28, !dbg !215
br label %L95.i.i, !dbg !215
L95.i.i: ; preds = %L93.i.i, %L91.i.i
%.sroa.41.0 = phi {} addrspace(10)* [ %48, %L91.i.i ], [ @ejl_jl_nothing, %L93.i.i ]
%.sroa.11.0 = phi {} addrspace(10)* [ @ejl_jl_nothing, %L91.i.i ], [ %54, %L93.i.i ]
%.sroa.8.0 = phi {} addrspace(10)* [ @ejl_jl_nothing, %L91.i.i ], [ %49, %L93.i.i ]
%55 = phi {} addrspace(10)* [ %48, %L91.i.i ], [ %49, %L93.i.i ]
%56 = phi {} addrspace(10)* [ %48, %L91.i.i ], [ %54, %L93.i.i ]
%"'ipc23.i" = bitcast {} addrspace(10)* %55 to { i64, {} addrspace(10)** } addrspace(10)*, !dbg !216
%57 = bitcast {} addrspace(10)* %56 to { i64, {} addrspace(10)** } addrspace(10)*, !dbg !216
%"'ipc24.i" = addrspacecast { i64, {} addrspace(10)** } addrspace(10)* %"'ipc23.i" to { i64, {} addrspace(10)** } addrspace(11)*, !dbg !216
%58 = addrspacecast { i64, {} addrspace(10)** } addrspace(10)* %57 to { i64, {} addrspace(10)** } addrspace(11)*, !dbg !216
%"'ipg25.i" = getelementptr inbounds { i64, {} addrspace(10)** }, { i64, {} addrspace(10)** } addrspace(11)* %"'ipc24.i", i64 0, i32 1, !dbg !216
%59 = getelementptr inbounds { i64, {} addrspace(10)** }, { i64, {} addrspace(10)** } addrspace(11)* %58, i64 0, i32 1, !dbg !216
%"'ipc26.i" = bitcast {} addrspace(10)** addrspace(11)* %"'ipg25.i" to i8* addrspace(11)*, !dbg !216
%60 = bitcast {} addrspace(10)** addrspace(11)* %59 to i8* addrspace(11)*, !dbg !216
%"'ipl27.i" = load i8*, i8* addrspace(11)* %"'ipc26.i", align 8, !dbg !216, !tbaa !15, !alias.scope !219, !noalias !222, !nonnull !0
%61 = load i8*, i8* addrspace(11)* %60, align 8, !dbg !216, !tbaa !15, !alias.scope !224, !noalias !225, !nonnull !0, !enzyme_type !226, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat32\7D !0
%62 = bitcast {}*** %current_task1.i121.i to {}*, !dbg !227
%"'mi.i" = call noalias nonnull align 8 dereferenceable(24) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@float, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@float, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %62, i64 noundef 24, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727828651344 to {}*) to {} addrspace(10)*)) #29, !dbg !227
%63 = bitcast {} addrspace(10)* %"'mi.i" to i8 addrspace(10)*, !dbg !227
call void @llvm.memset.p10i8.i64(i8 addrspace(10)* nocapture nofree noundef nonnull align 8 dereferenceable(24) dereferenceable_or_null(24) %63, i8 noundef 0, i64 noundef 24, i1 noundef false), !dbg !227
%64 = call noalias nonnull align 8 dereferenceable(24) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@float, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@float, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %62, i64 noundef 24, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727828651344 to {}*) to {} addrspace(10)*)) #29, !dbg !227
%"'ipc21.i" = bitcast {} addrspace(10)* %"'mi.i" to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !227
%65 = bitcast {} addrspace(10)* %64 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !227
%"'ipc22.i" = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %"'ipc21.i" to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !227
%66 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %65 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !227
%".repack'ipg.i" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc22.i", i64 0, i32 0, !dbg !227
%.repack.i = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %66, i64 0, i32 0, !dbg !227
store i8* %"'ipl27.i", i8* addrspace(11)* %".repack'ipg.i", align 8, !dbg !227, !tbaa !228, !alias.scope !230, !noalias !233
store i8* %61, i8* addrspace(11)* %.repack.i, align 8, !dbg !227, !tbaa !228, !alias.scope !237, !noalias !238
%".repack127'ipg.i" = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %"'ipc22.i", i64 0, i32 1, !dbg !227
%.repack127.i = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %66, i64 0, i32 1, !dbg !227
store {} addrspace(10)* %55, {} addrspace(10)* addrspace(11)* %".repack127'ipg.i", align 8, !dbg !227, !tbaa !228, !alias.scope !230, !noalias !233
store {} addrspace(10)* %56, {} addrspace(10)* addrspace(11)* %.repack127.i, align 8, !dbg !227, !tbaa !228, !alias.scope !237, !noalias !238
%67 = bitcast {} addrspace(10)* %64 to i8 addrspace(10)*, !dbg !227
%"'ipc19.i" = addrspacecast i8 addrspace(10)* %63 to i8 addrspace(11)*, !dbg !227
%68 = addrspacecast i8 addrspace(10)* %67 to i8 addrspace(11)*, !dbg !227
%"'ipg.i" = getelementptr inbounds i8, i8 addrspace(11)* %"'ipc19.i", i64 16, !dbg !227
%69 = getelementptr inbounds i8, i8 addrspace(11)* %68, i64 16, !dbg !227
%"'ipc20.i" = bitcast i8 addrspace(11)* %"'ipg.i" to i64 addrspace(11)*, !dbg !227
%70 = bitcast i8 addrspace(11)* %69 to i64 addrspace(11)*, !dbg !227
store i64 %46, i64 addrspace(11)* %"'ipc20.i", align 8, !dbg !227, !tbaa !109, !alias.scope !230, !noalias !233
store i64 %46, i64 addrspace(11)* %70, align 8, !dbg !227, !tbaa !109, !alias.scope !237, !noalias !238
%or.cond.i = icmp ult i64 %45, 9223372036854775807, !dbg !239
br i1 %or.cond.i, label %L136.i.i, label %L206.i.i, !dbg !239
L136.i.i: ; preds = %L95.i.i
%spec.select.i = select i1 %39, i64 %7, i64 %spec.select6.i, !dbg !240
%.sroa.012.0..sroa_idx.i = getelementptr inbounds [1 x [2 x i64]], [1 x [2 x i64]]* %9, i64 0, i64 0, i64 0, !dbg !248
store i64 %32, i64* %.sroa.012.0..sroa_idx.i, align 8, !dbg !248, !tbaa !152, !alias.scope !154, !noalias !155
%.sroa.5.0..sroa_idx15.i = getelementptr inbounds [1 x [2 x i64]], [1 x [2 x i64]]* %9, i64 0, i64 0, i64 1, !dbg !248
store i64 %spec.select.i, i64* %.sroa.5.0..sroa_idx15.i, align 8, !dbg !248, !tbaa !152, !alias.scope !154, !noalias !155
%71 = load i64, i64 addrspace(11)* %37, align 8, !dbg !249, !tbaa !109, !alias.scope !166, !noalias !169, !enzyme_type !37, !enzyme_inactive !0, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
%72 = icmp slt i64 %spec.select.i, %32, !dbg !255
%73 = icmp ugt i64 %71, %7, !dbg !259
%74 = add i64 %spec.select.i, -1, !dbg !261
%75 = icmp ult i64 %74, %71, !dbg !259
%76 = and i1 %73, %75, !dbg !262
%77 = or i1 %72, %76, !dbg !263
br i1 %77, label %L169.i.i, label %L170.i.i, !dbg !264
L169.i.i: ; preds = %L136.i.i
%78 = bitcast {} addrspace(10)* %56 to i64 addrspace(10)*, !dbg !265
%79 = addrspacecast i64 addrspace(10)* %78 to i64 addrspace(11)*, !dbg !265
%80 = load i64, i64 addrspace(11)* %79, align 8, !dbg !265, !tbaa !267, !range !269, !alias.scope !270, !noalias !271, !enzyme_type !37, !enzyme_inactive !0, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
%.not145.i = icmp eq i64 %80, 0, !dbg !265
br i1 %.not145.i, label %oob.i.i, label %idxend.i.i, !dbg !265
L170.i.i: ; preds = %L136.i.i
%81 = addrspacecast [1 x [2 x i64]]* %9 to [1 x [2 x i64]] addrspace(11)*, !dbg !264
call fastcc void @julia_throw_boundserror_100259({} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(24) %.fca.0.0.0.extract.i, [1 x [2 x i64]] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(16) %81) #26, !dbg !264
unreachable, !dbg !264
L188.i.i: ; preds = %idxend29.i.i
%82 = load {}*, {}** bitcast (i8* getelementptr (i8, i8* @jl_small_typeof, i64 320) to {}**), align 8, !dbg !272, !tbaa !15, !alias.scope !35, !noalias !36, !nonnull !0, !dereferenceable !290, !align !81
%83 = addrspacecast {}* %82 to {} addrspace(10)*, !dbg !272
%84 = call noalias nonnull align 8 dereferenceable(8) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Integer}" {} addrspace(10)* @ijl_box_int64(i64 signext %166) #28, !dbg !272
%85 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)*, {} addrspace(10)*, {} addrspace(10)*, ...) @julia.call2({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)* noundef nonnull @ijl_invoke, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727699604640 to {}*) to {} addrspace(10)*), {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727694136992 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 139727863435632 to {}*) to {} addrspace(10)*), {} addrspace(10)* %83, {} addrspace(10)* nonnull %84) #30, !dbg !272
%86 = getelementptr inbounds {}**, {}*** %8, i64 -14, !dbg !272
%87 = bitcast {}*** %86 to {}*, !dbg !272
%88 = call dereferenceable(8) {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %87, i64 noundef 8, {} addrspace(10)* noundef @ejl_enz_runtime_exc), !dbg !272
%89 = bitcast {} addrspace(10)* %88 to i8* addrspace(10)*, !dbg !272
store i8* getelementptr inbounds ([104 x i8], [104 x i8]* @enz_exception.17, i32 0, i32 0), i8* addrspace(10)* %89, align 8, !dbg !272, !noalias !291
%90 = addrspacecast {} addrspace(10)* %88 to {} addrspace(12)*, !dbg !272
call void @jl_throw({} addrspace(12)* %90) #31, !dbg !272
unreachable, !dbg !272
L190.i.i: ; preds = %idxend29.i.i
call void @llvm.memmove.p0i8.p0i8.i64(i8* nonnull align 1 %61, i8* align 1 %149, i64 %166, i1 noundef false) #25, !dbg !292, !noalias !293
call void @llvm.julia.gc_preserve_end(token %165) #25, !dbg !294
call void @llvm.julia.gc_preserve_end(token %164) #25, !dbg !295
%.pre.i = load i64, i64 addrspace(11)* %30, align 8, !dbg !296, !tbaa !109, !alias.scope !112, !noalias !115, !enzyme_type !37, !enzyme_inactive !0, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
%.pre110.i = load i64, i64 addrspace(11)* %70, align 8, !dbg !298, !tbaa !109, !alias.scope !237, !noalias !303, !enzyme_type !37, !enzyme_inactive !0, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
br label %L206.i.i, !dbg !304
L206.i.i: ; preds = %L190.i.i, %L95.i.i
%.sroa.54.0 = phi {} addrspace(10)* [ %141, %L190.i.i ], [ @ejl_jl_nothing, %L95.i.i ]
%.sroa.34.0 = phi i8* [ %"'ipl41.i", %L190.i.i ], [ undef, %L95.i.i ]
%91 = phi i64 [ %.pre110.i, %L190.i.i ], [ %46, %L95.i.i ], !dbg !298
%92 = phi i64 [ %.pre.i, %L190.i.i ], [ %31, %L95.i.i ], !dbg !296, !enzyme_inactive !0
%93 = getelementptr inbounds [1 x i64], [1 x i64]* %11, i64 0, i64 0, !dbg !305
store i64 %92, i64* %93, align 8, !dbg !305, !tbaa !152, !alias.scope !154, !noalias !155
%94 = icmp eq i64 %92, %91, !dbg !310
br i1 %94, label %L237.i.i, label %L217.i.i, !dbg !315
L217.i.i: ; preds = %L206.i.i
%95 = addrspacecast [1 x i64]* %11 to [1 x i64] addrspace(11)*, !dbg !316
call fastcc void @julia_throw_dmrsa_100265([1 x i64] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(8) %95, i64 signext %91) #26, !dbg !316
unreachable, !dbg !316
L237.i.i: ; preds = %L206.i.i
%.not130.i = icmp eq i64 %91, %31, !dbg !317
br i1 %.not130.i, label %L289.i.i, label %L253.i.i, !dbg !317
L253.i.i: ; preds = %L237.i.i
%96 = call noalias nonnull align 8 dereferenceable(8) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Integer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %62, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727657705104 to {}*) to {} addrspace(10)*)) #29, !dbg !318
%97 = bitcast {} addrspace(10)* %96 to i64 addrspace(10)*, !dbg !318, !enzyme_inactive !0
store i64 %31, i64 addrspace(10)* %97, align 8, !dbg !318, !tbaa !39, !alias.scope !43, !noalias !321
%98 = call noalias nonnull align 8 dereferenceable(8) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Integer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %62, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727657705104 to {}*) to {} addrspace(10)*)) #29, !dbg !318
%99 = bitcast {} addrspace(10)* %98 to i64 addrspace(10)*, !dbg !318, !enzyme_inactive !0
store i64 %91, i64 addrspace(10)* %99, align 8, !dbg !318, !tbaa !39, !alias.scope !43, !noalias !321
%100 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)*, {} addrspace(10)*, {} addrspace(10)*, ...) @julia.call2({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)* noundef nonnull @ijl_invoke, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727798897872 to {}*) to {} addrspace(10)*), {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727661032624 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 139727375710752 to {}*) to {} addrspace(10)*), {} addrspace(10)* nofree nonnull %96, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 139727375710688 to {}*) to {} addrspace(10)*), {} addrspace(10)* nofree nonnull %98) #30, !dbg !318
%101 = call noalias nonnull align 8 dereferenceable(8) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Pointer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %62, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727659986192 to {}*) to {} addrspace(10)*)) #29, !dbg !322
%102 = bitcast {} addrspace(10)* %101 to [1 x {} addrspace(10)*] addrspace(10)*, !dbg !322, !enzyme_inactive !0
%103 = getelementptr [1 x {} addrspace(10)*], [1 x {} addrspace(10)*] addrspace(10)* %102, i64 0, i64 0, !dbg !322
store {} addrspace(10)* %100, {} addrspace(10)* addrspace(10)* %103, align 8, !dbg !322, !tbaa !39, !alias.scope !43, !noalias !321
%104 = addrspacecast {} addrspace(10)* %101 to {} addrspace(12)*, !dbg !322, !enzyme_inactive !0
call void @ijl_throw({} addrspace(12)* %104) #26, !dbg !322
unreachable, !dbg !322
L289.i.i: ; preds = %L237.i.i
%105 = bitcast {} addrspace(10)* %.fca.1.extract.i to i8 addrspace(10)*, !dbg !323
%106 = addrspacecast i8 addrspace(10)* %105 to i8 addrspace(11)*, !dbg !323
%107 = getelementptr inbounds i8, i8 addrspace(11)* %106, i64 16, !dbg !323
%108 = bitcast i8 addrspace(11)* %107 to i64 addrspace(11)*, !dbg !323
%109 = load i64, i64 addrspace(11)* %108, align 8, !dbg !323, !tbaa !74, !alias.scope !82, !noalias !83, !enzyme_type !37, !enzyme_inactive !0, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
%110 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %20 unordered, align 8, !dbg !323, !tbaa !74, !alias.scope !82, !noalias !83, !nonnull !0, !dereferenceable !81, !align !84, !enzyme_type !85, !enzymejl_source_type_Memory\7BAny\7D !0, !enzymejl_byref_MUT_REF !0
%111 = bitcast {} addrspace(10)* %110 to i64 addrspace(10)*, !dbg !327
%112 = addrspacecast i64 addrspace(10)* %111 to i64 addrspace(11)*, !dbg !327
%113 = load i64, i64 addrspace(11)* %112, align 8, !dbg !327, !tbaa !267, !alias.scope !329, !noalias !332, !enzyme_type !37, !enzyme_inactive !0, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
%114 = mul i64 %113, 3, !dbg !327
%115 = ashr i64 %114, 2, !dbg !334
%.not131.i = icmp sgt i64 %115, %109, !dbg !337
br i1 %.not131.i, label %L327.i.i, label %L309.i.i, !dbg !339
L309.i.i: ; preds = %L289.i.i
%116 = getelementptr inbounds {}**, {}*** %8, i64 -14, !dbg !340
%117 = bitcast {}*** %116 to {}*, !dbg !340
%118 = call dereferenceable(8) {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %117, i64 noundef 8, {} addrspace(10)* noundef @ejl_enz_runtime_exc), !dbg !340
%119 = bitcast {} addrspace(10)* %118 to i8* addrspace(10)*, !dbg !340
store i8* getelementptr inbounds ([68 x i8], [68 x i8]* @enz_exception, i32 0, i32 0), i8* addrspace(10)* %119, align 8, !dbg !340, !noalias !291
%120 = addrspacecast {} addrspace(10)* %118 to {} addrspace(12)*, !dbg !340
call void @jl_throw({} addrspace(12)* %120) #31, !dbg !340
unreachable, !dbg !340
L327.i.i: ; preds = %L289.i.i
%"'ipl31.i" = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipc14.i" unordered, align 8, !dbg !323, !tbaa !74, !alias.scope !76, !noalias !79, !nonnull !0, !dereferenceable !81
%"'ipc32.i" = bitcast {} addrspace(10)* %".fca.1.extract'ipev.i" to i8 addrspace(10)*, !dbg !323
%"'ipc33.i" = addrspacecast i8 addrspace(10)* %"'ipc32.i" to i8 addrspace(11)*, !dbg !323
store i32 0, i32* %12, align 8, !dbg !343, !tbaa !74, !alias.scope !43, !noalias !321
%"'ipl38.i" = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipc14.i" unordered, align 8, !dbg !347, !tbaa !74, !alias.scope !76, !noalias !79, !nonnull !0, !dereferenceable !81
%121 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %20 unordered, align 8, !dbg !347, !tbaa !74, !alias.scope !82, !noalias !83, !nonnull !0, !dereferenceable !81, !align !84, !enzyme_type !85, !enzymejl_source_type_Memory\7BAny\7D !0, !enzymejl_byref_MUT_REF !0
%122 = ptrtoint i32* %12 to i64, !dbg !349
%123 = call {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)*, {} addrspace(10)*, ...) @julia.call({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* noundef nonnull @ijl_apply_generic, {} addrspace(10)* noundef @ejl_enz_runtime_error_if_active, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 139727828651344 to {}*) to {} addrspace(10)*)), !dbg !354
%124 = call {} addrspace(10)* @ijl_eqtable_put({} addrspace(10)* noundef nonnull %"'ipl38.i", {} addrspace(10)* %6, {} addrspace(10)* nonnull %"'mi.i", i64 noundef 0) [ "jl_roots"({} addrspace(10)* null) ], !dbg !354
%125 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* @ijl_eqtable_put({} addrspace(10)* noundef nonnull %121, {} addrspace(10)* noundef nonnull %6, {} addrspace(10)* nonnull %64, i64 noundef %122) #25 [ "jl_roots"({} addrspace(10)* null) ], !dbg !354
store atomic {} addrspace(10)* %124, {} addrspace(10)* addrspace(11)* %"'ipc14.i" release, align 8, !dbg !355, !tbaa !74, !alias.scope !76, !noalias !357
store atomic {} addrspace(10)* %125, {} addrspace(10)* addrspace(11)* %20 release, align 8, !dbg !355, !tbaa !74, !alias.scope !82, !noalias !358
call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %".fca.1.extract'ipev.i", {} addrspace(10)* %124) #27, !dbg !355
call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* noundef %.fca.1.extract.i, {} addrspace(10)* nonnull %125) #32, !dbg !355
%"'ipg36.i" = getelementptr inbounds i8, i8 addrspace(11)* %"'ipc33.i", i64 8, !dbg !359
%126 = getelementptr inbounds i8, i8 addrspace(11)* %106, i64 8, !dbg !359
%"'ipc37.i" = bitcast i8 addrspace(11)* %"'ipg36.i" to i64 addrspace(11)*, !dbg !359
%127 = bitcast i8 addrspace(11)* %126 to i64 addrspace(11)*, !dbg !359
%128 = load i64, i64 addrspace(11)* %127, align 8, !dbg !359, !tbaa !74, !alias.scope !82, !noalias !83, !enzyme_type !37, !enzyme_inactive !0, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
%129 = load i32, i32* %12, align 8, !dbg !361, !tbaa !74, !alias.scope !364, !noalias !367
%130 = sext i32 %129 to i64, !dbg !369
%131 = add i64 %128, %130, !dbg !372
store i64 %131, i64 addrspace(11)* %"'ipc37.i", align 8, !dbg !374, !tbaa !74, !alias.scope !76, !noalias !357
store i64 %131, i64 addrspace(11)* %127, align 8, !dbg !374, !tbaa !74, !alias.scope !82, !noalias !358
br label %augmented_julia_CachedWalk_100192_inner.7.exit, !dbg !375
oob.i.i: ; preds = %L169.i.i
%132 = call noalias nonnull align 8 dereferenceable(16) "enzyme_type"="{[-1]:Pointer, [-1,-1]:Pointer, [-1,0,-1]:Float@float, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@float}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %62, i64 noundef 16, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727828653008 to {}*) to {} addrspace(10)*)) #29, !dbg !265
%133 = bitcast {} addrspace(10)* %132 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !265
%.repack137.i = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(10)* %133, i64 0, i32 0, !dbg !265
store i8* %61, i8* addrspace(10)* %.repack137.i, align 8, !dbg !265, !tbaa !39, !alias.scope !43, !noalias !321
%.repack138.i = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(10)* %133, i64 0, i32 1, !dbg !265
store {} addrspace(10)* %56, {} addrspace(10)* addrspace(10)* %.repack138.i, align 8, !dbg !265, !tbaa !39, !alias.scope !43, !noalias !321
%134 = addrspacecast {} addrspace(10)* %132 to {} addrspace(12)*, !dbg !265
call void @ijl_bounds_error_int({} addrspace(12)* %134, i64 noundef 1) #26, !dbg !265
unreachable, !dbg !265
idxend.i.i: ; preds = %L169.i.i
%135 = bitcast {} addrspace(10)* %.fca.0.0.0.extract.i to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !376
%136 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %135 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !376
%"'ipc39.i" = bitcast {} addrspace(10)* %".fca.0.0.0.extract'ipev.i" to i8* addrspace(10)*, !dbg !376
%137 = bitcast {} addrspace(10)* %.fca.0.0.0.extract.i to i8* addrspace(10)*, !dbg !376
%"'ipc40.i" = addrspacecast i8* addrspace(10)* %"'ipc39.i" to i8* addrspace(11)*, !dbg !376
%138 = addrspacecast i8* addrspace(10)* %137 to i8* addrspace(11)*, !dbg !376
%"'ipl41.i" = load i8*, i8* addrspace(11)* %"'ipc40.i", align 8, !dbg !376, !tbaa !228, !alias.scope !377, !noalias !378
%139 = load i8*, i8* addrspace(11)* %138, align 8, !dbg !376, !tbaa !228, !alias.scope !166, !noalias !169, !enzyme_type !226, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat32\7D !0
%140 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %136, i64 0, i32 1, !dbg !376
%141 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %140, align 8, !dbg !376, !tbaa !228, !alias.scope !166, !noalias !169, !dereferenceable_or_null !81, !align !84, !enzyme_type !211, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Memory\7BFloat32\7D !0
%142 = bitcast {} addrspace(10)* %141 to i64 addrspace(10)*, !dbg !265
%143 = addrspacecast i64 addrspace(10)* %142 to i64 addrspace(11)*, !dbg !265
%144 = load i64, i64 addrspace(11)* %143, align 8, !dbg !265, !tbaa !267, !range !269, !alias.scope !379, !noalias !382, !enzyme_type !37, !enzyme_inactive !0, !enzymejl_source_type_Int64 !0, !enzymejl_byref_BITS_VALUE !0
%145 = shl nuw nsw i64 %144, 1, !dbg !265
%146 = add i64 %144, %7, !dbg !265
%.not140.i = icmp ult i64 %146, %145, !dbg !265
%147 = bitcast i8* %139 to float*, !dbg !265
%148 = getelementptr inbounds float, float* %147, i64 %7, !dbg !265
%149 = bitcast float* %148 to i8*, !dbg !265
%150 = bitcast {} addrspace(10)* %141 to { i64, {} addrspace(10)** } addrspace(10)*, !dbg !265
%151 = addrspacecast { i64, {} addrspace(10)** } addrspace(10)* %150 to { i64, {} addrspace(10)** } addrspace(11)*, !dbg !265
%152 = getelementptr inbounds { i64, {} addrspace(10)** }, { i64, {} addrspace(10)** } addrspace(11)* %151, i64 0, i32 1, !dbg !265
%153 = bitcast {} addrspace(10)** addrspace(11)* %152 to i8* addrspace(11)*, !dbg !265
%154 = load i8*, i8* addrspace(11)* %153, align 8, !dbg !265, !tbaa !15, !alias.scope !384, !noalias !385, !nonnull !0, !enzyme_type !226, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat32\7D !0
%155 = ptrtoint i8* %154 to i64, !dbg !265
%156 = ptrtoint float* %148 to i64, !dbg !265
%157 = sub i64 %156, %155, !dbg !265
%158 = shl nuw nsw i64 %144, 2, !dbg !265
%159 = icmp ult i64 %157, %158, !dbg !265
%160 = and i1 %.not140.i, %159, !dbg !265
br i1 %160, label %idxend29.i.i, label %oob27.i.i, !dbg !265
oob27.i.i: ; preds = %idxend.i.i
%161 = call noalias nonnull align 8 dereferenceable(16) "enzyme_type"="{[-1]:Pointer, [-1,-1]:Pointer, [-1,0,-1]:Float@float, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@float}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %62, i64 noundef 16, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139727828653008 to {}*) to {} addrspace(10)*)) #29, !dbg !265
%162 = bitcast {} addrspace(10)* %161 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !265
%.repack141.i = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(10)* %162, i64 0, i32 0, !dbg !265
store i8* %139, i8* addrspace(10)* %.repack141.i, align 8, !dbg !265, !tbaa !39, !alias.scope !43, !noalias !321
%.repack142.i = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(10)* %162, i64 0, i32 1, !dbg !265
store {} addrspace(10)* %141, {} addrspace(10)* addrspace(10)* %.repack142.i, align 8, !dbg !265, !tbaa !39, !alias.scope !43, !noalias !321
%163 = addrspacecast {} addrspace(10)* %161 to {} addrspace(12)*, !dbg !265
call void @ijl_bounds_error_int({} addrspace(12)* %163, i64 %32) #26, !dbg !265
unreachable, !dbg !265
idxend29.i.i: ; preds = %idxend.i.i
%164 = call token (...) @llvm.julia.gc_preserve_begin({} addrspace(10)* nonnull %56, {} addrspace(10)* nonnull %55), !dbg !386
%165 = call token (...) @llvm.julia.gc_preserve_begin({} addrspace(10)* %141), !dbg !387
%166 = shl i64 %46, 2, !dbg !388
%.not144.i = icmp sgt i64 %166, -1, !dbg !389
br i1 %.not144.i, label %L190.i.i, label %L188.i.i, !dbg !272
augmented_julia_CachedWalk_100192_inner.7.exit: ; preds = %L25.i.i, %L327.i.i
%.sroa.5124.0 = phi {} addrspace(10)* [ %121, %L327.i.i ], [ @ejl_jl_nothing, %L25.i.i ]
%.sroa.54.1 = phi {} addrspace(10)* [ %.sroa.54.0, %L327.i.i ], [ @ejl_jl_nothing, %L25.i.i ]
%.sroa.47.0 = phi i64 [ %113, %L327.i.i ], [ undef, %L25.i.i ]
%.sroa.44.0 = phi {} addrspace(10)* [ %110, %L327.i.i ], [ @ejl_jl_nothing, %L25.i.i ]
%.sroa.41.1 = phi {} addrspace(10)* [ %.sroa.41.0, %L327.i.i ], [ @ejl_jl_nothing, %L25.i.i ]
%.sroa.39.0 = phi i64 [ %33, %L327.i.i ], [ undef, %L25.i.i ]
%.sroa.34.1 = phi i8* [ %.sroa.34.0, %L327.i.i ], [ undef, %L25.i.i ]
%.sroa.31.0 = phi {} addrspace(10)* [ %"'ipl38.i", %L327.i.i ], [ @ejl_jl_nothing, %L25.i.i ]
%.sroa.28.0 = phi {} addrspace(10)* [ %124, %L327.i.i ], [ @ejl_jl_nothing, %L25.i.i ]
%.sroa.22.0 = phi {} addrspace(10)* [ %"'ipl31.i", %L327.i.i ], [ @ejl_jl_nothing, %L25.i.i ]
%.sroa.20.0 = phi i8* [ %"'ipl27.i", %L327.i.i ], [ undef, %L25.i.i ]
%.sroa.17.0 = phi {} addrspace(10)* [ %64, %L327.i.i ], [ @ejl_jl_nothing, %L25.i.i ]
%.sroa.14.0 = phi {} addrspace(10)* [ %"'mi.i", %L327.i.i ], [ @ejl_jl_nothing, %L25.i.i ]
%.sroa.11.1 = phi {} addrspace(10)* [ %.sroa.11.0, %L327.i.i ], [ @ejl_jl_nothing, %L25.i.i ]
%.sroa.8.1 = phi {} addrspace(10)* [ %.sroa.8.0, %L327.i.i ], [ @ejl_jl_nothing, %L25.i.i ]
%167 = phi {} addrspace(10)* [ %"'mi.i", %L327.i.i ], [ %22, %L25.i.i ]
%168 = phi {} addrspace(10)* [ %64, %L327.i.i ], [ %25, %L25.i.i ]
%.unpack.fca.0.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } poison, {} addrspace(10)* %22, 0, !dbg !47
%.unpack.fca.1.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.0.insert, {} addrspace(10)* %25, 1, !dbg !47
%.unpack.fca.2.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.1.insert, {} addrspace(10)* %.sroa.8.1, 2, !dbg !47
%.unpack.fca.3.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.2.insert, {} addrspace(10)* %.sroa.11.1, 3, !dbg !47
%.unpack.fca.4.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.3.insert, {} addrspace(10)* %.sroa.14.0, 4, !dbg !47
%.unpack.fca.5.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.4.insert, {} addrspace(10)* %.sroa.17.0, 5, !dbg !47
%.unpack.fca.6.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.5.insert, i8* %.sroa.20.0, 6, !dbg !47
%.unpack.fca.7.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.6.insert, {} addrspace(10)* %.sroa.22.0, 7, !dbg !47
%.unpack.fca.8.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.7.insert, {} addrspace(10)* @ejl_jl_nothing, 8, !dbg !47
%.unpack.fca.9.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.8.insert, {} addrspace(10)* %.sroa.28.0, 9, !dbg !47
%.unpack.fca.10.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.9.insert, {} addrspace(10)* %.sroa.31.0, 10, !dbg !47
%.unpack.fca.11.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.10.insert, i8* %.sroa.34.1, 11, !dbg !47
%.unpack.fca.12.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.11.insert, {} addrspace(10)* %21, 12, !dbg !47
%.unpack.fca.13.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.12.insert, i64 %.sroa.39.0, 13, !dbg !47
%.unpack.fca.14.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.13.insert, {} addrspace(10)* %.sroa.41.1, 14, !dbg !47
%.unpack.fca.15.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.14.insert, {} addrspace(10)* %.sroa.44.0, 15, !dbg !47
%.unpack.fca.16.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.15.insert, i64 %.sroa.47.0, 16, !dbg !47
%.unpack.fca.17.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.16.insert, i1 true, 17, !dbg !47
%.unpack.fca.18.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.17.insert, {} addrspace(10)* %.sroa.5124.0, 18, !dbg !47
%.unpack.fca.19.insert = insertvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.18.insert, {} addrspace(10)* %.sroa.54.1, 19, !dbg !47
call void @llvm.lifetime.end.p0i8(i64 noundef 16, i8* noundef nonnull %13), !dbg !47
call void @llvm.lifetime.end.p0i8(i64 noundef 16, i8* noundef nonnull %14), !dbg !47
call void @llvm.lifetime.end.p0i8(i64 noundef 8, i8* noundef nonnull %15), !dbg !47
call void @llvm.lifetime.end.p0i8(i64 noundef 4, i8* noundef nonnull %16), !dbg !47
%169 = bitcast { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* %0 to { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* }*
store { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* } %.unpack.fca.19.insert, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i1, {} addrspace(10)*, {} addrspace(10)* }* %169, align 8, !noalias !291
%170 = getelementptr inbounds { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }, { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* %0, i64 0, i32 1
store {} addrspace(10)* %168, {} addrspace(10)** %170, align 8, !noalias !291
%171 = getelementptr inbounds { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }, { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* %0, i64 0, i32 2
store {} addrspace(10)* %167, {} addrspace(10)** %171, align 8, !noalias !291
%172 = getelementptr inbounds [17 x {} addrspace(10)*], [17 x {} addrspace(10)*]* %1, i64 0, i64 0
store {} addrspace(10)* %168, {} addrspace(10)** %172, align 8, !noalias !291
%173 = getelementptr inbounds [17 x {} addrspace(10)*], [17 x {} addrspace(10)*]* %1, i64 0, i64 1
store {} addrspace(10)* %167, {} addrspace(10)** %173, align 8, !noalias !291
%174 = getelementptr inbounds [17 x {} addrspace(10)*], [17 x {} addrspace(10)*]* %1, i64 0, i64 2
%175 = getelementptr inbounds { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }, { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* %0, i64 0, i32 0, i32 0
%176 = load {} addrspace(10)*, {} addrspace(10)** %175, align 8
store {} addrspace(10)* %176, {} addrspace(10)** %174, align 8, !noalias !291
%177 = getelementptr inbounds [17 x {} addrspace(10)*], [17 x {} addrspace(10)*]* %1, i64 0, i64 3
%178 = getelementptr inbounds { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }, { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* %0, i64 0, i32 0, i32 1
%179 = load {} addrspace(10)*, {} addrspace(10)** %178, align 8
store {} addrspace(10)* %179, {} addrspace(10)** %177, align 8, !noalias !291
%180 = getelementptr inbounds [17 x {} addrspace(10)*], [17 x {} addrspace(10)*]* %1, i64 0, i64 4
%181 = getelementptr inbounds { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }, { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* %0, i64 0, i32 0, i32 2
%182 = load {} addrspace(10)*, {} addrspace(10)** %181, align 8
store {} addrspace(10)* %182, {} addrspace(10)** %180, align 8, !noalias !291
%183 = getelementptr inbounds [17 x {} addrspace(10)*], [17 x {} addrspace(10)*]* %1, i64 0, i64 5
%184 = getelementptr inbounds { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }, { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* %0, i64 0, i32 0, i32 3
%185 = load {} addrspace(10)*, {} addrspace(10)** %184, align 8
store {} addrspace(10)* %185, {} addrspace(10)** %183, align 8, !noalias !291
%186 = getelementptr inbounds [17 x {} addrspace(10)*], [17 x {} addrspace(10)*]* %1, i64 0, i64 6
%187 = getelementptr inbounds { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }, { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* %0, i64 0, i32 0, i32 4
%188 = load {} addrspace(10)*, {} addrspace(10)** %187, align 8
store {} addrspace(10)* %188, {} addrspace(10)** %186, align 8, !noalias !291
%189 = getelementptr inbounds [17 x {} addrspace(10)*], [17 x {} addrspace(10)*]* %1, i64 0, i64 7
%190 = getelementptr inbounds { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }, { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* %0, i64 0, i32 0, i32 5
%191 = load {} addrspace(10)*, {} addrspace(10)** %190, align 8
store {} addrspace(10)* %191, {} addrspace(10)** %189, align 8, !noalias !291
%192 = getelementptr inbounds [17 x {} addrspace(10)*], [17 x {} addrspace(10)*]* %1, i64 0, i64 8
%193 = getelementptr inbounds { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }, { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* %0, i64 0, i32 0, i32 7
%194 = load {} addrspace(10)*, {} addrspace(10)** %193, align 8
store {} addrspace(10)* %194, {} addrspace(10)** %192, align 8, !noalias !291
%195 = getelementptr inbounds [17 x {} addrspace(10)*], [17 x {} addrspace(10)*]* %1, i64 0, i64 9
%196 = getelementptr inbounds { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }, { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* %0, i64 0, i32 0, i32 8
%197 = load {} addrspace(10)*, {} addrspace(10)** %196, align 8
store {} addrspace(10)* %197, {} addrspace(10)** %195, align 8, !noalias !291
%198 = getelementptr inbounds [17 x {} addrspace(10)*], [17 x {} addrspace(10)*]* %1, i64 0, i64 10
%199 = getelementptr inbounds { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }, { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* %0, i64 0, i32 0, i32 9
%200 = load {} addrspace(10)*, {} addrspace(10)** %199, align 8
store {} addrspace(10)* %200, {} addrspace(10)** %198, align 8, !noalias !291
%201 = getelementptr inbounds [17 x {} addrspace(10)*], [17 x {} addrspace(10)*]* %1, i64 0, i64 11
%202 = getelementptr inbounds { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }, { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* %0, i64 0, i32 0, i32 10
%203 = load {} addrspace(10)*, {} addrspace(10)** %202, align 8
store {} addrspace(10)* %203, {} addrspace(10)** %201, align 8, !noalias !291
%204 = getelementptr inbounds [17 x {} addrspace(10)*], [17 x {} addrspace(10)*]* %1, i64 0, i64 12
%205 = getelementptr inbounds { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }, { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* %0, i64 0, i32 0, i32 12
%206 = load {} addrspace(10)*, {} addrspace(10)** %205, align 8
store {} addrspace(10)* %206, {} addrspace(10)** %204, align 8, !noalias !291
%207 = getelementptr inbounds [17 x {} addrspace(10)*], [17 x {} addrspace(10)*]* %1, i64 0, i64 13
%208 = getelementptr inbounds { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }, { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* %0, i64 0, i32 0, i32 14
%209 = load {} addrspace(10)*, {} addrspace(10)** %208, align 8
store {} addrspace(10)* %209, {} addrspace(10)** %207, align 8, !noalias !291
%210 = getelementptr inbounds [17 x {} addrspace(10)*], [17 x {} addrspace(10)*]* %1, i64 0, i64 14
%211 = getelementptr inbounds { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }, { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* %0, i64 0, i32 0, i32 15
%212 = load {} addrspace(10)*, {} addrspace(10)** %211, align 8
store {} addrspace(10)* %212, {} addrspace(10)** %210, align 8, !noalias !291
%213 = getelementptr inbounds [17 x {} addrspace(10)*], [17 x {} addrspace(10)*]* %1, i64 0, i64 15
%214 = getelementptr inbounds { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }, { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* %0, i64 0, i32 0, i32 18
%215 = load {} addrspace(10)*, {} addrspace(10)** %214, align 8
store {} addrspace(10)* %215, {} addrspace(10)** %213, align 8, !noalias !291
%216 = getelementptr inbounds [17 x {} addrspace(10)*], [17 x {} addrspace(10)*]* %1, i64 0, i64 16
%217 = getelementptr inbounds { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }, { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* }* %0, i64 0, i32 0, i32 19
%218 = load {} addrspace(10)*, {} addrspace(10)** %217, align 8
store {} addrspace(10)* %218, {} addrspace(10)** %216, align 8, !noalias !291
ret void
}
; Function Attrs: alwaysinline
define void @diffejulia_CachedWalk_100192_inner_7wrap({ { [1 x {} addrspace(10)*] }, {} addrspace(10)* } %0, { { [1 x {} addrspace(10)*] }, {} addrspace(10)* } %1, [1 x { { [1 x {} addrspace(10)*] }, {} addrspace(10)* }] %2, [1 x { { [1 x {} addrspace(10)*] }, {} addrspace(10)* }] %3, {} addrspace(10)* nocapture nofree readnone %4, i64 %5, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* } %6) #19 !dbg !392 {
entry:
%7 = call {}*** @julia.get_pgcstack()
%8 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* } %6, 1
%9 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* } %6, 2
%10 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* } %6, 3
%11 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* } %6, 6
%12 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* } %6, 11
%13 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* } %6, 13
%14 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* } %6, 14
%15 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* } %6, 17
%16 = and i8 %15, 1
%.not = icmp eq i8 %16, 0
%17 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, {} addrspace(10)*, {} addrspace(10)*, i64, i8, {} addrspace(10)*, {} addrspace(10)* } %6, 19
%pgcstack.i.i = call {}*** @julia.get_pgcstack() #25
%18 = addrspacecast {} addrspace(10)* %8 to {} addrspace(11)*, !dbg !393
%.not.i = icmp eq {} addrspace(11)* %18, addrspacecast ({}* inttoptr (i64 139727864149104 to {}*) to {} addrspace(11)*), !dbg !393
br i1 %.not.i, label %L27.i.i, label %L25.i.i, !dbg !400
L25.i.i: ; preds = %entry
br label %julia_CachedWalk_100192_inner.exit.i, !dbg !401
L27.i.i: ; preds = %entry
%19 = add i64 %5, 1, !dbg !402
%.not125.i = icmp sgt i64 %19, %13, !dbg !409
%spec.select6.i = select i1 %.not125.i, i64 %5, i64 %13, !dbg !418
%20 = sub i64 %spec.select6.i, %19, !dbg !419
%.not129.i = icmp eq i64 %20, -1, !dbg !422
br i1 %.not129.i, label %L91.i.i, label %L93.i.i, !dbg !422
L91.i.i: ; preds = %L27.i.i
br label %L95.i.i
L93.i.i: ; preds = %L27.i.i
br label %L95.i.i, !dbg !428
L95.i.i: ; preds = %L93.i.i, %L91.i.i
%21 = phi {} addrspace(10)* [ %9, %L93.i.i ], [ %14, %L91.i.i ]
%22 = phi {} addrspace(10)* [ %10, %L93.i.i ], [ %14, %L91.i.i ]
%or.cond.i = icmp ult i64 %20, 9223372036854775807, !dbg !429
br i1 %or.cond.i, label %L136.i.i, label %L206.i.i, !dbg !429
L136.i.i: ; preds = %L95.i.i
%23 = call token (...) @llvm.julia.gc_preserve_begin({} addrspace(10)* %22, {} addrspace(10)* %21), !dbg !430
%24 = call token (...) @llvm.julia.gc_preserve_begin({} addrspace(10)* %17), !dbg !434
call void @llvm.julia.gc_preserve_end(token %24) #25, !dbg !435
call void @llvm.julia.gc_preserve_end(token %23) #25, !dbg !436
br label %L206.i.i, !dbg !437
L206.i.i: ; preds = %L136.i.i, %L95.i.i
br i1 %.not, label %L309.i.i, label %L327.i.i, !dbg !438
L309.i.i: ; preds = %L206.i.i
br label %L327.i.i, !dbg !440
L327.i.i: ; preds = %L309.i.i, %L206.i.i
br label %julia_CachedWalk_100192_inner.exit.i, !dbg !442
julia_CachedWalk_100192_inner.exit.i: ; preds = %L327.i.i, %L25.i.i
br i1 %.not.i, label %invertL327.i.i, label %invertL25.i.i
invertL25.i.i: ; preds = %julia_CachedWalk_100192_inner.exit.i
br label %diffejulia_CachedWalk_100192_inner.7.exit
invertL81.i.i: ; preds = %invertL93.i.i, %invertL91.i.i
br label %diffejulia_CachedWalk_100192_inner.7.exit
invertL91.i.i: ; preds = %invertL95.i.i
br label %invertL81.i.i
invertL93.i.i: ; preds = %invertL95.i.i
br label %invertL81.i.i
invertL95.i.i: ; preds = %invertL289.i.i, %__enzyme_memcpyadd_floatda1sa1.exit.i
%.not129_unwrap.i = icmp eq i64 %_unwrap97.i, -1
br i1 %.not129_unwrap.i, label %invertL91.i.i, label %invertL93.i.i
invertL190.i.i: ; preds = %invertL289.i.i
%_unwrap80.i = add i64 %_unwrap97.i, 1, !dbg !436
%.not129_unwrap81.i = icmp eq i64 %_unwrap80.i, 0, !dbg !436
br i1 %.not129_unwrap81.i, label %invertL190.i_phirc.i, label %invertL190.i_phirc83.i, !dbg !436
invertL190.i_phirc.i: ; preds = %invertL190.i.i
br label %invertL190.i_phimerge.i
invertL190.i_phirc83.i: ; preds = %invertL190.i.i
br label %invertL190.i_phimerge.i
invertL190.i_phimerge.i: ; preds = %invertL190.i_phirc83.i, %invertL190.i_phirc.i
%25 = phi {} addrspace(10)* [ %14, %invertL190.i_phirc.i ], [ %10, %invertL190.i_phirc83.i ], !dbg !436
br i1 %.not129_unwrap81.i, label %invertL190.i_phimerge_phirc.i, label %invertL190.i_phimerge_phirc85.i, !dbg !436
invertL190.i_phimerge_phirc.i: ; preds = %invertL190.i_phimerge.i
br label %invertL190.i_phimerge_phimerge.i
invertL190.i_phimerge_phirc85.i: ; preds = %invertL190.i_phimerge.i
br label %invertL190.i_phimerge_phimerge.i
invertL190.i_phimerge_phimerge.i: ; preds = %invertL190.i_phimerge_phirc85.i, %invertL190.i_phimerge_phirc.i
%26 = phi {} addrspace(10)* [ %14, %invertL190.i_phimerge_phirc.i ], [ %9, %invertL190.i_phimerge_phirc85.i ], !dbg !436
%27 = call token (...) @llvm.julia.gc_preserve_begin({} addrspace(10)* %25, {} addrspace(10)* %26), !dbg !436
%28 = call token (...) @llvm.julia.gc_preserve_begin({} addrspace(10)* %17), !dbg !435
%"'ipc_unwrap.i" = bitcast i8* %12 to float*, !dbg !443
%"'ipg_unwrap.i" = getelementptr inbounds float, float* %"'ipc_unwrap.i", i64 %5, !dbg !443
%29 = bitcast i8* %11 to float*, !dbg !443
%_unwrap89.i = and i64 %_unwrap80.i, 4611686018427387903, !dbg !443
%30 = icmp eq i64 %_unwrap89.i, 0, !dbg !443
br i1 %30, label %__enzyme_memcpyadd_floatda1sa1.exit.i, label %for.body.i.i, !dbg !443
for.body.i.i: ; preds = %for.body.i.i, %invertL190.i_phimerge_phimerge.i
%idx.i.i = phi i64 [ 0, %invertL190.i_phimerge_phimerge.i ], [ %idx.next.i.i, %for.body.i.i ], !dbg !443
%dst.i.i.i = getelementptr inbounds float, float* %29, i64 %idx.i.i, !dbg !443
%dst.i.l.i.i = load float, float* %dst.i.i.i, align 1, !dbg !443
store float 0.000000e+00, float* %dst.i.i.i, align 1, !dbg !443, !noalias !291
%src.i.i.i = getelementptr inbounds float, float* %"'ipg_unwrap.i", i64 %idx.i.i, !dbg !443
%src.i.l.i.i = load float, float* %src.i.i.i, align 1, !dbg !443
%31 = fadd fast float %src.i.l.i.i, %dst.i.l.i.i, !dbg !443
store float %31, float* %src.i.i.i, align 1, !dbg !443, !noalias !291
%idx.next.i.i = add nuw i64 %idx.i.i, 1, !dbg !443
%32 = icmp eq i64 %_unwrap89.i, %idx.next.i.i, !dbg !443
br i1 %32, label %__enzyme_memcpyadd_floatda1sa1.exit.i, label %for.body.i.i, !dbg !443
__enzyme_memcpyadd_floatda1sa1.exit.i: ; preds = %for.body.i.i, %invertL190.i_phimerge_phimerge.i
call void @llvm.julia.gc_preserve_end(token %28), !dbg !434
call void @llvm.julia.gc_preserve_end(token %27), !dbg !430
br label %invertL95.i.i
invertL289.i.i: ; preds = %invertL327.i.i
%_unwrap94.i = add i64 %5, 1
%.not125_unwrap95.i = icmp sgt i64 %_unwrap94.i, %13
%spec.select6_unwrap96.i = select i1 %.not125_unwrap95.i, i64 %5, i64 %13
%_unwrap97.i = sub i64 %spec.select6_unwrap96.i, %_unwrap94.i
%or.cond_unwrap.i = icmp ult i64 %_unwrap97.i, 9223372036854775807
br i1 %or.cond_unwrap.i, label %invertL190.i.i, label %invertL95.i.i
invertL309.i.i: ; preds = %invertL327.i.i
%33 = getelementptr inbounds {}**, {}*** %7, i64 -14, !dbg !445
%34 = bitcast {}*** %33 to {}*, !dbg !445
%35 = call noalias dereferenceable(8) {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %34, i64 noundef 8, {} addrspace(10)* noundef @ejl_enz_runtime_exc), !dbg !445
%36 = bitcast {} addrspace(10)* %35 to i8* addrspace(10)*, !dbg !445
store i8* getelementptr inbounds ([58 x i8], [58 x i8]* @enz_exception.8, i32 0, i32 0), i8* addrspace(10)* %36, align 8, !dbg !445, !noalias !291
%37 = addrspacecast {} addrspace(10)* %35 to {} addrspace(12)*, !dbg !445
call void @jl_throw({} addrspace(12)* %37) #31, !dbg !445
unreachable
invertL327.i.i: ; preds = %julia_CachedWalk_100192_inner.exit.i
br i1 %.not, label %invertL309.i.i, label %invertL289.i.i
diffejulia_CachedWalk_100192_inner.7.exit: ; preds = %invertL25.i.i, %invertL81.i.i
fence syncscope("singlethread") seq_cst
ret void
}
attributes #0 = { noinline noreturn "enzyme_ta_norecur" "enzymejl_mi"="139726648832464" "enzymejl_rt"="139727776577344" "enzymejl_world"="26887" }
attributes #1 = { nofree memory(none) "enzyme_inactive" "enzyme_no_escaping_allocation" "enzyme_shouldrecompute" "enzymejl_world"="26887" }
attributes #2 = { nofree memory(argmem: readwrite, inaccessiblemem: readwrite) "enzyme_inactive" "enzyme_no_escaping_allocation" "enzymejl_world"="26887" }
attributes #3 = { nofree "enzymejl_world"="26887" }
attributes #4 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(1) memory(inaccessiblemem: readwrite) "enzyme_no_escaping_allocation" "enzymejl_world"="26887" }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) "enzymejl_world"="26887" }
attributes #6 = { noreturn "enzyme_no_escaping_allocation" "enzymejl_world"="26887" }
attributes #7 = { noreturn "enzyme_ta_norecur" "enzymejl_mi"="139727803000656" "enzymejl_rt"="139727776577344" "enzymejl_world"="26887" }
attributes #8 = { mustprogress nofree nounwind willreturn memory(inaccessiblemem: readwrite) "enzyme_inactive" "enzyme_no_escaping_allocation" "enzymejl_world"="26887" }
attributes #9 = { nofree norecurse nounwind memory(inaccessiblemem: readwrite) "enzyme_inactive" "enzyme_no_escaping_allocation" "enzymejl_world"="26887" }
attributes #10 = { noreturn "enzymejl_world"="26887" }
attributes #11 = { nofree memory(inaccessiblemem: readwrite) "enzyme_inactive" "enzyme_no_escaping_allocation" "enzymejl_world"="26887" }
attributes #12 = { mustprogress nofree nounwind willreturn memory(inaccessiblemem: readwrite) "enzyme_no_escaping_allocation" "enzymejl_world"="26887" }
attributes #13 = { mustprogress nofree nounwind willreturn "enzyme_no_escaping_allocation" }
attributes #14 = { memory(argmem: readwrite) }
attributes #15 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #16 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #17 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #18 = { "enzymejl_world"="26887" }
attributes #19 = { alwaysinline "enzymejl_world"="26887" }
attributes #20 = { memory(readwrite) }
attributes #21 = { nounwind willreturn allockind("alloc,uninitialized") allocsize(1) memory(inaccessiblemem: readwrite) "enzyme_no_escaping_allocation" }
attributes #22 = { nofree }
attributes #23 = { noreturn }
attributes #24 = { nounwind willreturn memory(inaccessiblemem: readwrite) "enzyme_no_escaping_allocation" }
attributes #25 = { mustprogress willreturn }
attributes #26 = { mustprogress noreturn willreturn }
attributes #27 = { nounwind }
attributes #28 = { mustprogress nounwind willreturn memory(inaccessiblemem: readwrite) "enzyme_no_escaping_allocation" }
attributes #29 = { mustprogress nounwind willreturn allockind("alloc,uninitialized") allocsize(1) memory(inaccessiblemem: readwrite) "enzyme_no_escaping_allocation" }
attributes #30 = { mustprogress nofree willreturn }
attributes #31 = { noreturn "enzyme_error" }
attributes #32 = { mustprogress nounwind willreturn }
!llvm.module.flags = !{!1, !2}
!llvm.dbg.cu = !{!3, !5, !6, !7}
!0 = !{}
!1 = !{i32 2, !"Dwarf Version", i32 4}
!2 = !{i32 2, !"Debug Info Version", i32 3}
!3 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !4, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, nameTableKind: None)
!4 = !DIFile(filename: "julia", directory: ".")
!5 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !4, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, nameTableKind: None)
!6 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !4, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, nameTableKind: None)
!7 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !4, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, nameTableKind: None)
!8 = distinct !DISubprogram(name: "throw_boundserror", linkageName: "julia_throw_boundserror_100259", scope: null, file: !9, line: 14, type: !10, scopeLine: 14, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !3, retainedNodes: !0)
!9 = !DIFile(filename: "essentials.jl", directory: ".")
!10 = !DISubroutineType(types: !0)
!11 = !{!12, !12, i64 0}
!12 = !{!"jtbaa_gcframe", !13, i64 0}
!13 = !{!"jtbaa", !14, i64 0}
!14 = !{!"jtbaa"}
!15 = !{!16, !16, i64 0, i64 0}
!16 = !{!"jtbaa_const", !13, i64 0}
!17 = !DILocation(line: 14, scope: !8)
!18 = !{!13, !13, i64 0}
!19 = !{!20, !22}
!20 = !{!"jnoalias_const", !21}
!21 = !{!"jnoalias"}
!22 = !{!"jnoalias_data", !21}
!23 = !{!24, !26, !28, !29, !30}
!24 = distinct !{!24, !25, !"na_addr13"}
!25 = distinct !{!25, !"addr13"}
!26 = distinct !{!26, !27, !"na_addr13"}
!27 = distinct !{!27, !"addr13"}
!28 = !{!"jnoalias_gcframe", !21}
!29 = !{!"jnoalias_stack", !21}
!30 = !{!"jnoalias_typemd", !21}
!31 = !{!"Integer", i64 0, !"Integer", i64 8}
!32 = distinct !DISubprogram(name: "throw_dmrsa", linkageName: "julia_throw_dmrsa_100265", scope: null, file: !33, line: 41, type: !10, scopeLine: 41, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !5, retainedNodes: !0)
!33 = !DIFile(filename: "reshapedarray.jl", directory: ".")
!34 = !DILocation(line: 41, scope: !32)
!35 = !{!20}
!36 = !{!28, !29, !22, !30}
!37 = !{!"Unknown", i32 -1, !38}
!38 = !{!"Integer"}
!39 = !{!40, !40, i64 0}
!40 = !{!"jtbaa_immut", !41, i64 0}
!41 = !{!"jtbaa_value", !42, i64 0}
!42 = !{!"jtbaa_data", !13, i64 0}
!43 = !{!22}
!44 = !{!24, !26, !28, !29, !30, !20}
!45 = distinct !DISubprogram(name: "augmented_julia_CachedWalk_100192_inner_7wrap", linkageName: "augmented_julia_CachedWalk_100192_inner_7wrap", scope: null, file: !46, type: !10, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!46 = !DIFile(filename: "/home/runner/.julia/packages/Functors/wOtRi/src/walks.jl", directory: ".")
!47 = !DILocation(line: 0, scope: !48, inlinedAt: !49)
!48 = distinct !DISubprogram(name: "CachedWalk", linkageName: "julia_CachedWalk_100192", scope: null, file: !46, line: 190, type: !10, scopeLine: 190, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!49 = distinct !DILocation(line: 0, scope: !45)
!50 = !{!51}
!51 = distinct !{!51, !52, !"primal"}
!52 = distinct !{!52, !" diff: %pgcstack.i"}
!53 = !{!54}
!54 = distinct !{!54, !52, !"shadow_0"}
!55 = !{!56}
!56 = distinct !{!56, !57, !"primal"}
!57 = distinct !{!57, !" diff: %ptls_load.i123124"}
!58 = !{!59}
!59 = distinct !{!59, !57, !"shadow_0"}
!60 = !DILocation(line: 190, scope: !48, inlinedAt: !61)
!61 = distinct !DILocation(line: 0, scope: !48, inlinedAt: !49)
!62 = !DILocation(line: 49, scope: !63, inlinedAt: !65)
!63 = distinct !DISubprogram(name: "getproperty;", linkageName: "getproperty", scope: !64, file: !64, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!64 = !DIFile(filename: "Base.jl", directory: ".")
!65 = distinct !DILocation(line: 92, scope: !66, inlinedAt: !68)
!66 = distinct !DISubprogram(name: "get;", linkageName: "get", scope: !67, file: !67, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!67 = !DIFile(filename: "iddict.jl", directory: ".")
!68 = distinct !DILocation(line: 182, scope: !69, inlinedAt: !70)
!69 = distinct !DISubprogram(name: "in;", linkageName: "in", scope: !67, file: !67, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!70 = distinct !DILocation(line: 19, scope: !71, inlinedAt: !73)
!71 = distinct !DISubprogram(name: "haskey;", linkageName: "haskey", scope: !72, file: !72, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!72 = !DIFile(filename: "abstractdict.jl", directory: ".")
!73 = distinct !DILocation(line: 192, scope: !48, inlinedAt: !61)
!74 = !{!75, !75, i64 0}
!75 = !{!"jtbaa_mutab", !41, i64 0}
!76 = !{!77, !22}
!77 = distinct !{!77, !78, !"shadow_0"}
!78 = distinct !{!78, !" diff: %.fca.1.extract"}
!79 = !{!80, !28, !29, !30, !20}
!80 = distinct !{!80, !78, !"primal"}
!81 = !{i64 16}
!82 = !{!80, !22}
!83 = !{!77, !28, !29, !30, !20}
!84 = !{i64 8}
!85 = !{!"Unknown", i32 -1, !86}
!86 = !{!"Pointer", i32 0, !38, i32 1, !38, i32 2, !38, i32 3, !38, i32 4, !38, i32 5, !38, i32 6, !38, i32 7, !38, i32 8, !87}
!87 = !{!"Pointer"}
!88 = !DILocation(line: 92, scope: !66, inlinedAt: !68)
!89 = !DILocation(line: 93, scope: !66, inlinedAt: !68)
!90 = !DILocation(line: 192, scope: !48, inlinedAt: !61)
!91 = !DILocation(line: 193, scope: !48, inlinedAt: !61)
!92 = !DILocation(line: 194, scope: !93, inlinedAt: !95)
!93 = distinct !DISubprogram(name: "size;", linkageName: "size", scope: !94, file: !94, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!94 = !DIFile(filename: "array.jl", directory: ".")
!95 = distinct !DILocation(line: 98, scope: !96, inlinedAt: !98)
!96 = distinct !DISubprogram(name: "axes;", linkageName: "axes", scope: !97, file: !97, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!97 = !DIFile(filename: "abstractarray.jl", directory: ".")
!98 = distinct !DILocation(line: 201, scope: !99, inlinedAt: !101)
!99 = distinct !DISubprogram(name: "ProjectTo;", linkageName: "ProjectTo", scope: !100, file: !100, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!100 = !DIFile(filename: "/home/runner/.julia/packages/ChainRulesCore/6Pucz/src/projection.jl", directory: ".")
!101 = distinct !DILocation(line: 102, scope: !102, inlinedAt: !104)
!102 = distinct !DISubprogram(name: "_getat;", linkageName: "_getat", scope: !103, file: !103, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!103 = !DIFile(filename: "/home/runner/.julia/packages/Optimisers/FES4P/src/destructure.jl", directory: ".")
!104 = distinct !DILocation(line: 97, scope: !105, inlinedAt: !106)
!105 = distinct !DISubprogram(name: "#57;", linkageName: "#57", scope: !103, file: !103, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!106 = distinct !DILocation(line: 144, scope: !107, inlinedAt: !108)
!107 = distinct !DISubprogram(name: "ExcludeWalk;", linkageName: "ExcludeWalk", scope: !46, file: !46, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!108 = distinct !DILocation(line: 195, scope: !48, inlinedAt: !61)
!109 = !{!110, !110, i64 0}
!110 = !{!"jtbaa_arraysize", !111, i64 0}
!111 = !{!"jtbaa_array", !13, i64 0}
!112 = !{!113, !30}
!113 = distinct !{!113, !114, !"primal"}
!114 = distinct !{!114, !" diff: %"}
!115 = !{!116, !28, !29, !22, !20}
!116 = distinct !{!116, !114, !"shadow_0"}
!117 = !DILocation(line: 419, scope: !118, inlinedAt: !120)
!118 = distinct !DISubprogram(name: "unitrange_last;", linkageName: "unitrange_last", scope: !119, file: !119, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!119 = !DIFile(filename: "range.jl", directory: ".")
!120 = distinct !DILocation(line: 408, scope: !121, inlinedAt: !122)
!121 = distinct !DISubprogram(name: "UnitRange;", linkageName: "UnitRange", scope: !119, file: !119, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!122 = distinct !DILocation(line: 5, scope: !123, inlinedAt: !101)
!123 = distinct !DISubprogram(name: "Colon;", linkageName: "Colon", scope: !119, file: !119, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!124 = !DILocation(line: 87, scope: !125, inlinedAt: !127)
!125 = distinct !DISubprogram(name: "+;", linkageName: "+", scope: !126, file: !126, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!126 = !DIFile(filename: "int.jl", directory: ".")
!127 = distinct !DILocation(line: 1115, scope: !128, inlinedAt: !130)
!128 = distinct !DISubprogram(name: "broadcasted;", linkageName: "broadcasted", scope: !129, file: !129, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!129 = !DIFile(filename: "broadcast.jl", directory: ".")
!130 = distinct !DILocation(line: 1326, scope: !128, inlinedAt: !101)
!131 = !DILocation(line: 514, scope: !132, inlinedAt: !133)
!132 = distinct !DISubprogram(name: "<=;", linkageName: "<=", scope: !126, file: !126, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!133 = distinct !DILocation(line: 426, scope: !134, inlinedAt: !136)
!134 = distinct !DISubprogram(name: ">=;", linkageName: ">=", scope: !135, file: !135, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!135 = !DIFile(filename: "operators.jl", directory: ".")
!136 = distinct !DILocation(line: 419, scope: !118, inlinedAt: !137)
!137 = distinct !DILocation(line: 408, scope: !121, inlinedAt: !138)
!138 = distinct !DILocation(line: 5, scope: !123, inlinedAt: !139)
!139 = distinct !DILocation(line: 211, scope: !140, inlinedAt: !141)
!140 = distinct !DISubprogram(name: "range_start_stop;", linkageName: "range_start_stop", scope: !119, file: !119, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!141 = distinct !DILocation(line: 166, scope: !142, inlinedAt: !143)
!142 = distinct !DISubprogram(name: "_range;", linkageName: "_range", scope: !119, file: !119, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!143 = distinct !DILocation(line: 150, scope: !144, inlinedAt: !145)
!144 = distinct !DISubprogram(name: "#range#84;", linkageName: "#range#84", scope: !119, file: !119, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!145 = distinct !DILocation(line: 150, scope: !146, inlinedAt: !127)
!146 = distinct !DISubprogram(name: "range;", linkageName: "range", scope: !119, file: !119, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!147 = !DILocation(line: 419, scope: !118, inlinedAt: !137)
!148 = !DILocation(line: 697, scope: !149, inlinedAt: !150)
!149 = distinct !DISubprogram(name: "checkbounds;", linkageName: "checkbounds", scope: !97, file: !97, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!150 = distinct !DILocation(line: 936, scope: !151, inlinedAt: !101)
!151 = distinct !DISubprogram(name: "getindex;", linkageName: "getindex", scope: !94, file: !94, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!152 = !{!153, !153, i64 0}
!153 = !{!"jtbaa_stack", !13, i64 0}
!154 = !{!29}
!155 = !{!24, !156, !28, !22, !30, !20}
!156 = distinct !{!156, !157, !"na_addr13"}
!157 = distinct !{!157, !"addr13"}
!158 = !DILocation(line: 194, scope: !93, inlinedAt: !159)
!159 = distinct !DILocation(line: 98, scope: !96, inlinedAt: !160)
!160 = distinct !DILocation(line: 137, scope: !161, inlinedAt: !162)
!161 = distinct !DISubprogram(name: "axes1;", linkageName: "axes1", scope: !97, file: !97, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!162 = distinct !DILocation(line: 389, scope: !163, inlinedAt: !164)
!163 = distinct !DISubprogram(name: "eachindex;", linkageName: "eachindex", scope: !97, file: !97, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!164 = distinct !DILocation(line: 689, scope: !149, inlinedAt: !165)
!165 = distinct !DILocation(line: 699, scope: !149, inlinedAt: !150)
!166 = !{!167, !30}
!167 = distinct !{!167, !168, !"primal"}
!168 = distinct !{!168, !" diff: %.fca.0.0.0.extract"}
!169 = !{!170, !28, !29, !22, !20}
!170 = distinct !{!170, !168, !"shadow_0"}
!171 = !DILocation(line: 83, scope: !172, inlinedAt: !173)
!172 = distinct !DISubprogram(name: "<;", linkageName: "<", scope: !126, file: !126, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!173 = distinct !DILocation(line: 379, scope: !174, inlinedAt: !175)
!174 = distinct !DISubprogram(name: ">;", linkageName: ">", scope: !135, file: !135, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!175 = distinct !DILocation(line: 681, scope: !176, inlinedAt: !177)
!176 = distinct !DISubprogram(name: "isempty;", linkageName: "isempty", scope: !119, file: !119, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!177 = distinct !DILocation(line: 757, scope: !178, inlinedAt: !164)
!178 = distinct !DISubprogram(name: "checkindex;", linkageName: "checkindex", scope: !97, file: !97, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!179 = !DILocation(line: 513, scope: !172, inlinedAt: !180)
!180 = distinct !DILocation(line: 754, scope: !178, inlinedAt: !177)
!181 = !DILocation(line: 86, scope: !182, inlinedAt: !180)
!182 = distinct !DISubprogram(name: "-;", linkageName: "-", scope: !126, file: !126, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!183 = !DILocation(line: 38, scope: !184, inlinedAt: !177)
!184 = distinct !DISubprogram(name: "&;", linkageName: "&", scope: !185, file: !185, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!185 = !DIFile(filename: "bool.jl", directory: ".")
!186 = !DILocation(line: 39, scope: !187, inlinedAt: !177)
!187 = distinct !DISubprogram(name: "|;", linkageName: "|", scope: !185, file: !185, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!188 = !DILocation(line: 699, scope: !149, inlinedAt: !150)
!189 = !DILocation(line: 86, scope: !182, inlinedAt: !190)
!190 = distinct !DILocation(line: 768, scope: !191, inlinedAt: !192)
!191 = distinct !DISubprogram(name: "length;", linkageName: "length", scope: !119, file: !119, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!192 = distinct !DILocation(line: 937, scope: !151, inlinedAt: !101)
!193 = !DILocation(line: 87, scope: !125, inlinedAt: !190)
!194 = !DILocation(line: 512, scope: !195, inlinedAt: !197)
!195 = distinct !DISubprogram(name: "GenericMemory;", linkageName: "GenericMemory", scope: !196, file: !196, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!196 = !DIFile(filename: "boot.jl", directory: ".")
!197 = distinct !DILocation(line: 578, scope: !198, inlinedAt: !199)
!198 = distinct !DISubprogram(name: "Array;", linkageName: "Array", scope: !196, file: !196, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!199 = distinct !DILocation(line: 591, scope: !198, inlinedAt: !200)
!200 = distinct !DILocation(line: 372, scope: !201, inlinedAt: !202)
!201 = distinct !DISubprogram(name: "similar;", linkageName: "similar", scope: !94, file: !94, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!202 = distinct !DILocation(line: 822, scope: !203, inlinedAt: !204)
!203 = distinct !DISubprogram(name: "similar;", linkageName: "similar", scope: !97, file: !97, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!204 = distinct !DILocation(line: 938, scope: !151, inlinedAt: !101)
!205 = !DILocation(line: 514, scope: !195, inlinedAt: !197)
!206 = !{!207, !20}
!207 = distinct !{!207, !208, !"primal"}
!208 = distinct !{!208, !" diff: %"}
!209 = !{!210, !28, !29, !22, !30}
!210 = distinct !{!210, !208, !"shadow_0"}
!211 = !{!"Unknown", i32 -1, !212}
!212 = !{!"Pointer", i32 0, !38, i32 1, !38, i32 2, !38, i32 3, !38, i32 4, !38, i32 5, !38, i32 6, !38, i32 7, !38, i32 8, !213}
!213 = !{!"Pointer", i32 -1, !214}
!214 = !{!"Float@float"}
!215 = !DILocation(line: 516, scope: !195, inlinedAt: !197)
!216 = !DILocation(line: 522, scope: !217, inlinedAt: !218)
!217 = distinct !DISubprogram(name: "memoryref;", linkageName: "memoryref", scope: !196, file: !196, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!218 = distinct !DILocation(line: 579, scope: !198, inlinedAt: !199)
!219 = !{!220, !20}
!220 = distinct !{!220, !221, !"shadow_0"}
!221 = distinct !{!221, !" diff: %"}
!222 = !{!223, !28, !29, !22, !30}
!223 = distinct !{!223, !221, !"primal"}
!224 = !{!223, !20}
!225 = !{!220, !28, !29, !22, !30}
!226 = !{!"Unknown", i32 -1, !213}
!227 = !DILocation(line: 579, scope: !198, inlinedAt: !199)
!228 = !{!229, !229, i64 0}
!229 = !{!"jtbaa_arrayptr", !111, i64 0}
!230 = !{!231, !30}
!231 = distinct !{!231, !232, !"shadow_0"}
!232 = distinct !{!232, !" diff: %"}
!233 = !{!24, !234, !235, !28, !29, !22, !20}
!234 = distinct !{!234, !232, !"primal"}
!235 = distinct !{!235, !236, !"na_addr13"}
!236 = distinct !{!236, !"addr13"}
!237 = !{!234, !30}
!238 = !{!24, !231, !235, !28, !29, !22, !20}
!239 = !DILocation(line: 939, scope: !151, inlinedAt: !101)
!240 = !DILocation(line: 419, scope: !118, inlinedAt: !241)
!241 = distinct !DILocation(line: 408, scope: !121, inlinedAt: !242)
!242 = distinct !DILocation(line: 5, scope: !123, inlinedAt: !243)
!243 = distinct !DILocation(line: 305, scope: !244, inlinedAt: !245)
!244 = distinct !DISubprogram(name: "_copyto_impl!;", linkageName: "_copyto_impl!", scope: !94, file: !94, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!245 = distinct !DILocation(line: 299, scope: !246, inlinedAt: !247)
!246 = distinct !DISubprogram(name: "copyto!;", linkageName: "copyto!", scope: !94, file: !94, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!247 = distinct !DILocation(line: 940, scope: !151, inlinedAt: !101)
!248 = !DILocation(line: 697, scope: !149, inlinedAt: !243)
!249 = !DILocation(line: 194, scope: !93, inlinedAt: !250)
!250 = distinct !DILocation(line: 98, scope: !96, inlinedAt: !251)
!251 = distinct !DILocation(line: 137, scope: !161, inlinedAt: !252)
!252 = distinct !DILocation(line: 389, scope: !163, inlinedAt: !253)
!253 = distinct !DILocation(line: 689, scope: !149, inlinedAt: !254)
!254 = distinct !DILocation(line: 699, scope: !149, inlinedAt: !243)
!255 = !DILocation(line: 83, scope: !172, inlinedAt: !256)
!256 = distinct !DILocation(line: 379, scope: !174, inlinedAt: !257)
!257 = distinct !DILocation(line: 681, scope: !176, inlinedAt: !258)
!258 = distinct !DILocation(line: 757, scope: !178, inlinedAt: !253)
!259 = !DILocation(line: 513, scope: !172, inlinedAt: !260)
!260 = distinct !DILocation(line: 754, scope: !178, inlinedAt: !258)
!261 = !DILocation(line: 86, scope: !182, inlinedAt: !260)
!262 = !DILocation(line: 38, scope: !184, inlinedAt: !258)
!263 = !DILocation(line: 39, scope: !187, inlinedAt: !258)
!264 = !DILocation(line: 699, scope: !149, inlinedAt: !243)
!265 = !DILocation(line: 524, scope: !217, inlinedAt: !266)
!266 = distinct !DILocation(line: 306, scope: !244, inlinedAt: !245)
!267 = !{!268, !268, i64 0, i64 0}
!268 = !{!"jtbaa_memorylen", !111, i64 0}
!269 = !{i64 0, i64 2305843009[21369](https://github.com/TuringLang/AdvancedVI.jl/actions/runs/12100510357/job/33823449098#step:6:21372)3951}
!270 = !{!223, !30}
!271 = !{!220, !28, !29, !22, !20}
!272 = !DILocation(line: 756, scope: !273, inlinedAt: !274)
!273 = distinct !DISubprogram(name: "check_sign_bit;", linkageName: "check_sign_bit", scope: !196, file: !196, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!274 = distinct !DILocation(line: 867, scope: !275, inlinedAt: !276)
!275 = distinct !DISubprogram(name: "toUInt64;", linkageName: "toUInt64", scope: !196, file: !196, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!276 = distinct !DILocation(line: 897, scope: !277, inlinedAt: !278)
!277 = distinct !DISubprogram(name: "UInt64;", linkageName: "UInt64", scope: !196, file: !196, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!278 = distinct !DILocation(line: 7, scope: !279, inlinedAt: !281)
!279 = distinct !DISubprogram(name: "convert;", linkageName: "convert", scope: !280, file: !280, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!280 = !DIFile(filename: "number.jl", directory: ".")
!281 = distinct !DILocation(line: 687, scope: !282, inlinedAt: !283)
!282 = distinct !DISubprogram(name: "cconvert;", linkageName: "cconvert", scope: !9, file: !9, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!283 = distinct !DILocation(line: 28, scope: !284, inlinedAt: !286)
!284 = distinct !DISubprogram(name: "memmove;", linkageName: "memmove", scope: !285, file: !285, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!285 = !DIFile(filename: "cmem.jl", directory: ".")
!286 = distinct !DILocation(line: 355, scope: !287, inlinedAt: !289)
!287 = distinct !DISubprogram(name: "myunsafe_copyto!;", linkageName: "myunsafe_copyto!", scope: !288, file: !288, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!288 = !DIFile(filename: "/home/runner/.julia/packages/Enzyme/rffxx/src/compiler/interpreter.jl", directory: ".")
!289 = distinct !DILocation(line: 308, scope: !244, inlinedAt: !245)
!290 = !{i64 56}
!291 = !{!24}
!292 = !DILocation(line: 28, scope: !284, inlinedAt: !286)
!293 = !{!24, !156}
!294 = !DILocation(line: 356, scope: !287, inlinedAt: !289)
!295 = !DILocation(line: 357, scope: !287, inlinedAt: !289)
!296 = !DILocation(line: 194, scope: !93, inlinedAt: !297)
!297 = distinct !DILocation(line: 98, scope: !96, inlinedAt: !101)
!298 = !DILocation(line: 11, scope: !299, inlinedAt: !300)
!299 = distinct !DISubprogram(name: "length;", linkageName: "length", scope: !9, file: !9, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!300 = distinct !DILocation(line: 44, scope: !301, inlinedAt: !302)
!301 = distinct !DISubprogram(name: "reshape;", linkageName: "reshape", scope: !33, file: !33, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!302 = distinct !DILocation(line: 121, scope: !301, inlinedAt: !101)
!303 = !{!231, !28, !29, !22, !20}
!304 = !DILocation(line: 310, scope: !244, inlinedAt: !245)
!305 = !DILocation(line: 355, scope: !306, inlinedAt: !308)
!306 = distinct !DISubprogram(name: "map;", linkageName: "map", scope: !307, file: !307, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!307 = !DIFile(filename: "tuple.jl", directory: ".")
!308 = distinct !DILocation(line: 837, scope: !309, inlinedAt: !302)
!309 = distinct !DISubprogram(name: "to_shape;", linkageName: "to_shape", scope: !97, file: !97, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!310 = !DILocation(line: 639, scope: !311, inlinedAt: !313)
!311 = distinct !DISubprogram(name: "==;", linkageName: "==", scope: !312, file: !312, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!312 = !DIFile(filename: "promotion.jl", directory: ".")
!313 = distinct !DILocation(line: 277, scope: !314, inlinedAt: !300)
!314 = distinct !DISubprogram(name: "!=;", linkageName: "!=", scope: !135, file: !135, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!315 = !DILocation(line: 44, scope: !301, inlinedAt: !302)
!316 = !DILocation(line: 45, scope: !301, inlinedAt: !302)
!317 = !DILocation(line: 222, scope: !99, inlinedAt: !101)
!318 = !DILocation(line: 266, scope: !319, inlinedAt: !320)
!319 = distinct !DISubprogram(name: "_projection_mismatch;", linkageName: "_projection_mismatch", scope: !100, file: !100, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!320 = distinct !DILocation(line: 227, scope: !99, inlinedAt: !101)
!321 = !{!24, !156, !28, !29, !30, !20}
!322 = !DILocation(line: 227, scope: !99, inlinedAt: !101)
!323 = !DILocation(line: 49, scope: !63, inlinedAt: !324)
!324 = distinct !DILocation(line: 81, scope: !325, inlinedAt: !326)
!325 = distinct !DISubprogram(name: "setindex!;", linkageName: "setindex!", scope: !67, file: !67, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!326 = distinct !DILocation(line: 197, scope: !48, inlinedAt: !61)
!327 = !DILocation(line: 88, scope: !328, inlinedAt: !324)
!328 = distinct !DISubprogram(name: "*;", linkageName: "*", scope: !126, file: !126, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!329 = !{!330, !30}
!330 = distinct !{!330, !331, !"primal"}
!331 = distinct !{!331, !" diff: %"}
!332 = !{!333, !28, !29, !22, !20}
!333 = distinct !{!333, !331, !"shadow_0"}
!334 = !DILocation(line: 527, scope: !335, inlinedAt: !336)
!335 = distinct !DISubprogram(name: ">>;", linkageName: ">>", scope: !126, file: !126, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!336 = distinct !DILocation(line: 534, scope: !335, inlinedAt: !324)
!337 = !DILocation(line: 514, scope: !132, inlinedAt: !338)
!338 = distinct !DILocation(line: 426, scope: !134, inlinedAt: !324)
!339 = !DILocation(line: 81, scope: !325, inlinedAt: !326)
!340 = !DILocation(line: 62, scope: !341, inlinedAt: !342)
!341 = distinct !DISubprogram(name: "rehash!;", linkageName: "rehash!", scope: !67, file: !67, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!342 = distinct !DILocation(line: 82, scope: !325, inlinedAt: !326)
!343 = !DILocation(line: 8, scope: !344, inlinedAt: !346)
!344 = distinct !DISubprogram(name: "RefValue;", linkageName: "RefValue", scope: !345, file: !345, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!345 = !DIFile(filename: "refvalue.jl", directory: ".")
!346 = distinct !DILocation(line: 85, scope: !325, inlinedAt: !326)
!347 = !DILocation(line: 49, scope: !63, inlinedAt: !348)
!348 = distinct !DILocation(line: 86, scope: !325, inlinedAt: !326)
!349 = !DILocation(line: 30, scope: !350, inlinedAt: !352)
!350 = distinct !DISubprogram(name: "convert;", linkageName: "convert", scope: !351, file: !351, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!351 = !DIFile(filename: "pointer.jl", directory: ".")
!352 = distinct !DILocation(line: 53, scope: !353, inlinedAt: !348)
!353 = distinct !DISubprogram(name: "unsafe_convert;", linkageName: "unsafe_convert", scope: !345, file: !345, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!354 = !DILocation(line: 86, scope: !325, inlinedAt: !326)
!355 = !DILocation(line: 53, scope: !356, inlinedAt: !348)
!356 = distinct !DISubprogram(name: "setproperty!;", linkageName: "setproperty!", scope: !64, file: !64, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!357 = !{!24, !80, !235, !28, !29, !30, !20}
!358 = !{!24, !77, !235, !28, !29, !30, !20}
!359 = !DILocation(line: 49, scope: !63, inlinedAt: !360)
!360 = distinct !DILocation(line: 87, scope: !325, inlinedAt: !326)
!361 = !DILocation(line: 49, scope: !63, inlinedAt: !362)
!362 = distinct !DILocation(line: 59, scope: !363, inlinedAt: !360)
!363 = distinct !DISubprogram(name: "getindex;", linkageName: "getindex", scope: !345, file: !345, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!364 = !{!365, !22}
!365 = distinct !{!365, !366, !"primal"}
!366 = distinct !{!366, !" diff: %"}
!367 = !{!368, !28, !29, !30, !20}
!368 = distinct !{!368, !366, !"shadow_0"}
!369 = !DILocation(line: 549, scope: !370, inlinedAt: !371)
!370 = distinct !DISubprogram(name: "rem;", linkageName: "rem", scope: !126, file: !126, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!371 = distinct !DILocation(line: 1011, scope: !125, inlinedAt: !360)
!372 = !DILocation(line: 87, scope: !125, inlinedAt: !373)
!373 = distinct !DILocation(line: 1013, scope: !125, inlinedAt: !360)
!374 = !DILocation(line: 53, scope: !356, inlinedAt: !360)
!375 = !DILocation(line: 199, scope: !48, inlinedAt: !61)
!376 = !DILocation(line: 306, scope: !244, inlinedAt: !245)
!377 = !{!170, !30}
!378 = !{!167, !28, !29, !22, !20}
!379 = !{!380, !30}
!380 = distinct !{!380, !381, !"primal"}
!381 = distinct !{!381, !" diff: %"}
!382 = !{!383, !28, !29, !22, !20}
!383 = distinct !{!383, !381, !"shadow_0"}
!384 = !{!380, !20}
!385 = !{!383, !28, !29, !22, !30}
!386 = !DILocation(line: 353, scope: !287, inlinedAt: !289)
!387 = !DILocation(line: 354, scope: !287, inlinedAt: !289)
!388 = !DILocation(line: 88, scope: !328, inlinedAt: !286)
!389 = !DILocation(line: 741, scope: !390, inlinedAt: !391)
!390 = distinct !DISubprogram(name: "is_top_bit_set;", linkageName: "is_top_bit_set", scope: !196, file: !196, type: !10, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!391 = distinct !DILocation(line: 756, scope: !273, inlinedAt: !274)
!392 = distinct !DISubprogram(name: "diffejulia_CachedWalk_100192_inner_7wrap", linkageName: "diffejulia_CachedWalk_100192_inner_7wrap", scope: null, file: !46, type: !10, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!393 = !DILocation(line: 93, scope: !66, inlinedAt: !394)
!394 = distinct !DILocation(line: 182, scope: !69, inlinedAt: !395)
!395 = distinct !DILocation(line: 19, scope: !71, inlinedAt: !396)
!396 = distinct !DILocation(line: 192, scope: !397, inlinedAt: !398)
!397 = distinct !DISubprogram(name: "CachedWalk", linkageName: "julia_CachedWalk_100192", scope: null, file: !46, line: 190, type: !10, scopeLine: 190, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !6, retainedNodes: !0)
!398 = distinct !DILocation(line: 0, scope: !397, inlinedAt: !399)
!399 = distinct !DILocation(line: 0, scope: !392)
!400 = !DILocation(line: 192, scope: !397, inlinedAt: !398)
!401 = !DILocation(line: 193, scope: !397, inlinedAt: !398)
!402 = !DILocation(line: 87, scope: !125, inlinedAt: !403)
!403 = distinct !DILocation(line: 1115, scope: !128, inlinedAt: !404)
!404 = distinct !DILocation(line: 1326, scope: !128, inlinedAt: !405)
!405 = distinct !DILocation(line: 102, scope: !102, inlinedAt: !406)
!406 = distinct !DILocation(line: 97, scope: !105, inlinedAt: !407)
!407 = distinct !DILocation(line: 144, scope: !107, inlinedAt: !408)
!408 = distinct !DILocation(line: 195, scope: !397, inlinedAt: !398)
!409 = !DILocation(line: 514, scope: !132, inlinedAt: !410)
!410 = distinct !DILocation(line: 426, scope: !134, inlinedAt: !411)
!411 = distinct !DILocation(line: 419, scope: !118, inlinedAt: !412)
!412 = distinct !DILocation(line: 408, scope: !121, inlinedAt: !413)
!413 = distinct !DILocation(line: 5, scope: !123, inlinedAt: !414)
!414 = distinct !DILocation(line: 211, scope: !140, inlinedAt: !415)
!415 = distinct !DILocation(line: 166, scope: !142, inlinedAt: !416)
!416 = distinct !DILocation(line: 150, scope: !144, inlinedAt: !417)
!417 = distinct !DILocation(line: 150, scope: !146, inlinedAt: !403)
!418 = !DILocation(line: 419, scope: !118, inlinedAt: !412)
!419 = !DILocation(line: 86, scope: !182, inlinedAt: !420)
!420 = distinct !DILocation(line: 768, scope: !191, inlinedAt: !421)
!421 = distinct !DILocation(line: 937, scope: !151, inlinedAt: !405)
!422 = !DILocation(line: 512, scope: !195, inlinedAt: !423)
!423 = distinct !DILocation(line: 578, scope: !198, inlinedAt: !424)
!424 = distinct !DILocation(line: 591, scope: !198, inlinedAt: !425)
!425 = distinct !DILocation(line: 372, scope: !201, inlinedAt: !426)
!426 = distinct !DILocation(line: 822, scope: !203, inlinedAt: !427)
!427 = distinct !DILocation(line: 938, scope: !151, inlinedAt: !405)
!428 = !DILocation(line: 516, scope: !195, inlinedAt: !423)
!429 = !DILocation(line: 939, scope: !151, inlinedAt: !405)
!430 = !DILocation(line: 353, scope: !287, inlinedAt: !431)
!431 = distinct !DILocation(line: 308, scope: !244, inlinedAt: !432)
!432 = distinct !DILocation(line: 299, scope: !246, inlinedAt: !433)
!433 = distinct !DILocation(line: 940, scope: !151, inlinedAt: !405)
!434 = !DILocation(line: 354, scope: !287, inlinedAt: !431)
!435 = !DILocation(line: 356, scope: !287, inlinedAt: !431)
!436 = !DILocation(line: 357, scope: !287, inlinedAt: !431)
!437 = !DILocation(line: 310, scope: !244, inlinedAt: !432)
!438 = !DILocation(line: 81, scope: !325, inlinedAt: !439)
!439 = distinct !DILocation(line: 197, scope: !397, inlinedAt: !398)
!440 = !DILocation(line: 53, scope: !356, inlinedAt: !441)
!441 = distinct !DILocation(line: 83, scope: !325, inlinedAt: !439)
!442 = !DILocation(line: 199, scope: !397, inlinedAt: !398)
!443 = !DILocation(line: 28, scope: !284, inlinedAt: !444)
!444 = distinct !DILocation(line: 355, scope: !287, inlinedAt: !431)
!445 = !DILocation(line: 62, scope: !341, inlinedAt: !446)
!446 = distinct !DILocation(line: 82, scope: !325, inlinedAt: !439)
Stacktrace:
[1] post_optimze!(mod::LLVM.Module, tm::LLVM.TargetMachine, machine::Bool)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/rffxx/src/compiler/optimize.jl:743
[2] post_optimze!(mod::LLVM.Module, tm::LLVM.TargetMachine)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/rffxx/src/compiler/optimize.jl:721
[3] _thunk(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, postopt::Bool)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/rffxx/src/compiler.jl:5284
[4] _thunk
@ ~/.julia/packages/Enzyme/rffxx/src/compiler.jl:5265 [inlined]
[5] cached_compilation
@ ~/.julia/packages/Enzyme/rffxx/src/compiler.jl:5306 [inlined]
[6] thunkbase(mi::Core.MethodInstance, World::UInt64, FA::Type{<:Annotation}, A::Type{<:Annotation}, TT::Type, Mode::Enzyme.API.CDerivativeMode, width::Int64, ModifiedBetween::NTuple{N, Bool} where N, ReturnPrimal::Bool, ShadowInit::Bool, ABI::Type, ErrIfFuncWritten::Bool, RuntimeActivity::Bool)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/rffxx/src/compiler.jl:5410
[7] thunk_generator(world::UInt64, source::LineNumberNode, FA::Type, A::Type, TT::Type, Mode::Enzyme.API.CDerivativeMode, Width::Int64, ModifiedBetween::NTuple{N, Bool} where N, ReturnPrimal::Bool, ShadowInit::Bool, ABI::Type, ErrIfFuncWritten::Bool, RuntimeActivity::Bool, self::Any, fakeworld::Any, fa::Type, a::Type, tt::Type, mode::Type, width::Type, modifiedbetween::Type, returnprimal::Type, shadowinit::Type, abi::Type, erriffuncwritten::Type, runtimeactivity::Type)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/rffxx/src/compiler.jl:5562
[8] runtime_generic_augfwd(activity::Type{Val{(true, true, false, false)}}, runtimeActivity::Val{true}, width::Val{1}, ModifiedBetween::Val{(true, true, true, true)}, RT::Val{@NamedTuple{1, 2, 3}}, f::Functors.CachedWalk{Functors.ExcludeWalk{Optimisers._Trainable_biwalk, Optimisers.var"#57#58"{Vector{Float32}}, typeof(Optimisers.isnumeric)}, Functors.NoKeyword}, df::Functors.CachedWalk{Functors.ExcludeWalk{Optimisers._Trainable_biwalk, Optimisers.var"#57#58"{Vector{Float32}}, typeof(Optimisers.isnumeric)}, Functors.NoKeyword}, primal_1::Functors.var"#recurse#26"{Functors.CachedWalk{Functors.ExcludeWalk{Optimisers._Trainable_biwalk, Optimisers.var"#57#58"{Vector{Float32}}, typeof(Optimisers.isnumeric)}, Functors.NoKeyword}}, shadow_1_1::Functors.var"#recurse#26"{Functors.CachedWalk{Functors.ExcludeWalk{Optimisers._Trainable_biwalk, Optimisers.var"#57#58"{Vector{Float32}}, typeof(Optimisers.isnumeric)}, Functors.NoKeyword}}, primal_2::Vector{Float32}, shadow_2_1::Vector{Float32}, primal_3::Int64, shadow_3_1::Nothing)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/rffxx/src/rules/jitrules.jl:465
[9] recurse
@ ~/.julia/packages/Functors/wOtRi/src/walks.jl:52 [inlined]
[10] #59
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:115 [inlined]
[11] map
@ ./tuple.jl:406 [inlined]
[12] map
@ ./namedtuple.jl:266 [inlined]
[13] _trainmap
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:114 [inlined]
[14] _Trainable_biwalk
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:110 [inlined]
[15] _Trainable_biwalk
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:0 [inlined]
[16] augmented_julia__Trainable_biwalk_97366_inner_1wrap
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:0
[17] macro expansion
@ ~/.julia/packages/Enzyme/rffxx/src/compiler.jl:5196 [inlined]
[18] enzyme_call
@ ~/.julia/packages/Enzyme/rffxx/src/compiler.jl:4742 [inlined]
[19] AugmentedForwardThunk
@ ~/.julia/packages/Enzyme/rffxx/src/compiler.jl:4678 [inlined]
[20] runtime_generic_augfwd(activity::Type{Val{(false, true, true, false)}}, runtimeActivity::Val{true}, width::Val{1}, ModifiedBetween::Val{(true, true, true, true)}, RT::Val{@NamedTuple{1, 2, 3}}, f::Optimisers._Trainable_biwalk, df::Nothing, primal_1::Functors.var"#recurse#26"{Functors.CachedWalk{Functors.ExcludeWalk{Optimisers._Trainable_biwalk, Optimisers.var"#57#58"{Vector{Float32}}, typeof(Optimisers.isnumeric)}, Functors.NoKeyword}}, shadow_1_1::Functors.var"#recurse#26"{Functors.CachedWalk{Functors.ExcludeWalk{Optimisers._Trainable_biwalk, Optimisers.var"#57#58"{Vector{Float32}}, typeof(Optimisers.isnumeric)}, Functors.NoKeyword}}, primal_2::TuringDiagMvNormal{Vector{Float32}, Vector{Float32}}, shadow_2_1::TuringDiagMvNormal{Vector{Float32}, Vector{Float32}}, primal_3::@NamedTuple{m::Int64, σ::Int64}, shadow_3_1::Nothing)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/rffxx/src/rules/jitrules.jl:480
[21] ExcludeWalk
@ ~/.julia/packages/Functors/wOtRi/src/walks.jl:144 [inlined]
[22] CachedWalk
@ ~/.julia/packages/Functors/wOtRi/src/walks.jl:195 [inlined]
[23] execute
@ ~/.julia/packages/Functors/wOtRi/src/walks.jl:53 [inlined]
[24] #fmap#40
@ ~/.julia/packages/Functors/wOtRi/src/maps.jl:11 [inlined]
[25] fmap
@ ~/.julia/packages/Functors/wOtRi/src/maps.jl:3 [inlined]
[26] #_rebuild#56
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:96 [inlined]
[27] _rebuild
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:94 [inlined]
[28] Restructure
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:59 [inlined]
[29] restructure_ad_forward
@ ~/work/AdvancedVI.jl/AdvancedVI.jl/ext/AdvancedVIEnzymeExt.jl:14 [inlined]
[30] estimate_repgradelbo_ad_forward
@ ~/work/AdvancedVI.jl/AdvancedVI.jl/src/objectives/elbo/repgradelbo.jl:90 [inlined]
[31] estimate_repgradelbo_ad_forward
@ ~/work/AdvancedVI.jl/AdvancedVI.jl/src/objectives/elbo/repgradelbo.jl:0 [inlined]
[32] diffejulia_estimate_repgradelbo_ad_forward_98493_inner_10wrap
@ ~/work/AdvancedVI.jl/AdvancedVI.jl/src/objectives/elbo/repgradelbo.jl:0
[33] macro expansion
@ ~/.julia/packages/Enzyme/rffxx/src/compiler.jl:5196 [inlined]
[34] enzyme_call
@ ~/.julia/packages/Enzyme/rffxx/src/compiler.jl:4742 [inlined]
[35] CombinedAdjointThunk
@ ~/.julia/packages/Enzyme/rffxx/src/compiler.jl:4614 [inlined]
[36] autodiff(::ReverseMode{true, true, FFIABI, false, false}, ::Const{typeof(AdvancedVI.estimate_repgradelbo_ad_forward)}, ::Type{Active}, ::Duplicated{Vector{Float32}}, ::Const{@NamedTuple{rng::StableRNGs.LehmerRNG, adtype::AutoEnzyme{Nothing, Nothing}, obj::RepGradELBO{ClosedFormEntropy}, problem::TestNormal{Fill{Float32, 1, Tuple{Base.OneTo{Int64}}}, Diagonal{Float32, Fill{Float32, 1, Tuple{Base.OneTo{Int64}}}}}, restructure::Optimisers.Restructure{TuringDiagMvNormal{Vector{Float32}, Vector{Float32}}, @NamedTuple{m::Int64, σ::Int64}}, q_stop::TuringDiagMvNormal{Vector{Float32}, Vector{Float32}}}})
@ Enzyme ~/.julia/packages/Enzyme/rffxx/src/Enzyme.jl:503
[37] value_and_gradient!(::AutoEnzyme{Nothing, Nothing}, f::Function, x::Vector{Float32}, aux::@NamedTuple{rng::StableRNGs.LehmerRNG, adtype::AutoEnzyme{Nothing, Nothing}, obj::RepGradELBO{ClosedFormEntropy}, problem::TestNormal{Fill{Float32, 1, Tuple{Base.OneTo{Int64}}}, Diagonal{Float32, Fill{Float32, 1, Tuple{Base.OneTo{Int64}}}}}, restructure::Optimisers.Restructure{TuringDiagMvNormal{Vector{Float32}, Vector{Float32}}, @NamedTuple{m::Int64, σ::Int64}}, q_stop::TuringDiagMvNormal{Vector{Float32}, Vector{Float32}}}, out::DiffResults.MutableDiffResult{1, Float32, Tuple{Vector{Float32}}})
@ AdvancedVIEnzymeExt ~/work/AdvancedVI.jl/AdvancedVI.jl/ext/AdvancedVIEnzymeExt.jl:26
[38] estimate_gradient!(rng::StableRNGs.LehmerRNG, obj::RepGradELBO{ClosedFormEntropy}, adtype::AutoEnzyme{Nothing, Nothing}, out::DiffResults.MutableDiffResult{1, Float32, Tuple{Vector{Float32}}}, prob::TestNormal{Fill{Float32, 1, Tuple{Base.OneTo{Int64}}}, Diagonal{Float32, Fill{Float32, 1, Tuple{Base.OneTo{Int64}}}}}, params::Vector{Float32}, restructure::Optimisers.Restructure{TuringDiagMvNormal{Vector{Float32}, Vector{Float32}}, @NamedTuple{m::Int64, σ::Int64}}, state::Nothing)
@ AdvancedVI ~/work/AdvancedVI.jl/AdvancedVI.jl/src/objectives/elbo/repgradelbo.jl:116
[39] optimize(::StableRNGs.LehmerRNG, ::TestNormal{Fill{Float32, 1, Tuple{Base.OneTo{Int64}}}, Diagonal{Float32, Fill{Float32, 1, Tuple{Base.OneTo{Int64}}}}}, ::RepGradELBO{ClosedFormEntropy}, ::TuringDiagMvNormal{Vector{Float32}, Vector{Float32}}, ::Int64; adtype::AutoEnzyme{Nothing, Nothing}, optimizer::Descent{Float32}, averager::NoAveraging, show_progress::Bool, state_init::@NamedTuple{}, callback::Nothing, prog::ProgressMeter.Progress)
@ AdvancedVI ~/work/AdvancedVI.jl/AdvancedVI.jl/src/optimize.jl:76 |
@wsmoses It does seem to fix something, but I get the following new error: MethodError: no method matching parameters(::LLVM.Function, ::Int64)
Closest candidates are:
parameters(::LLVM.Function)
@ LLVM ~/.julia/packages/LLVM/wMjUU/src/core/function.jl:198
Stacktrace:
[1] annotate!(mod::LLVM.Module)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/o562S/src/llvm/attributes.jl:834
[2] codegen(output::Symbol, job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}; libraries::Bool, deferred_codegen::Bool, optimize::Bool, toplevel::Bool, strip::Bool, validate::Bool, only_entry::Bool, parent_job::Nothing)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/o562S/src/compiler.jl:4073
[3] codegen
@ ~/.julia/packages/Enzyme/o562S/src/compiler.jl:3218 [inlined]
[4] _thunk(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, postopt::Bool)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/o562S/src/compiler.jl:5265
[5] _thunk
@ ~/.julia/packages/Enzyme/o562S/src/compiler.jl:5265 [inlined]
[6] cached_compilation
@ ~/.julia/packages/Enzyme/o562S/src/compiler.jl:5306 [inlined]
[7] thunkbase(mi::Core.MethodInstance, World::UInt64, FA::Type{<:Annotation}, A::Type{<:Annotation}, TT::Type, Mode::Enzyme.API.CDerivativeMode, width::Int64, ModifiedBetween::Tuple{Vararg{Bool, N}} where N, ReturnPrimal::Bool, ShadowInit::Bool, ABI::Type, ErrIfFuncWritten::Bool, RuntimeActivity::Bool)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/o562S/src/compiler.jl:5410
[8] thunk_generator(world::UInt64, source::LineNumberNode, FA::Type, A::Type, TT::Type, Mode::Enzyme.API.CDerivativeMode, Width::Int64, ModifiedBetween::Tuple{Vararg{Bool, N}} where N, ReturnPrimal::Bool, ShadowInit::Bool, ABI::Type, ErrIfFuncWritten::Bool, RuntimeActivity::Bool, self::Any, fakeworld::Any, fa::Type, a::Type, tt::Type, mode::Type, width::Type, modifiedbetween::Type, returnprimal::Type, shadowinit::Type, abi::Type, erriffuncwritten::Type, runtimeactivity::Type)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/o562S/src/compiler.jl:5562
[9] runtime_generic_augfwd(activity::Type{Val{(false, true, true, true, false)}}, runtimeActivity::Val{true}, width::Val{1}, ModifiedBetween::Val{(true, true, true, true, true)}, RT::Val{@NamedTuple{1, 2, 3}}, f::typeof(map), df::Nothing, primal_1::Optimisers.var"#59#60"{Functors.var"#recurse#26"{Functors.CachedWalk{Functors.ExcludeWalk{Optimisers._Trainable_biwalk, Optimisers.var"#57#58"{Vector{Float32}}, typeof(Optimisers.isnumeric)}, Functors.NoKeyword}}}, shadow_1_1::Optimisers.var"#59#60"{Functors.var"#recurse#26"{Functors.CachedWalk{Functors.ExcludeWalk{Optimisers._Trainable_biwalk, Optimisers.var"#57#58"{Vector{Float32}}, typeof(Optimisers.isnumeric)}, Functors.NoKeyword}}}, primal_2::@NamedTuple{m::Vector{Float32}, σ::Vector{Float32}}, shadow_2_1::@NamedTuple{m::Vector{Float32}, σ::Vector{Float32}}, primal_3::@NamedTuple{m::Vector{Float32}, σ::Vector{Float32}}, shadow_3_1::@NamedTuple{m::Vector{Float32}, σ::Vector{Float32}}, primal_4::@NamedTuple{m::Int64, σ::Int64}, shadow_4_1::Nothing)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/o562S/src/rules/jitrules.jl:465
[10] _trainmap
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:114 [inlined]
[11] _Trainable_biwalk
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:110 [inlined]
[12] _Trainable_biwalk
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:0 [inlined]
[13] augmented_julia__Trainable_biwalk_9736_inner_1wrap
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:0
[14] macro expansion
@ ~/.julia/packages/Enzyme/o562S/src/compiler.jl:5196 [inlined]
[15] enzyme_call
@ ~/.julia/packages/Enzyme/o562S/src/compiler.jl:4742 [inlined]
[16] AugmentedForwardThunk
@ ~/.julia/packages/Enzyme/o562S/src/compiler.jl:4678 [inlined]
[17] runtime_generic_augfwd(activity::Type{Val{(false, true, true, false)}}, runtimeActivity::Val{true}, width::Val{1}, ModifiedBetween::Val{(true, true, true, true)}, RT::Val{@NamedTuple{1, 2, 3}}, f::Optimisers._Trainable_biwalk, df::Nothing, primal_1::Functors.var"#recurse#26"{Functors.CachedWalk{Functors.ExcludeWalk{Optimisers._Trainable_biwalk, Optimisers.var"#57#58"{Vector{Float32}}, typeof(Optimisers.isnumeric)}, Functors.NoKeyword}}, shadow_1_1::Functors.var"#recurse#26"{Functors.CachedWalk{Functors.ExcludeWalk{Optimisers._Trainable_biwalk, Optimisers.var"#57#58"{Vector{Float32}}, typeof(Optimisers.isnumeric)}, Functors.NoKeyword}}, primal_2::TuringDiagMvNormal{Vector{Float32}, Vector{Float32}}, shadow_2_1::TuringDiagMvNormal{Vector{Float32}, Vector{Float32}}, primal_3::@NamedTuple{m::Int64, σ::Int64}, shadow_3_1::Nothing)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/o562S/src/rules/jitrules.jl:480
[18] ExcludeWalk
@ ~/.julia/packages/Functors/wOtRi/src/walks.jl:144 [inlined]
[19] CachedWalk
@ ~/.julia/packages/Functors/wOtRi/src/walks.jl:195 [inlined]
[20] execute
@ ~/.julia/packages/Functors/wOtRi/src/walks.jl:53 [inlined]
[21] #fmap#40
@ ~/.julia/packages/Functors/wOtRi/src/maps.jl:11 [inlined]
[22] fmap
@ ~/.julia/packages/Functors/wOtRi/src/maps.jl:3 [inlined]
[23] #_rebuild#56
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:96 [inlined]
[24] _rebuild
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:94 [inlined]
[25] Restructure
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:59 [inlined]
[26] restructure_ad_forward
@ ~/.julia/dev/AdvancedVI/ext/AdvancedVIEnzymeExt.jl:14 [inlined]
[27] estimate_repgradelbo_ad_forward
@ ~/.julia/dev/AdvancedVI/src/objectives/elbo/repgradelbo.jl:97 [inlined]
[28] estimate_repgradelbo_ad_forward
@ ~/.julia/dev/AdvancedVI/src/objectives/elbo/repgradelbo.jl:0 [inlined]
[29] augmented_julia_estimate_repgradelbo_ad_forward_9969_inner_1wrap
@ ~/.julia/dev/AdvancedVI/src/objectives/elbo/repgradelbo.jl:0
[30] macro expansion
@ ~/.julia/packages/Enzyme/o562S/src/compiler.jl:5196 [inlined]
[31] enzyme_call
@ ~/.julia/packages/Enzyme/o562S/src/compiler.jl:4742 [inlined]
[32] AugmentedForwardThunk
@ ~/.julia/packages/Enzyme/o562S/src/compiler.jl:4678 [inlined]
[33] autodiff(::ReverseMode{true, true, FFIABI, false, false}, ::Const{typeof(AdvancedVI.estimate_repgradelbo_ad_forward)}, ::Type{Active}, ::Duplicated{Vector{Float32}}, ::Const{@NamedTuple{rng::StableRNGs.LehmerRNG, adtype::AutoEnzyme{Nothing, Nothing}, obj::RepGradELBO{ClosedFormEntropy}, problem::TestNormal{Fill{Float32, 1, Tuple{Base.OneTo{Int64}}}, Diagonal{Float32, Fill{Float32, 1, Tuple{Base.OneTo{Int64}}}}}, restructure::Optimisers.Restructure{TuringDiagMvNormal{Vector{Float32}, Vector{Float32}}, @NamedTuple{m::Int64, σ::Int64}}, q_stop::TuringDiagMvNormal{Vector{Float32}, Vector{Float32}}}})
@ Enzyme ~/.julia/packages/Enzyme/o562S/src/Enzyme.jl:396
[34] value_and_gradient!(::AutoEnzyme{Nothing, Nothing}, f::Function, x::Vector{Float32}, aux::@NamedTuple{rng::StableRNGs.LehmerRNG, adtype::AutoEnzyme{Nothing, Nothing}, obj::RepGradELBO{ClosedFormEntropy}, problem::TestNormal{Fill{Float32, 1, Tuple{Base.OneTo{Int64}}}, Diagonal{Float32, Fill{Float32, 1, Tuple{Base.OneTo{Int64}}}}}, restructure::Optimisers.Restructure{TuringDiagMvNormal{Vector{Float32}, Vector{Float32}}, @NamedTuple{m::Int64, σ::Int64}}, q_stop::TuringDiagMvNormal{Vector{Float32}, Vector{Float32}}}, out::DiffResults.MutableDiffResult{1, Float32, Tuple{Vector{Float32}}})
@ AdvancedVIEnzymeExt ~/.julia/dev/AdvancedVI/ext/AdvancedVIEnzymeExt.jl:26
[35] estimate_gradient!(rng::StableRNGs.LehmerRNG, obj::RepGradELBO{ClosedFormEntropy}, adtype::AutoEnzyme{Nothing, Nothing}, out::DiffResults.MutableDiffResult{1, Float32, Tuple{Vector{Float32}}}, prob::TestNormal{Fill{Float32, 1, Tuple{Base.OneTo{Int64}}}, Diagonal{Float32, Fill{Float32, 1, Tuple{Base.OneTo{Int64}}}}}, params::Vector{Float32}, restructure::Optimisers.Restructure{TuringDiagMvNormal{Vector{Float32}, Vector{Float32}}, @NamedTuple{m::Int64, σ::Int64}}, state::Nothing)
@ AdvancedVI ~/.julia/dev/AdvancedVI/src/objectives/elbo/repgradelbo.jl:123
[36] optimize(::StableRNGs.LehmerRNG, ::TestNormal{Fill{Float32, 1, Tuple{Base.OneTo{Int64}}}, Diagonal{Float32, Fill{Float32, 1, Tuple{Base.OneTo{Int64}}}}}, ::RepGradELBO{ClosedFormEntropy}, ::TuringDiagMvNormal{Vector{Float32}, Vector{Float32}}, ::Int64; adtype::AutoEnzyme{Nothing, Nothing}, optimizer::Descent{Float32}, averager::NoAveraging, show_progress::Bool, state_init::@NamedTuple{}, callback::Nothing, prog::ProgressMeter.Progress)
@ AdvancedVI ~/.julia/dev/AdvancedVI/src/optimize.jl:76
[37] macro expansion
@ ~/.julia/dev/AdvancedVI/test/inference/repgradelbo_distributionsad.jl:68 [inlined]
[38] macro expansion
@ ~/.julia/juliaup/julia-1.10.7+0.x64.linux.gnu/share/julia/stdlib/v1.10/Test/src/Test.jl:1577 [inlined]
[39] macro expansion
@ ~/.julia/dev/AdvancedVI/test/inference/repgradelbo_distributionsad.jl:67 [inlined]
[40] macro expansion
@ ~/.julia/juliaup/julia-1.10.7+0.x64.linux.gnu/share/julia/stdlib/v1.10/Test/src/Test.jl:1669 [inlined]
[41] macro expansion
@ ~/.julia/dev/AdvancedVI/test/inference/repgradelbo_distributionsad.jl:14 [inlined]
[42] macro expansion
@ ~/.julia/juliaup/julia-1.10.7+0.x64.linux.gnu/share/julia/stdlib/v1.10/Test/src/Test.jl:1577 [inlined]
[43] top-level scope
@ ~/.julia/dev/AdvancedVI/test/inference/repgradelbo_distributionsad.jl:14
[44] include(fname::String)
@ Base.MainInclude ./client.jl:494
[45] top-level scope
@ ~/.julia/dev/AdvancedVI/test/runtests.jl:68
[46] include(fname::String)
@ Base.MainInclude ./client.jl:494
[47] top-level scope
@ REPL[9]:1
[48] eval
@ ./boot.jl:385 [inlined]
[49] eval_user_input(ast::Any, backend::REPL.REPLBackend, mod::Module)
@ REPL ~/.julia/juliaup/julia-1.10.7+0.x64.linux.gnu/share/julia/stdlib/v1.10/REPL/src/REPL.jl:150
[50] repl_backend_loop(backend::REPL.REPLBackend, get_module::Function)
@ REPL ~/.julia/juliaup/julia-1.10.7+0.x64.linux.gnu/share/julia/stdlib/v1.10/REPL/src/REPL.jl:246
[51] start_repl_backend(backend::REPL.REPLBackend, consumer::Any; get_module::Function)
@ REPL ~/.julia/juliaup/julia-1.10.7+0.x64.linux.gnu/share/julia/stdlib/v1.10/REPL/src/REPL.jl:231
[52] run_repl(repl::REPL.AbstractREPL, consumer::Any; backend_on_current_task::Bool, backend::Any)
@ REPL ~/.julia/juliaup/julia-1.10.7+0.x64.linux.gnu/share/julia/stdlib/v1.10/REPL/src/REPL.jl:389
[53] run_repl(repl::REPL.AbstractREPL, consumer::Any)
@ REPL ~/.julia/juliaup/julia-1.10.7+0.x64.linux.gnu/share/julia/stdlib/v1.10/REPL/src/REPL.jl:375
[54] (::Base.var"#1014#1016"{Bool, Bool, Bool})(REPL::Module)
@ Base ./client.jl:437
[55] #invokelatest#2
@ ./essentials.jl:892 [inlined]
[56] invokelatest
@ ./essentials.jl:889 [inlined]
[57] run_main_repl(interactive::Bool, quiet::Bool, banner::Bool, history_file::Bool, color_set::Bool)
@ Base ./client.jl:421
[58] exec_options(opts::Base.JLOptions)
@ Base ./client.jl:338 |
ah that was me being silly, try again? |
Oh yeah it works now! |
nice! |
@wsmoses Oh crap I was actually testing this on determinism: Error During Test at /home/krkim/.julia/dev/AdvancedVI/test/inference/repgradelbo_locationscale.jl:70
Got exception outside of a @test
No augmented forward pass found for jl_genericmemory_slice
at context: %80 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* @jl_genericmemory_slice({} addrspace(10)* nonnull %63, i64 %79, i64 %36) #29, !dbg !238
Stacktrace:
[1] reshape
@ ./reshapedarray.jl:55
[2] reshape
@ ./reshapedarray.jl:121
[3] _getat
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:102
Stacktrace:
[1] reshape
@ ./reshapedarray.jl:55 [inlined]
[2] reshape
@ ./reshapedarray.jl:121 [inlined]
[3] _getat
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:102
[4] #57
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:97 [inlined]
[5] ExcludeWalk
@ ~/.julia/packages/Functors/LbNAu/src/walks.jl:126 [inlined]
[6] CachedWalk
@ ~/.julia/packages/Functors/LbNAu/src/walks.jl:177 [inlined]
[7] CachedWalk
@ ~/.julia/packages/Functors/LbNAu/src/walks.jl:0 [inlined]
[8] augmented_julia_CachedWalk_89551_inner_9wrap
@ ~/.julia/packages/Functors/LbNAu/src/walks.jl:0
[9] macro expansion
@ ~/.julia/packages/Enzyme/pCsIQ/src/compiler.jl:5196 [inlined]
[10] enzyme_call
@ ~/.julia/packages/Enzyme/pCsIQ/src/compiler.jl:4742 [inlined]
[11] AugmentedForwardThunk
@ ~/.julia/packages/Enzyme/pCsIQ/src/compiler.jl:4678 [inlined]
[12] runtime_generic_augfwd(activity::Type{Val{(true, true, true, false)}}, runtimeActivity::Val{true}, width::Val{1}, ModifiedBetween::Val{(true, true, true, true)}, RT::Val{@NamedTuple{1, 2, 3}}, f::Functors.CachedWalk{Functors.ExcludeWalk{Optimisers._Trainable_biwalk, Optimisers.var"#57#58"{Vector{Float32}}, typeof(Optimisers.isnumeric)}, Functors.NoKeyword, Functors.WalkCache{Any, Any, Functors.ExcludeWalk{Optimisers._Trainable_biwalk, Optimisers.var"#57#58"{Vector{Float32}}, typeof(Optimisers.isnumeric)}, IdDict{Any, Any}}}, df::Functors.CachedWalk{Functors.ExcludeWalk{Optimisers._Trainable_biwalk, Optimisers.var"#57#58"{Vector{Float32}}, typeof(Optimisers.isnumeric)}, Functors.NoKeyword, Functors.WalkCache{Any, Any, Functors.ExcludeWalk{Optimisers._Trainable_biwalk, Optimisers.var"#57#58"{Vector{Float32}}, typeof(Optimisers.isnumeric)}, IdDict{Any, Any}}}, primal_1::Functors.var"#recurse#27"{Functors.CachedWalk{Functors.ExcludeWalk{Optimisers._Trainable_biwalk, Optimisers.var"#57#58"{Vector{Float32}}, typeof(Optimisers.isnumeric)}, Functors.NoKeyword, Functors.WalkCache{Any, Any, Functors.ExcludeWalk{Optimisers._Trainable_biwalk, Optimisers.var"#57#58"{Vector{Float32}}, typeof(Optimisers.isnumeric)}, IdDict{Any, Any}}}}, shadow_1_1::Functors.var"#recurse#27"{Functors.CachedWalk{Functors.ExcludeWalk{Optimisers._Trainable_biwalk, Optimisers.var"#57#58"{Vector{Float32}}, typeof(Optimisers.isnumeric)}, Functors.NoKeyword, Functors.WalkCache{Any, Any, Functors.ExcludeWalk{Optimisers._Trainable_biwalk, Optimisers.var"#57#58"{Vector{Float32}}, typeof(Optimisers.isnumeric)}, IdDict{Any, Any}}}}, primal_2::LowerTriangular{Float32, Matrix{Float32}}, shadow_2_1::LowerTriangular{Float32, Matrix{Float32}}, primal_3::Int64, shadow_3_1::Nothing)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/pCsIQ/src/rules/jitrules.jl:480
[13] recurse
@ ~/.julia/packages/Functors/LbNAu/src/walks.jl:54 [inlined]
[14] #59
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:115 [inlined]
[15] map (repeats 2 times)
@ ./tuple.jl:406 [inlined]
[16] map
@ ./namedtuple.jl:266 [inlined]
[17] _trainmap
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:114 [inlined]
[18] _Trainable_biwalk
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:110 [inlined]
[19] ExcludeWalk
@ ~/.julia/packages/Functors/LbNAu/src/walks.jl:126 [inlined]
[20] CachedWalk
@ ~/.julia/packages/Functors/LbNAu/src/walks.jl:177 [inlined]
[21] execute
@ ~/.julia/packages/Functors/LbNAu/src/walks.jl:55 [inlined]
[22] #fmap#41
@ ~/.julia/packages/Functors/LbNAu/src/maps.jl:11 [inlined]
[23] fmap
@ ~/.julia/packages/Functors/LbNAu/src/maps.jl:3 [inlined]
[24] #_rebuild#56
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:96 [inlined]
[25] _rebuild
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:94 [inlined]
[26] Restructure
@ ~/.julia/packages/Optimisers/FES4P/src/destructure.jl:59 [inlined]
[27] restructure_ad_forward
@ ~/.julia/dev/AdvancedVI/ext/AdvancedVIEnzymeExt.jl:14 [inlined]
[28] estimate_repgradelbo_ad_forward
@ ~/.julia/dev/AdvancedVI/src/objectives/elbo/repgradelbo.jl:97 [inlined]
[29] estimate_repgradelbo_ad_forward
@ ~/.julia/dev/AdvancedVI/src/objectives/elbo/repgradelbo.jl:0 [inlined]
[30] diffejulia_estimate_repgradelbo_ad_forward_89824_inner_16wrap
@ ~/.julia/dev/AdvancedVI/src/objectives/elbo/repgradelbo.jl:0
[31] macro expansion
@ ~/.julia/packages/Enzyme/pCsIQ/src/compiler.jl:5196 [inlined]
[32] enzyme_call
@ ~/.julia/packages/Enzyme/pCsIQ/src/compiler.jl:4742 [inlined]
[33] CombinedAdjointThunk
@ ~/.julia/packages/Enzyme/pCsIQ/src/compiler.jl:4614 [inlined]
[34] autodiff
@ ~/.julia/packages/Enzyme/pCsIQ/src/Enzyme.jl:503 [inlined]
[35] value_and_gradient!
@ ~/.julia/dev/AdvancedVI/ext/AdvancedVIEnzymeExt.jl:26 [inlined]
[36] estimate_gradient!(rng::StableRNGs.LehmerRNG, obj::RepGradELBO{ClosedFormEntropy}, adtype::AutoEnzyme{Nothing, Nothing}, out::DiffResults.MutableDiffResult{1, Float32, Tuple{Vector{Float32}}}, prob::TestNormal{Fill{Float32, 1, Tuple{Base.OneTo{Int64}}}, PDMat{Float32, Matrix{Float32}}}, params::Vector{Float32}, restructure::Optimisers.Restructure{MvLocationScale{LowerTriangular{Float32, Matrix{Float32}}, Normal{Float32}, Vector{Float32}, Float32}, @NamedTuple{location::Int64, scale::Int64}}, state::Nothing)
@ AdvancedVI ~/.julia/dev/AdvancedVI/src/objectives/elbo/repgradelbo.jl:123
[37] optimize(::StableRNGs.LehmerRNG, ::TestNormal{Fill{Float32, 1, Tuple{Base.OneTo{Int64}}}, PDMat{Float32, Matrix{Float32}}}, ::RepGradELBO{ClosedFormEntropy}, ::MvLocationScale{LowerTriangular{Float32, Matrix{Float32}}, Normal{Float32}, Vector{Float32}, Float32}, ::Int64; adtype::AutoEnzyme{Nothing, Nothing}, optimizer::Descent{Float32}, averager::NoAveraging, show_progress::Bool, state_init::@NamedTuple{}, callback::Nothing, prog::ProgressMeter.Progress)
@ AdvancedVI ~/.julia/dev/AdvancedVI/src/optimize.jl:76
[38] macro expansion
@ ~/.julia/dev/AdvancedVI/test/inference/repgradelbo_locationscale.jl:72 [inlined]
[39] macro expansion
@ ~/.julia/juliaup/julia-1.11.2+0.x64.linux.gnu/share/julia/stdlib/v1.11/Test/src/Test.jl:1704 [inlined]
[40] macro expansion
@ ~/.julia/dev/AdvancedVI/test/inference/repgradelbo_locationscale.jl:71 [inlined]
[41] macro expansion
@ ~/.julia/juliaup/julia-1.11.2+0.x64.linux.gnu/share/julia/stdlib/v1.11/Test/src/Test.jl:1793 [inlined]
[42] macro expansion
@ ~/.julia/dev/AdvancedVI/test/inference/repgradelbo_locationscale.jl:14 [inlined]
[43] macro expansion
@ ~/.julia/juliaup/julia-1.11.2+0.x64.linux.gnu/share/julia/stdlib/v1.11/Test/src/Test.jl:1704 [inlined]
[44] top-level scope
@ ~/.julia/dev/AdvancedVI/test/inference/repgradelbo_locationscale.jl:14
[45] include(fname::String)
@ Main ./sysimg.jl:38
[46] top-level scope
@ ~/.julia/dev/AdvancedVI/test/runtests.jl:69
[47] include(fname::String)
@ Main ./sysimg.jl:38
[48] top-level scope
@ none:6
[49] eval
@ ./boot.jl:430 [inlined]
[50] exec_options(opts::Base.JLOptions)
@ Base ./client.jl:296 |
Enzyme fails on
AdvancedVI
due to some LLVM errors. The full error message can be found here. I can try working on an MWE if needed so just let me know if that would be necessary.The text was updated successfully, but these errors were encountered: