Skip to content

SciMLSensitivity + Enzyme + 1.11 issue #2318

@yolhan83

Description

@yolhan83

This code works fine in 1.10 but not in 1.11

using OrdinaryDiffEq
using Enzyme
using SciMLSensitivity

function fun(du,u, p, t)
    du .= -p[1] * t
    nothing
end

function test_fun(p,prob)
    prob = remake(prob, p=p)
    sol = solve(prob,RK4(),save_everystep=false)
    res = sol.u[2]
    return res[1]
end


p = [1.0]
dp = [0.0]
u0 = [2.0]
prob = ODEProblem{true}(fun, u0, (1.0, 2.0), p)
dprob = Enzyme.make_zero(prob)

Enzyme.autodiff(Enzyme.Reverse, test_fun, Duplicated(p, dp),DuplicatedNoNeed(prob,dprob))

using

  [7da242da] Enzyme v0.13.30
  [1dea7af3] OrdinaryDiffEq v6.91.0
  [1ed8b502] SciMLSensitivity v7.74.0

and

Julia Version 1.11.3

error :

ERROR: LoadError: AssertionError: ; Function Attrs: alwaysinline mustprogress
define internal void @diffejulia_test_fun_22477({} addrspace(10)* noundef nonnull align 8 dereferenceable(24) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-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@double, [-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"="140728409013408" "enzymejl_parmtype_ref"="2" %0, {} addrspace(10)* align 8 "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-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@double, [-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"="140728409013408" "enzymejl_parmtype_ref"="2" %"'", {} addrspace(10)* align 8 dereferenceable(40) "enzyme_type"="{[-1]:Pointer, [-1,0]:Integer, [-1,8]:Pointer, [-1,8,0]:Pointer, [-1,8,0,-1]:Float@double, [-1,8,8]:Pointer, [-1,8,8,0]:Integer, [-1,8,8,1]:Integer, [-1,8,8,2]:Integer, [-1,8,8,3]:Integer, [-1,8,8,4]:Integer, [-1,8,8,5]:Integer, [-1,8,8,6]:Integer, [-1,8,8,7]:Integer, [-1,8,8,8]:Pointer, [-1,8,8,8,-1]:Float@double, [-1,8,16]:Integer, [-1,8,17]:Integer, [-1,8,18]:Integer, [-1,8,19]:Integer, [-1,8,20]:Integer, [-1,8,21]:Integer, [-1,8,22]:Integer, [-1,8,23]:Integer, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Pointer, [-1,32,0]:Pointer, [-1,32,0,-1]:Float@double, [-1,32,8]:Pointer, [-1,32,8,0]:Integer, [-1,32,8,1]:Integer, [-1,32,8,2]:Integer, [-1,32,8,3]:Integer, [-1,32,8,4]:Integer, [-1,32,8,5]:Integer, [-1,32,8,6]:Integer, [-1,32,8,7]:Integer, [-1,32,8,8]:Pointer, [-1,32,8,8,-1]:Float@double, [-1,32,16]:Integer, [-1,32,17]:Integer, [-1,32,18]:Integer, [-1,32,19]:Integer, [-1,32,20]:Integer, [-1,32,21]:Integer, [-1,32,22]:Integer, [-1,32,23]:Integer}" "enzymejl_parmtype"="2263774472528" "enzymejl_parmtype_ref"="2" %1, {} addrspace(10)* align 8 "enzyme_type"="{[-1]:Pointer, [-1,0]:Integer, [-1,8]:Pointer, [-1,8,0]:Pointer, [-1,8,0,-1]:Float@double, [-1,8,8]:Pointer, [-1,8,8,0]:Integer, [-1,8,8,1]:Integer, [-1,8,8,2]:Integer, [-1,8,8,3]:Integer, [-1,8,8,4]:Integer, [-1,8,8,5]:Integer, [-1,8,8,6]:Integer, [-1,8,8,7]:Integer, [-1,8,8,8]:Pointer, [-1,8,8,8,-1]:Float@double, [-1,8,16]:Integer, [-1,8,17]:Integer, [-1,8,18]:Integer, [-1,8,19]:Integer, [-1,8,20]:Integer, [-1,8,21]:Integer, [-1,8,22]:Integer, [-1,8,23]:Integer, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Pointer, [-1,32,0]:Pointer, [-1,32,0,-1]:Float@double, [-1,32,8]:Pointer, [-1,32,8,0]:Integer, [-1,32,8,1]:Integer, [-1,32,8,2]:Integer, [-1,32,8,3]:Integer, [-1,32,8,4]:Integer, [-1,32,8,5]:Integer, [-1,32,8,6]:Integer, [-1,32,8,7]:Integer, [-1,32,8,8]:Pointer, [-1,32,8,8,-1]:Float@double, [-1,32,16]:Integer, [-1,32,17]:Integer, [-1,32,18]:Integer, [-1,32,19]:Integer, [-1,32,20]:Integer, [-1,32,21]:Integer, [-1,32,22]:Integer, [-1,32,23]:Integer}" "enzymejl_parmtype"="2263774472528" "enzymejl_parmtype_ref"="2" %"'1", {} addrspace(10)* %differeturn) local_unnamed_addr #23 !dbg !363 {
top:
  %"'de" = alloca {} addrspace(10)*, align 8
  %2 = getelementptr {} addrspace(10)*, {} addrspace(10)** %"'de", i64 0
  store {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)** %2, align 8
  %".sroa.3.0.copyload'de" = alloca double, align 8
  %3 = getelementptr double, double* %".sroa.3.0.copyload'de", i64 0
  store double 0.000000e+00, double* %3, align 8
  %".sroa.011.0.copyload'de" = alloca double, align 8
  %4 = getelementptr double, double* %".sroa.011.0.copyload'de", i64 0
  store double 0.000000e+00, double* %4, align 8
  %pgcstack = call {}*** @julia.get_pgcstack() #37
  %ptls_field22 = getelementptr inbounds {}**, {}*** %pgcstack, i64 2
  %5 = bitcast {}*** %ptls_field22 to i64***
  %ptls_load2324 = load i64**, i64*** %5, align 8, !tbaa !26, !alias.scope !364, !noalias !367
  %6 = getelementptr inbounds i64*, i64** %ptls_load2324, i64 2
  %safepoint = load i64*, i64** %6, align 8, !tbaa !30, !alias.scope !369, !noalias !372
  fence syncscope("singlethread") seq_cst
  call void @julia.safepoint(i64* %safepoint) #37, !dbg !374
  fence syncscope("singlethread") seq_cst
  %"'ipc31" = bitcast {} addrspace(10)* %"'1" to i8 addrspace(10)*, !dbg !375
  %7 = bitcast {} addrspace(10)* %1 to i8 addrspace(10)*, !dbg !375
  %"'ipc32" = addrspacecast i8 addrspace(10)* %"'ipc31" to i8 addrspace(11)*, !dbg !375
  %8 = addrspacecast i8 addrspace(10)* %7 to i8 addrspace(11)*, !dbg !375
  %"'ipg40" = getelementptr inbounds i8, i8 addrspace(11)* %"'ipc32", i64 16, !dbg !375
  %9 = getelementptr inbounds i8, i8 addrspace(11)* %8, i64 16, !dbg !375
  %".sroa.011.0..sroa_idx'ipc" = bitcast i8 addrspace(11)* %"'ipg40" to double addrspace(11)*, !dbg !375
  %.sroa.011.0..sroa_idx = bitcast i8 addrspace(11)* %9 to double addrspace(11)*, !dbg !375
  %.sroa.011.0.copyload = load double, double addrspace(11)* %.sroa.011.0..sroa_idx, align 8, !dbg !375, !tbaa !42, !alias.scope !379, !noalias !382, !enzyme_type !53, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0       
  %".sroa.3.0..sroa_idx13'ipg" = getelementptr inbounds i8, i8 addrspace(11)* %"'ipc32", i64 24, !dbg !375
  %.sroa.3.0..sroa_idx13 = getelementptr inbounds i8, i8 addrspace(11)* %8, i64 24, !dbg !375
  %"'ipc39" = bitcast i8 addrspace(11)* %".sroa.3.0..sroa_idx13'ipg" to double addrspace(11)*, !dbg !375
  %10 = bitcast i8 addrspace(11)* %.sroa.3.0..sroa_idx13 to double addrspace(11)*, !dbg !375
  %.sroa.3.0.copyload = load double, double addrspace(11)* %10, align 8, !dbg !375, !tbaa !42, !alias.scope !379, !noalias !382, !enzyme_type !53, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0
  %"'ipg36" = getelementptr inbounds i8, i8 addrspace(11)* %"'ipc32", i64 8, !dbg !384
  %11 = getelementptr inbounds i8, i8 addrspace(11)* %8, i64 8, !dbg !384
  %"'ipc37" = bitcast i8 addrspace(11)* %"'ipg36" to {} addrspace(10)* addrspace(11)*, !dbg !384
  %12 = bitcast i8 addrspace(11)* %11 to {} addrspace(10)* addrspace(11)*, !dbg !384
  %"'ipl38" = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipc37" unordered, align 8, !dbg !384, !tbaa !67, !alias.scope !391, !noalias !392, !nonnull !0, !dereferenceable !73
  %13 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %12 unordered, align 8, !dbg !384, !tbaa !67, !alias.scope !393, !noalias !394, !nonnull !0, !dereferenceable !73, !align !74, !enzyme_type !75, !enzymejl_source_type_Vector\7BFloat64\7D !0, !enzymejl_byref_MUT_REF !0
  %14 = bitcast {} addrspace(10)* %0 to i8 addrspace(10)*, !dbg !395
  %15 = addrspacecast i8 addrspace(10)* %14 to i8 addrspace(11)*, !dbg !395
  %16 = getelementptr inbounds i8, i8 addrspace(11)* %15, i64 16, !dbg !395
  %17 = bitcast i8 addrspace(11)* %16 to i64 addrspace(11)*, !dbg !395
  %18 = load i64, i64 addrspace(11)* %17, align 8, !dbg !395, !tbaa !87, !alias.scope !398, !noalias !401, !enzyme_type !92, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Int64 !0, !enzyme_inactive !0
  %.not = icmp eq i64 %18, 0, !dbg !403
  %"'ipg33" = getelementptr inbounds i8, i8 addrspace(11)* %"'ipc32", i64 32, !dbg !397
  %19 = getelementptr inbounds i8, i8 addrspace(11)* %8, i64 32, !dbg !397
  %"'ipc34" = bitcast i8 addrspace(11)* %"'ipg33" to {} addrspace(10)* addrspace(11)*, !dbg !397
  %20 = bitcast i8 addrspace(11)* %19 to {} addrspace(10)* addrspace(11)*, !dbg !397
  %"'ipl35" = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipc34" unordered, align 8, !dbg !397, !alias.scope !404, !noalias !405
  %21 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %20 unordered, align 8, !dbg !397, !alias.scope !405, !noalias !404, !enzyme_type !75, !enzymejl_source_type_Vector\7BFloat64\7D !0, !enzymejl_byref_MUT_REF !0       
  %"value_phi'ipse" = select i1 %.not, {} addrspace(10)* %"'ipl35", {} addrspace(10)* %"'", !dbg !397
  %value_phi = select i1 %.not, {} addrspace(10)* %21, {} addrspace(10)* %0, !dbg !397
  %current_task121 = getelementptr inbounds {}**, {}*** %pgcstack, i64 -14
  %22 = bitcast {}*** %current_task121 to {}*
  %.sroa.08.0.copyload = load i8, i8 addrspace(11)* %8, align 8, !dbg !406, !tbaa !42, !alias.scope !379, !noalias !382, !enzyme_type !92, !enzymejl_byref_BITS_VALUE !0, !enzyme_inactive !0, !enzymejl_source_type_Bool !0
  %23 = call noalias nonnull align 1 dereferenceable(1) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,-1]:Integer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %22, i64 noundef 1, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 2263774318352 to {}*) to {} addrspace(10)*)) #38, !dbg !411
  %.sroa.08.0..sroa_cast = bitcast {} addrspace(10)* %23 to i8 addrspace(10)*, !dbg !411, !enzyme_inactive !0
  store i8 %.sroa.08.0.copyload, i8 addrspace(10)* %.sroa.08.0..sroa_cast, align 8, !dbg !411, !tbaa !42, !alias.scope !104, !noalias !412
  %"'mi" = call noalias nonnull align 8 dereferenceable(8) "enzyme_type"="{[-1]:Pointer, [-1,-1]:Float@double}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %22, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 140728410007056 to {}*) to {} addrspace(10)*)) #38, !dbg !411
  %24 = bitcast {} addrspace(10)* %"'mi" to i8 addrspace(10)*, !dbg !411
  call void @llvm.memset.p10i8.i64(i8 addrspace(10)* nonnull dereferenceable(8) dereferenceable_or_null(8) %24, i8 0, i64 8, i1 false), !dbg !411
  %25 = call noalias nonnull align 8 dereferenceable(8) "enzyme_type"="{[-1]:Pointer, [-1,-1]:Float@double}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %22, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 140728464191792 to {}*) to {} addrspace(10)*)) #38, !dbg !411
  %"'ipc30" = bitcast {} addrspace(10)* %"'mi" to double addrspace(10)*, !dbg !411
  %26 = bitcast {} addrspace(10)* %25 to double addrspace(10)*, !dbg !411
  store double %.sroa.011.0.copyload, double addrspace(10)* %26, align 8, !dbg !411, !tbaa !105, !alias.scope !415, !noalias !418
  %27 = call {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)*, {} addrspace(10)*, ...) @julia.call({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @ijl_apply_generic, {} addrspace(10)* @ejl_enz_runtime_generic_augfwd, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263776425040 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_enz_val_false, {} addrspace(10)* @ejl_enz_val_1, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263954235256 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263954164208 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140728899777040 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* %1, {} addrspace(10)* %"'1", {} addrspace(10)* %23, {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140728428916896 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* %0, {} addrspace(10)* %"'", {} addrspace(10)* %25, {} addrspace(10)* %"'mi", {} addrspace(10)* %13, {} addrspace(10)* %"'ipl38", {} addrspace(10)* %value_phi, {} addrspace(10)* %"value_phi'ipse"), !dbg !411
  %28 = addrspacecast {} addrspace(10)* %27 to {} addrspace(11)*, !dbg !411
  %29 = bitcast {} addrspace(11)* %28 to [3 x {} addrspace(10)*] addrspace(11)*, !dbg !411
  %30 = getelementptr inbounds [3 x {} addrspace(10)*], [3 x {} addrspace(10)*] addrspace(11)* %29, i64 0, i64 1, !dbg !411
  %31 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %30, align 8, !dbg !411
  %32 = getelementptr inbounds [3 x {} addrspace(10)*], [3 x {} addrspace(10)*] addrspace(11)* %29, i64 0, i64 2, !dbg !411
  %33 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %32, align 8, !dbg !411
  %34 = getelementptr inbounds [3 x {} addrspace(10)*], [3 x {} addrspace(10)*] addrspace(11)* %29, i64 0, i64 0, !dbg !411
  %35 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %34, align 8, !dbg !411
  %"'ipc24" = bitcast {} addrspace(10)* %31 to [2 x {} addrspace(10)*] addrspace(10)*, !dbg !420
  %36 = bitcast {} addrspace(10)* %35 to [2 x {} addrspace(10)*] addrspace(10)*, !dbg !420
  %"'ipc25" = addrspacecast [2 x {} addrspace(10)*] addrspace(10)* %"'ipc24" to [2 x {} addrspace(10)*] addrspace(11)*, !dbg !420
  %37 = addrspacecast [2 x {} addrspace(10)*] addrspace(10)* %36 to [2 x {} addrspace(10)*] addrspace(11)*, !dbg !420
  %"'ipc27" = bitcast {} addrspace(10)* %31 to {} addrspace(10)* addrspace(10)*, !dbg !420
  %38 = bitcast {} addrspace(10)* %35 to {} addrspace(10)* addrspace(10)*, !dbg !420
  %"'ipc28" = addrspacecast {} addrspace(10)* addrspace(10)* %"'ipc27" to {} addrspace(10)* addrspace(11)*, !dbg !420
  %39 = addrspacecast {} addrspace(10)* addrspace(10)* %38 to {} addrspace(10)* addrspace(11)*, !dbg !420
  %"'ipl29" = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipc28" unordered, align 8, !dbg !420, !tbaa !105, !alias.scope !422, !noalias !425, !nonnull !0, !dereferenceable !73
  %40 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %39 unordered, align 8, !dbg !420, !tbaa !105, !alias.scope !427, !noalias !428, !nonnull !0, !dereferenceable !73, !align !74, !enzyme_type !112
  %"'ipg26" = getelementptr inbounds [2 x {} addrspace(10)*], [2 x {} addrspace(10)*] addrspace(11)* %"'ipc25", i64 0, i64 1, !dbg !421
  %41 = getelementptr inbounds [2 x {} addrspace(10)*], [2 x {} addrspace(10)*] addrspace(11)* %37, i64 0, i64 1, !dbg !421
  %"'ipl" = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipg26" unordered, align 8, !dbg !421, !tbaa !105, !alias.scope !422, !noalias !425, !nonnull !0, !dereferenceable !73
  %42 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %41 unordered, align 8, !dbg !421, !tbaa !105, !alias.scope !427, !noalias !428, !nonnull !0, !dereferenceable !73, !align !74, !enzyme_type !112
  %.sroa.07.0.copyload = load i8, i8 addrspace(11)* %8, align 8, !dbg !429, !tbaa !42, !alias.scope !379, !noalias !382, !enzyme_type !92, !enzymejl_byref_BITS_VALUE !0, !enzyme_inactive !0, !enzymejl_source_type_Bool !0
  %"'mi23" = call noalias nonnull align 8 dereferenceable(40) "enzyme_type"="{[-1]:Pointer, [-1,0]:Integer, [-1,8]:Pointer, [-1,8,0]:Pointer, [-1,8,0,-1]:Float@double, [-1,8,8]:Pointer, [-1,8,8,0]:Integer, [-1,8,8,1]:Integer, [-1,8,8,2]:Integer, [-1,8,8,3]:Integer, [-1,8,8,4]:Integer, [-1,8,8,5]:Integer, [-1,8,8,6]:Integer, [-1,8,8,7]:Integer, [-1,8,8,8]:Pointer, [-1,8,8,8,-1]:Float@double, [-1,8,16]:Integer, [-1,8,17]:Integer, [-1,8,18]:Integer, [-1,8,19]:Integer, [-1,8,20]:Integer, [-1,8,21]:Integer, [-1,8,22]:Integer, [-1,8,23]:Integer, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Pointer, [-1,32,0]:Pointer, [-1,32,0,-1]:Float@double, [-1,32,8]:Pointer, [-1,32,8,0]:Integer, [-1,32,8,1]:Integer, [-1,32,8,2]:Integer, [-1,32,8,3]:Integer, [-1,32,8,4]:Integer, [-1,32,8,5]:Integer, [-1,32,8,6]:Integer, [-1,32,8,7]:Integer, [-1,32,8,8]:Pointer, [-1,32,8,8,-1]:Float@double, [-1,32,16]:Integer, [-1,32,17]:Integer, [-1,32,18]:Integer, [-1,32,19]:Integer, [-1,32,20]:Integer, [-1,32,21]:Integer, [-1,32,22]:Integer, [-1,32,23]:Integer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %22, i64 noundef 40, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 2263774472528 to {}*) to {} addrspace(10)*)) #38, !dbg !431
  %43 = bitcast {} addrspace(10)* %"'mi23" to i8 addrspace(10)*, !dbg !431
  call void @llvm.memset.p10i8.i64(i8 addrspace(10)* nonnull dereferenceable(40) dereferenceable_or_null(40) %43, i8 0, i64 40, i1 false), !dbg !431
  %44 = call noalias nonnull align 8 dereferenceable(40) "enzyme_type"="{[-1]:Pointer, [-1,0]:Integer, [-1,8]:Pointer, [-1,8,0]:Pointer, [-1,8,0,-1]:Float@double, [-1,8,8]:Pointer, [-1,8,8,0]:Integer, [-1,8,8,1]:Integer, [-1,8,8,2]:Integer, [-1,8,8,3]:Integer, [-1,8,8,4]:Integer, [-1,8,8,5]:Integer, [-1,8,8,6]:Integer, [-1,8,8,7]:Integer, [-1,8,8,8]:Pointer, [-1,8,8,8,-1]:Float@double, [-1,8,16]:Integer, [-1,8,17]:Integer, [-1,8,18]:Integer, [-1,8,19]:Integer, [-1,8,20]:Integer, [-1,8,21]:Integer, [-1,8,22]:Integer, [-1,8,23]:Integer, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Pointer, [-1,32,0]:Pointer, [-1,32,0,-1]:Float@double, [-1,32,8]:Pointer, [-1,32,8,0]:Integer, [-1,32,8,1]:Integer, [-1,32,8,2]:Integer, [-1,32,8,3]:Integer, [-1,32,8,4]:Integer, [-1,32,8,5]:Integer, [-1,32,8,6]:Integer, [-1,32,8,7]:Integer, [-1,32,8,8]:Pointer, [-1,32,8,8,-1]:Float@double, [-1,32,16]:Integer, [-1,32,17]:Integer, [-1,32,18]:Integer, [-1,32,19]:Integer, [-1,32,20]:Integer, [-1,32,21]:Integer, [-1,32,22]:Integer, [-1,32,23]:Integer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %22, i64 noundef 40, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 2263774472528 to {}*) to {} addrspace(10)*)) #38, !dbg !431
  %"'ipc19" = bitcast {} addrspace(10)* %"'mi23" to {} addrspace(10)* addrspace(10)*, !dbg !431
  %45 = bitcast {} addrspace(10)* %44 to {} addrspace(10)* addrspace(10)*, !dbg !431
  %"'ipc20" = addrspacecast {} addrspace(10)* addrspace(10)* %"'ipc19" to {} addrspace(10)* addrspace(11)*, !dbg !431
  %46 = addrspacecast {} addrspace(10)* addrspace(10)* %45 to {} addrspace(10)* addrspace(11)*, !dbg !431
  %"'ipg22" = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipc20", i64 1, !dbg !431
  %47 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %46, i64 1, !dbg !431
  store {} addrspace(10)* null, {} addrspace(10)* addrspace(11)* %"'ipg22", align 8, !dbg !431, !tbaa !67, !alias.scope !440, !noalias !443
  store {} addrspace(10)* null, {} addrspace(10)* addrspace(11)* %47, align 8, !dbg !431, !tbaa !67, !alias.scope !445, !noalias !446
  %"'ipg21" = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %"'ipc20", i64 4, !dbg !431
  %48 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %46, i64 4, !dbg !431
  store {} addrspace(10)* null, {} addrspace(10)* addrspace(11)* %"'ipg21", align 8, !dbg !431, !tbaa !67, !alias.scope !440, !noalias !443
  store {} addrspace(10)* null, {} addrspace(10)* addrspace(11)* %48, align 8, !dbg !431, !tbaa !67, !alias.scope !445, !noalias !446
  %"'ipc17" = bitcast {} addrspace(10)* %"'mi23" to { [1 x i8] } addrspace(10)*, !dbg !431
  %49 = bitcast {} addrspace(10)* %44 to { [1 x i8] } addrspace(10)*, !dbg !431
  %"'ipc18" = addrspacecast { [1 x i8] } addrspace(10)* %"'ipc17" to { [1 x i8] } addrspace(11)*, !dbg !431
  %50 = addrspacecast { [1 x i8] } addrspace(10)* %49 to { [1 x i8] } addrspace(11)*, !dbg !431
  %".sroa.06.0..sroa_idx'ipg" = getelementptr inbounds { [1 x i8] }, { [1 x i8] } addrspace(11)* %"'ipc18", i64 0, i32 0, i64 0, !dbg !431
  %.sroa.06.0..sroa_idx = getelementptr inbounds { [1 x i8] }, { [1 x i8] } addrspace(11)* %50, i64 0, i32 0, i64 0, !dbg !431
  store i8 %.sroa.07.0.copyload, i8 addrspace(11)* %".sroa.06.0..sroa_idx'ipg", align 8, !dbg !431, !tbaa !42, !alias.scope !447, !noalias !448
  store i8 %.sroa.07.0.copyload, i8 addrspace(11)* %.sroa.06.0..sroa_idx, align 8, !dbg !431, !tbaa !42, !alias.scope !449, !noalias !450
  %"'ipc" = bitcast {} addrspace(10)* %"'mi23" to i8 addrspace(10)*, !dbg !431
  %51 = bitcast {} addrspace(10)* %44 to i8 addrspace(10)*, !dbg !431
  %"'ipc11" = addrspacecast i8 addrspace(10)* %"'ipc" to i8 addrspace(11)*, !dbg !431
  %52 = addrspacecast i8 addrspace(10)* %51 to i8 addrspace(11)*, !dbg !431
  %"'ipg15" = getelementptr inbounds i8, i8 addrspace(11)* %"'ipc11", i64 8, !dbg !431
  %53 = getelementptr inbounds i8, i8 addrspace(11)* %52, i64 8, !dbg !431
  %"'ipc16" = bitcast i8 addrspace(11)* %"'ipg15" to {} addrspace(10)* addrspace(11)*, !dbg !431
  %54 = bitcast i8 addrspace(11)* %53 to {} addrspace(10)* addrspace(11)*, !dbg !431
  store atomic {} addrspace(10)* %"'ipl29", {} addrspace(10)* addrspace(11)* %"'ipc16" release, align 8, !dbg !431, !tbaa !67, !alias.scope !440, !noalias !443
  store atomic {} addrspace(10)* %40, {} addrspace(10)* addrspace(11)* %54 release, align 8, !dbg !431, !tbaa !67, !alias.scope !445, !noalias !446
  %"'ipg14" = getelementptr inbounds i8, i8 addrspace(11)* %"'ipc11", i64 16, !dbg !431
  %55 = getelementptr inbounds i8, i8 addrspace(11)* %52, i64 16, !dbg !431
  %".sroa.0.0..sroa_idx'ipc" = bitcast i8 addrspace(11)* %"'ipg14" to double addrspace(11)*, !dbg !431
  %.sroa.0.0..sroa_idx = bitcast i8 addrspace(11)* %55 to double addrspace(11)*, !dbg !431
  store double %.sroa.011.0.copyload, double addrspace(11)* %.sroa.0.0..sroa_idx, align 8, !dbg !431, !tbaa !42, !alias.scope !449, !noalias !450
  %".sroa.2.0..sroa_idx5'ipg" = getelementptr inbounds i8, i8 addrspace(11)* %"'ipc11", i64 24, !dbg !431
  %.sroa.2.0..sroa_idx5 = getelementptr inbounds i8, i8 addrspace(11)* %52, i64 24, !dbg !431
  %"'ipc13" = bitcast i8 addrspace(11)* %".sroa.2.0..sroa_idx5'ipg" to double addrspace(11)*, !dbg !431
  %56 = bitcast i8 addrspace(11)* %.sroa.2.0..sroa_idx5 to double addrspace(11)*, !dbg !431
  store double %.sroa.3.0.copyload, double addrspace(11)* %56, align 8, !dbg !431, !tbaa !42, !alias.scope !449, !noalias !450
  %"'ipg" = getelementptr inbounds i8, i8 addrspace(11)* %"'ipc11", i64 32, !dbg !431
  %57 = getelementptr inbounds i8, i8 addrspace(11)* %52, i64 32, !dbg !431
  %"'ipc12" = bitcast i8 addrspace(11)* %"'ipg" to {} addrspace(10)* addrspace(11)*, !dbg !431
  %58 = bitcast i8 addrspace(11)* %57 to {} addrspace(10)* addrspace(11)*, !dbg !431
  store atomic {} addrspace(10)* %"'ipl", {} addrspace(10)* addrspace(11)* %"'ipc12" release, align 8, !dbg !431, !tbaa !67, !alias.scope !440, !noalias !443
  store atomic {} addrspace(10)* %42, {} addrspace(10)* addrspace(11)* %58 release, align 8, !dbg !431, !tbaa !67, !alias.scope !445, !noalias !446
  %_augmented = call fastcc { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* } @augmented_julia__solve_42_22503({} addrspace(10)* align 8 %44, {} addrspace(10)* align 8 %"'mi23"), !dbg !451
  %subcache = extractvalue { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* } %_augmented, 0, !dbg !451
  %59 = extractvalue { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* } %_augmented, 1, !dbg !451
  %"'ac" = extractvalue { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* }, {} addrspace(10)*, {} addrspace(10)* } %_augmented, 2, !dbg !451
  %60 = call {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)*, {} addrspace(10)*, ...) @julia.call({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @ijl_apply_generic, {} addrspace(10)* @ejl_enz_runtime_generic_augfwd, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263774693776 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_enz_val_false, {} addrspace(10)* @ejl_enz_val_1, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263954164216 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263954164208 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140728413918352 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* %59, {} addrspace(10)* %"'ac", {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2264138062032 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing), !dbg !453 
  %61 = addrspacecast {} addrspace(10)* %60 to {} addrspace(11)*, !dbg !453
  %62 = bitcast {} addrspace(11)* %61 to [3 x {} addrspace(10)*] addrspace(11)*, !dbg !453
  %63 = getelementptr inbounds [3 x {} addrspace(10)*], [3 x {} addrspace(10)*] addrspace(11)* %62, i64 0, i64 1, !dbg !453
  %64 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %63, align 8, !dbg !453
  %65 = getelementptr inbounds [3 x {} addrspace(10)*], [3 x {} addrspace(10)*] addrspace(11)* %62, i64 0, i64 2, !dbg !453
  %66 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %65, align 8, !dbg !453
  %67 = getelementptr inbounds [3 x {} addrspace(10)*], [3 x {} addrspace(10)*] addrspace(11)* %62, i64 0, i64 0, !dbg !453
  %68 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %67, align 8, !dbg !453
  %69 = call {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)*, {} addrspace(10)*, ...) @julia.call({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @ijl_apply_generic, {} addrspace(10)* @ejl_enz_runtime_generic_augfwd, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263774693776 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_enz_val_false, {} addrspace(10)* @ejl_enz_val_1, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263954164216 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263954164208 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140728443260464 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* %68, {} addrspace(10)* %64, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2264137372816 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing), !dbg !453    
  %70 = addrspacecast {} addrspace(10)* %69 to {} addrspace(11)*, !dbg !453
  %71 = bitcast {} addrspace(11)* %70 to [3 x {} addrspace(10)*] addrspace(11)*, !dbg !453
  %72 = getelementptr inbounds [3 x {} addrspace(10)*], [3 x {} addrspace(10)*] addrspace(11)* %71, i64 0, i64 1, !dbg !453
  %73 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %72, align 8, !dbg !453
  %74 = getelementptr inbounds [3 x {} addrspace(10)*], [3 x {} addrspace(10)*] addrspace(11)* %71, i64 0, i64 2, !dbg !453
  %75 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %74, align 8, !dbg !453
  %76 = getelementptr inbounds [3 x {} addrspace(10)*], [3 x {} addrspace(10)*] addrspace(11)* %71, i64 0, i64 0, !dbg !453
  %77 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %76, align 8, !dbg !453
  %78 = call {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)*, {} addrspace(10)*, ...) @julia.call({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @ijl_apply_generic, {} addrspace(10)* @ejl_enz_runtime_generic_augfwd, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263774693776 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_enz_val_false, {} addrspace(10)* @ejl_enz_val_1, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263954164216 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263954164208 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140728443260464 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* %77, {} addrspace(10)* %73, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2264137372368 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing), !dbg !454    
  %79 = addrspacecast {} addrspace(10)* %78 to {} addrspace(11)*, !dbg !454
  %80 = bitcast {} addrspace(11)* %79 to [3 x {} addrspace(10)*] addrspace(11)*, !dbg !454
  %81 = getelementptr inbounds [3 x {} addrspace(10)*], [3 x {} addrspace(10)*] addrspace(11)* %80, i64 0, i64 2, !dbg !454
  %82 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %81, align 8, !dbg !454
  %83 = getelementptr inbounds [3 x {} addrspace(10)*], [3 x {} addrspace(10)*] addrspace(11)* %80, i64 0, i64 0, !dbg !454
  %84 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %83, align 8, !dbg !454
  br label %inverttop, !dbg !454

inverttop:                                        ; preds = %top
  store {} addrspace(10)* %differeturn, {} addrspace(10)** %"'de", align 8
  %85 = call {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)*, {} addrspace(10)*, ...) @julia.call({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @ijl_apply_generic, {} addrspace(10)* @ejl_enz_runtime_generic_rev, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263774693776 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_enz_val_false, {} addrspace(10)* @ejl_enz_val_1, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263954164216 to {}*) to {} addrspace(10)*), {} addrspace(10)* %82, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140728443260464 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* %77, {} addrspace(10)* %73, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2264137372368 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing), !dbg !454
  %86 = call {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)*, {} addrspace(10)*, ...) @julia.call({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @ijl_apply_generic, {} addrspace(10)* @ejl_enz_runtime_generic_rev, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263774693776 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_enz_val_false, {} addrspace(10)* @ejl_enz_val_1, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263954164216 to {}*) to {} addrspace(10)*), {} addrspace(10)* %75, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140728443260464 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* %68, {} addrspace(10)* %64, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2264137372816 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing), !dbg !453
  %87 = call {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)*, {} addrspace(10)*, ...) @julia.call({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @ijl_apply_generic, {} addrspace(10)* @ejl_enz_runtime_generic_rev, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263774693776 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_enz_val_false, {} addrspace(10)* @ejl_enz_val_1, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263954164216 to {}*) to {} addrspace(10)*), {} addrspace(10)* %66, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140728413918352 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* %59, {} addrspace(10)* %"'ac", {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2264138062032 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing), !dbg !453
  call fastcc void @diffejulia__solve_42_22503({} addrspace(10)* align 8 %44, {} addrspace(10)* align 8 %"'mi23", { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %subcache), !dbg !451
  %88 = load double, double addrspace(11)* %"'ipc13", align 8, !dbg !431, !tbaa !42, !alias.scope !447, !noalias !448
  store double 0.000000e+00, double addrspace(11)* %"'ipc13", align 8, !dbg !431, !tbaa !42, !alias.scope !447, !noalias !448
  %89 = load double, double* %".sroa.3.0.copyload'de", align 8, !dbg !431
  %90 = fadd fast double %89, %88, !dbg !431
  store double %90, double* %".sroa.3.0.copyload'de", align 8, !dbg !431
  %91 = load double, double addrspace(11)* %".sroa.0.0..sroa_idx'ipc", align 8, !dbg !431, !tbaa !42, !alias.scope !447, !noalias !448
  store double 0.000000e+00, double addrspace(11)* %".sroa.0.0..sroa_idx'ipc", align 8, !dbg !431, !tbaa !42, !alias.scope !447, !noalias !448
  %92 = load double, double* %".sroa.011.0.copyload'de", align 8, !dbg !431
  %93 = fadd fast double %92, %91, !dbg !431
  store double %93, double* %".sroa.011.0.copyload'de", align 8, !dbg !431
  %94 = call {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)*, {} addrspace(10)*, ...) @julia.call({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @ijl_apply_generic, {} addrspace(10)* @ejl_enz_runtime_generic_rev, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263776425040 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_enz_val_false, {} addrspace(10)* @ejl_enz_val_1, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 2263954235256 to {}*) to {} addrspace(10)*), {} addrspace(10)* %33, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140728899777040 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* %1, {} addrspace(10)* %"'1", {} addrspace(10)* %23, {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140728428916896 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* %0, {} addrspace(10)* %"'", {} addrspace(10)* %25, {} addrspace(10)* %"'mi", {} addrspace(10)* %13, {} addrspace(10)* %"'ipl38", {} addrspace(10)* %value_phi, {} addrspace(10)* %"value_phi'ipse"), !dbg !411
  %95 = load double, double addrspace(10)* %"'ipc30", align 8, !dbg !411, !tbaa !105, !alias.scope !455, !noalias !456
  store double 0.000000e+00, double addrspace(10)* %"'ipc30", align 8, !dbg !411, !tbaa !105, !alias.scope !455, !noalias !456
  %96 = load double, double* %".sroa.011.0.copyload'de", align 8, !dbg !411
  %97 = fadd fast double %96, %95, !dbg !411
  store double %97, double* %".sroa.011.0.copyload'de", align 8, !dbg !411
  %98 = load double, double* %".sroa.3.0.copyload'de", align 8, !dbg !375
  store double 0.000000e+00, double* %".sroa.3.0.copyload'de", align 8, !dbg !375
  %99 = load double, double addrspace(11)* %"'ipc39", align 8, !dbg !375, !tbaa !42, !alias.scope !457, !noalias !458
  %100 = fadd fast double %99, %98, !dbg !375
  store double %100, double addrspace(11)* %"'ipc39", align 8, !dbg !375, !tbaa !42, !alias.scope !457, !noalias !458
  %101 = load double, double* %".sroa.011.0.copyload'de", align 8, !dbg !375
  store double 0.000000e+00, double* %".sroa.011.0.copyload'de", align 8, !dbg !375
  %102 = load double, double addrspace(11)* %".sroa.011.0..sroa_idx'ipc", align 8, !dbg !375, !tbaa !42, !alias.scope !457, !noalias !458
  %103 = fadd fast double %102, %101, !dbg !375
  store double %103, double addrspace(11)* %".sroa.011.0..sroa_idx'ipc", align 8, !dbg !375, !tbaa !42, !alias.scope !457, !noalias !458
  fence syncscope("singlethread") seq_cst
  fence syncscope("singlethread") seq_cst
  ret void
}

Base.allocatedinline(actualRetType) != Base.allocatedinline(literal_rt): actualRetType = Any, literal_rt = Float64, rettype = Active{Float64}, sret_union=false, pactualRetType=Any

Stacktrace:
  [1] create_abi_wrapper(enzymefn::LLVM.Function, TT::Type, rettype::Type, actualRetType::Type, Mode::Enzyme.API.CDerivativeMode, augmented::Nothing, width::Int64, returnPrimal::Bool, shadow_init::Bool, world::UInt64, interp::Enzyme.Compiler.Interpreter.EnzymeInterpreter{…})
    @ Enzyme.Compiler C:\Users\yolha\.julia\packages\Enzyme\QsaeA\src\compiler.jl:1944
  [2] enzyme!(job::GPUCompiler.CompilerJob{…}, mod::LLVM.Module, primalf::LLVM.Function, TT::Type, mode::Enzyme.API.CDerivativeMode, width::Int64, parallel::Bool, actualRetType::Type, wrap::Bool, modifiedBetween::NTuple{…} where N, returnPrimal::Bool, expectedTapeType::Type, loweredArgs::Set{…}, boxedArgs::Set{…})
    @ Enzyme.Compiler C:\Users\yolha\.julia\packages\Enzyme\QsaeA\src\compiler.jl:1728
  [3] codegen(output::Symbol, job::GPUCompiler.CompilerJob{…}; libraries::Bool, deferred_codegen::Bool, optimize::Bool, toplevel::Bool, strip::Bool, validate::Bool, only_entry::Bool, parent_job::Nothing)
    @ Enzyme.Compiler C:\Users\yolha\.julia\packages\Enzyme\QsaeA\src\compiler.jl:4550
  [4] codegen
    @ C:\Users\yolha\.julia\packages\Enzyme\QsaeA\src\compiler.jl:3353 [inlined]
  [5] _thunk(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, postopt::Bool)
    @ Enzyme.Compiler C:\Users\yolha\.julia\packages\Enzyme\QsaeA\src\compiler.jl:5410
  [6] _thunk
    @ C:\Users\yolha\.julia\packages\Enzyme\QsaeA\src\compiler.jl:5410 [inlined]
  [7] cached_compilation
    @ C:\Users\yolha\.julia\packages\Enzyme\QsaeA\src\compiler.jl:5462 [inlined]
  [8] thunkbase(mi::Core.MethodInstance, World::UInt64, FA::Type{…}, A::Type{…}, TT::Type, Mode::Enzyme.API.CDerivativeMode, width::Int64, ModifiedBetween::NTuple{…} where N, ReturnPrimal::Bool, ShadowInit::Bool, ABI::Type, ErrIfFuncWritten::Bool, RuntimeActivity::Bool, edges::Vector{…})
    @ Enzyme.Compiler C:\Users\yolha\.julia\packages\Enzyme\QsaeA\src\compiler.jl:5573
  [9] thunk_generator(world::UInt64, source::LineNumberNode, FA::Type, A::Type, TT::Type, Mode::Enzyme.API.CDerivativeMode, Width::Int64, ModifiedBetween::NTuple{…} 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 C:\Users\yolha\.julia\packages\Enzyme\QsaeA\src\compiler.jl:5758
 [10] autodiff
    @ C:\Users\yolha\.julia\packages\Enzyme\QsaeA\src\Enzyme.jl:485 [inlined]
 [11] autodiff
    @ C:\Users\yolha\.julia\packages\Enzyme\QsaeA\src\Enzyme.jl:544 [inlined]
 [12] autodiff(::ReverseMode{false, false, FFIABI, false, false}, ::typeof(test_fun), ::Duplicated{Vector{Float64}}, ::DuplicatedNoNeed{ODEProblem{Vector{…}, Tuple{…}, true, Vector{…}, ODEFunction{…}, @Kwargs{}, SciMLBase.StandardODEProblem}})
    @ Enzyme C:\Users\yolha\.julia\packages\Enzyme\QsaeA\src\Enzyme.jl:516
 [13] top-level scope
    @ C:\Users\yolha\Desktop\juju_tests\littlecod\main.jl:24
 [14] include(fname::String)
    @ Main .\sysimg.jl:38
 [15] top-level scope
    @ REPL[2]:1
in expression starting at C:\Users\yolha\Desktop\juju_tests\littlecod\main.jl:24

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions