In case the IR in the stacktrace is interesting:
entry:
%"'de" = alloca double, align 8
%1 = getelementptr double, double* %"'de", i64 0
store double 0.000000e+00, double* %1, align 8
%2 = call {}*** @julia.get_pgcstack() #12, !dbg !122
%3 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %tapeArg, 13, !dbg !123
br i1 false, label %err.i, label %ok.i, !dbg !123
err.i: ; preds = %entry
unreachable
ok.i: ; preds = %entry
%current_task1.i1 = getelementptr inbounds {}**, {}*** %2, i64 -14
%4 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %tapeArg, 8, !dbg !123
%"'ip_phi" = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %tapeArg, 9, !dbg !123
%5 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %tapeArg, 10, !dbg !123
%6 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %tapeArg, 5, !dbg !123
%"'ip_phi1" = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %tapeArg, 6, !dbg !123
%7 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %tapeArg, 7, !dbg !123
%8 = bitcast {}*** %current_task1.i1 to {}*, !dbg !123
%"'mi" = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %tapeArg, 3, !dbg !123
%9 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %tapeArg, 4, !dbg !123
%10 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %tapeArg, 0, !dbg !123
%"'ip_phi3" = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %tapeArg, 1, !dbg !123
%11 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %tapeArg, 2, !dbg !123
%12 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %tapeArg, 14, !dbg !125
br i1 false, label %err3.i, label %ok4.i, !dbg !125
err3.i: ; preds = %ok.i
unreachable
ok4.i: ; preds = %ok.i
%13 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %tapeArg, 15, !dbg !125
br i1 false, label %err5.i, label %ok6.i, !dbg !125
err5.i: ; preds = %ok4.i
unreachable
ok6.i: ; preds = %ok4.i
%14 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %tapeArg, 16, !dbg !125
br i1 false, label %err7.i, label %julia__23_59836_inner.exit, !dbg !125
err7.i: ; preds = %ok6.i
unreachable
julia__23_59836_inner.exit: ; preds = %ok6.i
%15 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %tapeArg, 11, !dbg !125
%"'ip_phi7" = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* } %tapeArg, 12, !dbg !125
br i1 true, label %ret, label %fail, !dbg !122
ret: ; preds = %julia__23_59836_inner.exit
%"'ipc" = bitcast {} addrspace(10)* %"'ip_phi7" to double addrspace(10)*, !dbg !122
%"'ipc13" = addrspacecast double addrspace(10)* %"'ipc" to double addrspace(11)*, !dbg !122
br label %invertret, !dbg !122
fail: ; preds = %julia__23_59836_inner.exit
unreachable
invertentry: ; preds = %invertok.i
ret void
invertok.i: ; preds = %invertok4.i
%16 = 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 4532595088 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_enz_val_false, {} addrspace(10)* @ejl_enz_val_false, {} addrspace(10)* @ejl_enz_val_1, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 14204484080 to {}*) to {} addrspace(10)*), {} addrspace(10)* %10, {} addrspace(10)* %9, {} addrspace(10)* %"'mi", {} addrspace(10)* %7, {} addrspace(10)* %"'ip_phi1"), !dbg !123
%17 = 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 14148829904 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_enz_val_false, {} addrspace(10)* @ejl_enz_val_false, {} addrspace(10)* @ejl_enz_val_1, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 14204088016 to {}*) to {} addrspace(10)*), {} addrspace(10)* %6, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4758987648 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* %5, {} addrspace(10)* %"'ip_phi", {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4381468264 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing), !dbg !123
%18 = 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 14148830288 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_enz_val_false, {} addrspace(10)* @ejl_enz_val_false, {} addrspace(10)* @ejl_enz_val_1, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 14204088016 to {}*) to {} addrspace(10)*), {} addrspace(10)* %4, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4758987648 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* %3, {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 6284084368 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing), !dbg !123
br label %invertentry
invertok4.i: ; preds = %invertok6.i
br label %invertok.i
invertok6.i: ; preds = %invertjulia__23_59836_inner.exit
br label %invertok4.i
invertjulia__23_59836_inner.exit: ; preds = %invertret
%19 = 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 14148830736 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_enz_val_false, {} addrspace(10)* @ejl_enz_val_false, {} addrspace(10)* @ejl_enz_val_1, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 14204089144 to {}*) to {} addrspace(10)*), {} addrspace(10)* %15, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 6284086232 to {}*) to {} addrspace(10)*), {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* %12, {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* %13, {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* %14, {} addrspace(10)* @ejl_jl_nothing, {} addrspace(10)* %11, {} addrspace(10)* %"'ip_phi3"), !dbg !125
br label %invertok6.i
invertret: ; preds = %ret
store double %differeturn, double* %"'de", align 8
%20 = load double, double* %"'de", align 8, !dbg !122
store double 0.000000e+00, double* %"'de", align 8, !dbg !122
%21 = atomicrmw fadd double addrspace(11)* %"'ipc13", double %20 monotonic, align 8, !dbg !122
br label %invertjulia__23_59836_inner.exit
}
Base.allocatedinline(actualRetType) != Base.allocatedinline(literal_rt): actualRetType = Float64, literal_rt = Any, rettype = Active{Any}, sret_union=false, pactualRetType=Float64
Stacktrace:
[1] create_abi_wrapper(enzymefn::LLVM.Function, TT::Type, rettype::Type, actualRetType::Type, Mode::Enzyme.API.CDerivativeMode, augmented::Ptr{…}, width::Int64, returnPrimal::Bool, shadow_init::Bool, world::UInt64, interp::Enzyme.Compiler.Interpreter.EnzymeInterpreter{…})