Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

SciMLSensitivity + Enzyme + 1.11 issue #2318

Open
yolhan83 opened this issue Feb 22, 2025 · 0 comments
Open

SciMLSensitivity + Enzyme + 1.11 issue #2318

yolhan83 opened this issue Feb 22, 2025 · 0 comments

Comments

@yolhan83
Copy link

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant