Error while computing 2nd order derivatives using Enzyme over ForwardDiff and StaticArrays
- Dominant language
- Julia
- Stars
- 586
- Forks
- 108
- Avg merge
- 1d 5h
- Merged PRs (30d)
- 44
Description
# Description
I'm on Julia 1.11.2, the error persists both on Enzyme v0.13.21 and on `main` (https://github.com/EnzymeAD/Enzyme.jl/commit/1d3b801a550e1688cd7c4fb1639c4d1d029b48a0).
I use ForwardDiff to compute small 3x3 gradients stored in `SMatrix`, and then differentiate the kernel with Enzyme. The error seems to be similar to #2011.
MWE:
```julia
using Enzyme, ForwardDiff, DiffResults, StaticArrays
d_dx(S::StaticMatrix{3,<:Any}) = S[SVector(2, 3), :] - S[SVector(1, 2), :]
F(x) = sum(d_dx(x))
function foo(A, B)
Bl = @SMatrix [B[1] for _ in 1:3, _ in 1:3]
dr = ForwardDiff.gradient!(DiffResults.GradientResult(Bl), F, Bl)
A[1] = DiffResults.value(dr) / sum(DiffResults.gradient(dr))
# A[1] = F(Bl) / sum(ForwardDiff.gradient(F, Bl)) # this works
return
end
A = zeros(1)
B = zeros(1)
dA = zeros(1)
dB = zeros(1)
foo(A, B)
Enzyme.autodiff(Enzyme.Reverse, Const(foo), Const, Duplicated(A, dA), Duplicated(B, dB)) # error
```
Running this code yields:
Error log
```julia
ERROR: Enzyme cannot deduce type
Current scope:
; Function Attrs: mustprogress willreturn
define void @preprocess_julia_foo_28711({} 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"="139820028775248" "enzymejl_parmtype_ref"="2" %0, {} 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"="139820028775248" "enzymejl_parmtype_ref"="2" %1) local_unnamed_addr #11 !dbg !164 {
top:
%2 = alloca [1 x [9 x { double, [1 x [9 x double]] }]], align 8
%3 = alloca [1 x [6 x { double, [1 x [9 x double]] }]], align 8, !enzymejl_allocart !64, !enzyme_type !65, !enzymejl_source_type_SMatrix\7B2\2C\203\2C\20ForwardDiff.Dual\7BForwardDiff.Tag\7Btypeof\28F\29\2C\20Float64\7D\2C\20Float64\2C\209\7D\2C\206\7D !0, !enzymejl_byref_MUT_REF !0
%4 = alloca [1 x i64], align 8
%5 = alloca [1 x i64], align 8
%pgcstack = call {}*** @julia.get_pgcstack() #15
%ptls_field49 = getelementptr inbounds {}**, {}*** %pgcstack, i64 2
%6 = bitcast {}*** %ptls_field49 to i64***
%ptls_load5051 = load i64**, i64*** %6, align 8, !tbaa !10
%7 = getelementptr inbounds i64*, i64** %ptls_load5051, i64 2
%safepoint = load i64*, i64** %7, align 8, !tbaa !14
fence syncscope("singlethread") seq_cst
call void @julia.safepoint(i64* %safepoint) #15, !dbg !165
fence syncscope("singlethread") seq_cst
%8 = bitcast {} addrspace(10)* %1 to i8 addrspace(10)*, !dbg !166
%9 = addrspacecast i8 addrspace(10)* %8 to i8 addrspace(11)*, !dbg !166
%10 = getelementptr inbounds i8, i8 addrspace(11)* %9, i64 16, !dbg !166
%11 = bitcast i8 addrspace(11)* %10 to i64 addrspace(11)*, !dbg !166
%12 = load i64, i64 addrspace(11)* %11, align 8, !dbg !166, !tbaa !79, !alias.scope !82, !noalias !83, !enzyme_inactive !0, !enzyme_type !84, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Int64 !0
%.not = icmp eq i64 %12, 0, !dbg !167
br i1 %.not, label %L12, label %L15, !dbg !167
L12: ; preds = %top
%13 = getelementptr inbounds [1 x i64], [1 x i64]* %5, i64 0, i64 0, !dbg !167
store i64 1, i64* %13, align 8, !dbg !167, !tbaa !86, !alias.scope !88, !noalias !171
%14 = addrspacecast [1 x i64]* %5 to [1 x i64] addrspace(11)*, !dbg !167
call fastcc void @julia_throw_boundserror_28728({} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(24) %1, [1 x i64] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(8) %14) #16, !dbg !167
unreachable, !dbg !167
L15: ; preds = %top
%15 = bitcast {} addrspace(10)* %1 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !174
%16 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %15 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !174
%17 = bitcast {} addrspace(10)* %1 to {} addrspace(10)** addrspace(10)*, !dbg !174
%18 = addrspacecast {} addrspace(10)** addrspace(10)* %17 to {} addrspace(10)** addrspace(11)*, !dbg !174
%19 = load {} addrspace(10)**, {} addrspace(10)** addrspace(11)* %18, align 8, !dbg !174, !tbaa !91, !alias.scope !82, !noalias !83, !enzyme_type !65, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0, !enzyme_nocache !0
%20 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %16, i64 0, i32 1, !dbg !174
%21 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %20, align 8, !dbg !174, !tbaa !91, !alias.scope !82, !noalias !83, !dereferenceable_or_null !93, !align !94, !enzyme_type !95, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Memory\7BFloat64\7D !0
%22 = call "enzyme_type"="{[-1]:Pointer, [-1,-1]:Float@double}" {} addrspace(10)* addrspace(13)* @julia.gc_loaded({} addrspace(10)* noundef %21, {} addrspace(10)** noundef %19) #15, !dbg !174
%23 = bitcast {} addrspace(10)* addrspace(13)* %22 to double addrspace(13)*, !dbg !174
%24 = load double, double addrspace(13)* %23, align 8, !dbg !174, !tbaa !97, !alias.scope !100, !noalias !101, !enzyme_type !47, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0
%25 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 0, i32 0, !dbg !175
store double %24, double* %25, align 8, !dbg !175, !tbaa !86, !alias.scope !88, !noalias !171
%26 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 0, i32 1, !dbg !175
%27 = bitcast [1 x [9 x double]]* %26 to i8*, !dbg !175
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(72) %27, i8* noundef nonnull align 8 dereferenceable(72) bitcast ([1 x [9 x double]]* @_j_const_1 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !175, !tbaa !118, !alias.scope !119, !noalias !184
%28 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 1, i32 0, !dbg !175
store double %24, double* %28, align 8, !dbg !175, !tbaa !86, !alias.scope !88, !noalias !171
%29 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 1, i32 1, !dbg !175
%30 = bitcast [1 x [9 x double]]* %29 to i8*, !dbg !175
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(72) %30, i8* noundef nonnull align 8 dereferenceable(72) bitcast ([1 x [9 x double]]* @_j_const_2 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !175, !tbaa !118, !alias.scope !119, !noalias !184
%31 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 2, i32 0, !dbg !175
store double %24, double* %31, align 8, !dbg !175, !tbaa !86, !alias.scope !88, !noalias !171
%32 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 2, i32 1, !dbg !175
%33 = bitcast [1 x [9 x double]]* %32 to i8*, !dbg !175
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(72) %33, i8* noundef nonnull align 8 dereferenceable(72) bitcast ([1 x [9 x double]]* @_j_const_3 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !175, !tbaa !118, !alias.scope !119, !noalias !184
%34 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 3, i32 0, !dbg !175
store double %24, double* %34, align 8, !dbg !175, !tbaa !86, !alias.scope !88, !noalias !171
%35 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 3, i32 1, !dbg !175
%36 = bitcast [1 x [9 x double]]* %35 to i8*, !dbg !175
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(72) %36, i8* noundef nonnull align 8 dereferenceable(72) bitcast ([1 x [9 x double]]* @_j_const_4 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !175, !tbaa !118, !alias.scope !119, !noalias !184
%37 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 4, i32 0, !dbg !175
store double %24, double* %37, align 8, !dbg !175, !tbaa !86, !alias.scope !88, !noalias !171
%38 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 4, i32 1, !dbg !175
%39 = bitcast [1 x [9 x double]]* %38 to i8*, !dbg !175
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(72) %39, i8* noundef nonnull align 8 dereferenceable(72) bitcast ([1 x [9 x double]]* @_j_const_5 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !175, !tbaa !118, !alias.scope !119, !noalias !184
%40 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 5, i32 0, !dbg !175
store double %24, double* %40, align 8, !dbg !175, !tbaa !86, !alias.scope !88, !noalias !171
%41 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 5, i32 1, !dbg !175
%42 = bitcast [1 x [9 x double]]* %41 to i8*, !dbg !175
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(72) %42, i8* noundef nonnull align 8 dereferenceable(72) bitcast ([1 x [9 x double]]* @_j_const_6 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !175, !tbaa !118, !alias.scope !119, !noalias !184
%43 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 6, i32 0, !dbg !175
store double %24, double* %43, align 8, !dbg !175, !tbaa !86, !alias.scope !88, !noalias !171
%44 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 6, i32 1, !dbg !175
%45 = bitcast [1 x [9 x double]]* %44 to i8*, !dbg !175
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(72) %45, i8* noundef nonnull align 8 dereferenceable(72) bitcast ([1 x [9 x double]]* @_j_const_7 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !175, !tbaa !118, !alias.scope !119, !noalias !184
%46 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 7, i32 0, !dbg !175
store double %24, double* %46, align 8, !dbg !175, !tbaa !86, !alias.scope !88, !noalias !171
%47 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 7, i32 1, !dbg !175
%48 = bitcast [1 x [9 x double]]* %47 to i8*, !dbg !175
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(72) %48, i8* noundef nonnull align 8 dereferenceable(72) bitcast ([1 x [9 x double]]* @_j_const_8 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !175, !tbaa !118, !alias.scope !119, !noalias !184
%49 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 8, i32 0, !dbg !175
store double %24, double* %49, align 8, !dbg !175, !tbaa !86, !alias.scope !88, !noalias !171
%50 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 8, i32 1, !dbg !175
%51 = bitcast [1 x [9 x double]]* %50 to i8*, !dbg !175
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(72) %51, i8* noundef nonnull align 8 dereferenceable(72) bitcast ([1 x [9 x double]]* @_j_const_9 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !175, !tbaa !118, !alias.scope !119, !noalias !184
%52 = addrspacecast [1 x [9 x { double, [1 x [9 x double]] }]]* %2 to [1 x [9 x { double, [1 x [9 x double]] }]] addrspace(11)*, !dbg !185
call fastcc void @julia_d_dx_28735([1 x [6 x { double, [1 x [9 x double]] }]]* noalias nocapture nofree noundef nonnull writeonly sret([1 x [6 x { double, [1 x [9 x double]] }]]) align 8 dereferenceable(480) %3, [1 x [9 x { double, [1 x [9 x double]] }]] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(720) %52) #15, !dbg !185
%53 = bitcast {} addrspace(10)* %0 to i8 addrspace(10)*, !dbg !186
%54 = addrspacecast i8 addrspace(10)* %53 to i8 addrspace(11)*, !dbg !186
%55 = getelementptr inbounds i8, i8 addrspace(11)* %54, i64 16, !dbg !186
%56 = bitcast i8 addrspace(11)* %55 to i64 addrspace(11)*, !dbg !186
%57 = load i64, i64 addrspace(11)* %56, align 8, !dbg !186, !tbaa !79, !alias.scope !82, !noalias !83, !enzyme_inactive !0, !enzyme_type !84, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Int64 !0
%.not52 = icmp eq i64 %57, 0, !dbg !189
br i1 %.not52, label %L236, label %L239, !dbg !187
L236: ; preds = %L15
%58 = getelementptr inbounds [1 x i64], [1 x i64]* %4, i64 0, i64 0, !dbg !187
store i64 1, i64* %58, align 8, !dbg !187, !tbaa !86, !alias.scope !88, !noalias !171
%59 = addrspacecast [1 x i64]* %4 to [1 x i64] addrspace(11)*, !dbg !187
call fastcc void @julia_throw_boundserror_28728({} addrspace(10)* nofree noundef nonnull align 8 dereferenceable(24) %0, [1 x i64] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(8) %59) #16, !dbg !187
unreachable, !dbg !187
L239: ; preds = %L15
%60 = getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]* %3, i64 0, i64 0, i64 0, i32 0, !dbg !190
%61 = load double, double* %60, align 8, !dbg !199, !tbaa !86, !alias.scope !88, !noalias !152, !enzyme_type !47, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0
%62 = getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]* %3, i64 0, i64 0, i64 1, i32 0, !dbg !190
%63 = load double, double* %62, align 8, !dbg !199, !tbaa !86, !alias.scope !88, !noalias !152, !enzyme_type !47, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0
%64 = fadd double %61, %63, !dbg !199
%65 = getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]* %3, i64 0, i64 0, i64 2, i32 0, !dbg !190
%66 = load double, double* %65, align 8, !dbg !199, !tbaa !86, !alias.scope !88, !noalias !152, !enzyme_type !47, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0
%67 = fadd double %64, %66, !dbg !199
%68 = getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]* %3, i64 0, i64 0, i64 3, i32 0, !dbg !190
%69 = load double, double* %68, align 8, !dbg !199, !tbaa !86, !alias.scope !88, !noalias !152, !enzyme_type !47, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0
%70 = fadd double %67, %69, !dbg !199
%71 = getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]* %3, i64 0, i64 0, i64 4, i32 0, !dbg !190
%72 = load double, double* %71, align 8, !dbg !199, !tbaa !86, !alias.scope !88, !noalias !152, !enzyme_type !47, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0
%73 = fadd double %70, %72, !dbg !199
%74 = getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]* %3, i64 0, i64 0, i64 5, i32 0, !dbg !190
%75 = load double, double* %74, align 8, !dbg !199, !tbaa !86, !alias.scope !88, !noalias !152, !enzyme_type !47, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0
%76 = fadd double %73, %75, !dbg !199
%77 = fdiv double %76, 0.000000e+00, !dbg !201
%78 = bitcast {} addrspace(10)* %0 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !202
%79 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %78 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !202
%80 = bitcast {} addrspace(10)* %0 to {} addrspace(10)** addrspace(10)*, !dbg !202
%81 = addrspacecast {} addrspace(10)** addrspace(10)* %80 to {} addrspace(10)** addrspace(11)*, !dbg !202
%82 = load {} addrspace(10)**, {} addrspace(10)** addrspace(11)* %81, align 8, !dbg !202, !tbaa !91, !alias.scope !82, !noalias !83, !enzyme_type !65, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0, !enzyme_nocache !0
%83 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %79, i64 0, i32 1, !dbg !202
%84 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %83, align 8, !dbg !202, !tbaa !91, !alias.scope !82, !noalias !83, !dereferenceable_or_null !93, !align !94, !enzyme_type !95, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Memory\7BFloat64\7D !0
%85 = call "enzyme_type"="{[-1]:Pointer, [-1,-1]:Float@double}" {} addrspace(10)* addrspace(13)* @julia.gc_loaded({} addrspace(10)* noundef %84, {} addrspace(10)** noundef %82) #15, !dbg !203
%86 = bitcast {} addrspace(10)* addrspace(13)* %85 to double addrspace(13)*, !dbg !203
store double %77, double addrspace(13)* %86, align 8, !dbg !203, !tbaa !97, !alias.scope !100, !noalias !204
ret void, !dbg !205
}
Type analysis state:
%13 = getelementptr inbounds [1 x i64], [1 x i64]* %5, i64 0, i64 0, !dbg !24: {}, intvals: {}
%32 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 2, i32 1, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double}, intvals: {}
%64 = fadd double %61, %63, !dbg !114: {[-1]:Float@double}, intvals: {}
%80 = bitcast {} addrspace(10)* %0 to {} addrspace(10)** addrspace(10)*, !dbg !121: {[-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}, intvals: {}
%2 = alloca [1 x [9 x { double, [1 x [9 x double]] }]], align 8: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double, [-1,72]:Float@double, [-1,80]:Float@double, [-1,88]:Float@double, [-1,96]:Float@double, [-1,104]:Float@double, [-1,112]:Float@double, [-1,120]:Float@double, [-1,128]:Float@double, [-1,136]:Float@double, [-1,144]:Float@double, [-1,152]:Float@double, [-1,160]:Float@double, [-1,168]:Float@double, [-1,176]:Float@double, [-1,184]:Float@double, [-1,192]:Float@double, [-1,200]:Float@double, [-1,208]:Float@double, [-1,216]:Float@double, [-1,224]:Float@double, [-1,232]:Float@double, [-1,240]:Float@double, [-1,248]:Float@double, [-1,256]:Float@double, [-1,264]:Float@double, [-1,272]:Float@double, [-1,280]:Float@double, [-1,288]:Float@double, [-1,296]:Float@double, [-1,304]:Float@double, [-1,312]:Float@double, [-1,320]:Float@double, [-1,328]:Float@double, [-1,336]:Float@double, [-1,344]:Float@double, [-1,352]:Float@double, [-1,360]:Float@double, [-1,368]:Float@double, [-1,376]:Float@double, [-1,384]:Float@double, [-1,392]:Float@double, [-1,400]:Float@double, [-1,408]:Float@double, [-1,416]:Float@double, [-1,424]:Float@double, [-1,432]:Float@double, [-1,440]:Float@double, [-1,448]:Float@double, [-1,456]:Float@double, [-1,464]:Float@double, [-1,472]:Float@double, [-1,480]:Float@double, [-1,488]:Float@double, [-1,496]:Float@double}, intvals: {}
%65 = getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]* %3, i64 0, i64 0, i64 2, i32 0, !dbg !94: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%27 = bitcast [1 x [9 x double]]* %26 to i8*, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double}, intvals: {}
i64 0: {[-1]:Anything}, intvals: {0,}
%9 = addrspacecast i8 addrspace(10)* %8 to i8 addrspace(11)*, !dbg !21: {[-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}, intvals: {}
[1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00]]: {[-1]:Anything}, intvals: {}
i8* bitcast ([1 x [9 x double]]* @_j_const_7 to i8*): {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%52 = addrspacecast [1 x [9 x { double, [1 x [9 x double]] }]]* %2 to [1 x [9 x { double, [1 x [9 x double]] }]] addrspace(11)*, !dbg !84: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double, [-1,72]:Float@double, [-1,80]:Float@double, [-1,88]:Float@double, [-1,96]:Float@double, [-1,104]:Float@double, [-1,112]:Float@double, [-1,120]:Float@double, [-1,128]:Float@double, [-1,136]:Float@double, [-1,144]:Float@double, [-1,152]:Float@double, [-1,160]:Float@double, [-1,168]:Float@double, [-1,176]:Float@double, [-1,184]:Float@double, [-1,192]:Float@double, [-1,200]:Float@double, [-1,208]:Float@double, [-1,216]:Float@double, [-1,224]:Float@double, [-1,232]:Float@double, [-1,240]:Float@double, [-1,248]:Float@double, [-1,256]:Float@double, [-1,264]:Float@double, [-1,272]:Float@double, [-1,280]:Float@double, [-1,288]:Float@double, [-1,296]:Float@double, [-1,304]:Float@double, [-1,312]:Float@double, [-1,320]:Float@double, [-1,328]:Float@double, [-1,336]:Float@double, [-1,344]:Float@double, [-1,352]:Float@double, [-1,360]:Float@double, [-1,368]:Float@double, [-1,376]:Float@double, [-1,384]:Float@double, [-1,392]:Float@double, [-1,400]:Float@double, [-1,408]:Float@double, [-1,416]:Float@double, [-1,424]:Float@double, [-1,432]:Float@double, [-1,440]:Float@double, [-1,448]:Float@double, [-1,456]:Float@double, [-1,464]:Float@double, [-1,472]:Float@double, [-1,480]:Float@double, [-1,488]:Float@double, [-1,496]:Float@double}, intvals: {}
%34 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 3, i32 0, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%53 = bitcast {} addrspace(10)* %0 to i8 addrspace(10)*, !dbg !86: {[-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}, intvals: {}
double 1.000000e+00: {[-1]:Float@double}, intvals: {}
[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00]: {[-1]:Anything}, intvals: {}
{} addrspace(10)* %0: {[-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}, intvals: {}
{} addrspace(10)* %1: {[-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}, intvals: {}
%30 = bitcast [1 x [9 x double]]* %29 to i8*, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double}, intvals: {}
%ptls_field49 = getelementptr inbounds {}**, {}*** %pgcstack, i64 2: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%49 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 8, i32 0, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
[1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00]]: {[-1]:Anything}, intvals: {}
[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]: {[-1]:Anything}, intvals: {}
%70 = fadd double %67, %69, !dbg !114: {[-1]:Float@double}, intvals: {}
%84 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %83, align 8, !dbg !121, !tbaa !52, !alias.scope !35, !noalias !38, !dereferenceable_or_null !54, !align !55, !enzyme_type !56, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Memory\7BFloat64\7D !0: {[-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@double}, intvals: {}
%61 = load double, double* %60, align 8, !dbg !114, !tbaa !45, !alias.scope !47, !noalias !118, !enzyme_type !63, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0: {[-1]:Float@double}, intvals: {}
%25 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 0, i32 0, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%16 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %15 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !51: {[-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}, intvals: {}
%28 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 1, i32 0, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%74 = getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]* %3, i64 0, i64 0, i64 5, i32 0, !dbg !94: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
@_j_const_3 = private unnamed_addr constant [1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]], align 8: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
i8* bitcast ([1 x [9 x double]]* @_j_const_3 to i8*): {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%29 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 1, i32 1, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double}, intvals: {}
%6 = bitcast {}*** %ptls_field49 to i64***: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%62 = getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]* %3, i64 0, i64 0, i64 1, i32 0, !dbg !94: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%14 = addrspacecast [1 x i64]* %5 to [1 x i64] addrspace(11)*, !dbg !24: {[-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}, intvals: {}
%63 = load double, double* %62, align 8, !dbg !114, !tbaa !45, !alias.scope !47, !noalias !118, !enzyme_type !63, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0: {[-1]:Float@double}, intvals: {}
%58 = getelementptr inbounds [1 x i64], [1 x i64]* %4, i64 0, i64 0, !dbg !87: {}, intvals: {}
[1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]]: {[-1]:Anything}, intvals: {}
@_j_const_4 = private unnamed_addr constant [1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]], align 8: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
i8* bitcast ([1 x [9 x double]]* @_j_const_4 to i8*): {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%68 = getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]* %3, i64 0, i64 0, i64 3, i32 0, !dbg !94: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
[1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]]: {[-1]:Anything}, intvals: {}
%23 = bitcast {} addrspace(10)* addrspace(13)* %22 to double addrspace(13)*, !dbg !51: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%31 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 2, i32 0, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%11 = bitcast i8 addrspace(11)* %10 to i64 addrspace(11)*, !dbg !21: {[-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}, intvals: {}
%60 = getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]* %3, i64 0, i64 0, i64 0, i32 0, !dbg !94: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%71 = getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]* %3, i64 0, i64 0, i64 4, i32 0, !dbg !94: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
[1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]]: {[-1]:Anything}, intvals: {}
%43 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 6, i32 0, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%78 = bitcast {} addrspace(10)* %0 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !121: {[-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}, intvals: {}
%pgcstack = call {}*** @julia.get_pgcstack() #15: {[-1]:Pointer, [-1,16]:Pointer}, intvals: {}
%57 = load i64, i64 addrspace(11)* %56, align 8, !dbg !86, !tbaa !32, !alias.scope !35, !noalias !38, !enzyme_inactive !0, !enzyme_type !43, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Int64 !0: {[-1]:Integer}, intvals: {}
@_j_const_8 = private unnamed_addr constant [1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00]], align 8: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%72 = load double, double* %71, align 8, !dbg !114, !tbaa !45, !alias.scope !47, !noalias !118, !enzyme_type !63, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0: {[-1]:Float@double}, intvals: {}
i8* bitcast ([1 x [9 x double]]* @_j_const_1 to i8*): {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%41 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 5, i32 1, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double}, intvals: {}
%40 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 5, i32 0, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
@_j_const_6 = private unnamed_addr constant [1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]], align 8: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%35 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 3, i32 1, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double}, intvals: {}
%77 = fdiv double %76, 0.000000e+00, !dbg !119: {[-1]:Float@double}, intvals: {}
%12 = load i64, i64 addrspace(11)* %11, align 8, !dbg !21, !tbaa !32, !alias.scope !35, !noalias !38, !enzyme_inactive !0, !enzyme_type !43, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Int64 !0: {[-1]:Integer}, intvals: {}
[1 x [9 x double]] [[9 x double] [double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]]: {[-1]:Anything}, intvals: {}
@_j_const_1 = private unnamed_addr constant [1 x [9 x double]] [[9 x double] [double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]], align 8: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%37 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 4, i32 0, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%ptls_load5051 = load i64**, i64*** %6, align 8, !tbaa !14: {[-1]:Pointer}, intvals: {}
%83 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %79, i64 0, i32 1, !dbg !121: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Integer, [-1,0,1]:Integer, [-1,0,2]:Integer, [-1,0,3]:Integer, [-1,0,4]:Integer, [-1,0,5]:Integer, [-1,0,6]:Integer, [-1,0,7]:Integer, [-1,0,8]:Pointer, [-1,0,8,-1]:Float@double}, intvals: {}
%19 = load {} addrspace(10)**, {} addrspace(10)** addrspace(11)* %18, align 8, !dbg !51, !tbaa !52, !alias.scope !35, !noalias !38, !enzyme_type !11, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0, !enzyme_nocache !0: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%24 = load double, double addrspace(13)* %23, align 8, !dbg !51, !tbaa !58, !alias.scope !61, !noalias !62, !enzyme_type !63, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0: {[-1]:Float@double}, intvals: {}
%20 = getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)* %16, i64 0, i32 1, !dbg !51: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Integer, [-1,0,1]:Integer, [-1,0,2]:Integer, [-1,0,3]:Integer, [-1,0,4]:Integer, [-1,0,5]:Integer, [-1,0,6]:Integer, [-1,0,7]:Integer, [-1,0,8]:Pointer, [-1,0,8,-1]:Float@double}, intvals: {}
%55 = getelementptr inbounds i8, i8 addrspace(11)* %54, i64 16, !dbg !86: {[-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}, intvals: {}
%38 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 4, i32 1, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double}, intvals: {}
%5 = alloca [1 x i64], align 8: {[-1]:Pointer}, intvals: {}
i8* bitcast ([1 x [9 x double]]* @_j_const_9 to i8*): {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%.not52 = icmp eq i64 %57, 0, !dbg !91: {[-1]:Integer}, intvals: {}
%75 = load double, double* %74, align 8, !dbg !114, !tbaa !45, !alias.scope !47, !noalias !118, !enzyme_type !63, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0: {[-1]:Float@double}, intvals: {}
[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]: {[-1]:Anything}, intvals: {}
[9 x double] [double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]: {[-1]:Anything}, intvals: {}
call fastcc void @julia_d_dx_28735([1 x [6 x { double, [1 x [9 x double]] }]]* noalias nocapture nofree noundef nonnull writeonly sret([1 x [6 x { double, [1 x [9 x double]] }]]) align 8 dereferenceable(480) %3, [1 x [9 x { double, [1 x [9 x double]] }]] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(720) %52) #15, !dbg !84: {}, intvals: {}
%22 = call "enzyme_type"="{[-1]:Pointer, [-1,-1]:Float@double}" {} addrspace(10)* addrspace(13)* @julia.gc_loaded({} addrspace(10)* noundef %21, {} addrspace(10)** noundef %19) #15, !dbg !51: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%79 = addrspacecast { i8*, {} addrspace(10)* } addrspace(10)* %78 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !121: {[-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}, intvals: {}
%69 = load double, double* %68, align 8, !dbg !114, !tbaa !45, !alias.scope !47, !noalias !118, !enzyme_type !63, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0: {[-1]:Float@double}, intvals: {}
%.not = icmp eq i64 %12, 0, !dbg !24: {[-1]:Integer}, intvals: {}
%36 = bitcast [1 x [9 x double]]* %35 to i8*, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double}, intvals: {}
%66 = load double, double* %65, align 8, !dbg !114, !tbaa !45, !alias.scope !47, !noalias !118, !enzyme_type !63, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0: {[-1]:Float@double}, intvals: {}
[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00]: {[-1]:Anything}, intvals: {}
[9 x double] [double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]: {[-1]:Anything}, intvals: {}
@_j_const_7 = private unnamed_addr constant [1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00]], align 8: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%10 = getelementptr inbounds i8, i8 addrspace(11)* %9, i64 16, !dbg !21: {[-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}, intvals: {}
@_j_const_5 = private unnamed_addr constant [1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]], align 8: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
i8* bitcast ([1 x [9 x double]]* @_j_const_5 to i8*): {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%18 = addrspacecast {} addrspace(10)** addrspace(10)* %17 to {} addrspace(10)** addrspace(11)*, !dbg !51: {[-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}, intvals: {}
%67 = fadd double %64, %66, !dbg !114: {[-1]:Float@double}, intvals: {}
%86 = bitcast {} addrspace(10)* addrspace(13)* %85 to double addrspace(13)*, !dbg !122: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%59 = addrspacecast [1 x i64]* %4 to [1 x i64] addrspace(11)*, !dbg !87: {[-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}, intvals: {}
%7 = getelementptr inbounds i64*, i64** %ptls_load5051, i64 2: {[-1]:Pointer}, intvals: {}
%3 = alloca [1 x [6 x { double, [1 x [9 x double]] }]], align 8, !enzymejl_allocart !10, !enzyme_type !11, !enzymejl_source_type_SMatrix\7B2\2C\203\2C\20ForwardDiff.Dual\7BForwardDiff.Tag\7Btypeof\28F\29\2C\20Float64\7D\2C\20Float64\2C\209\7D\2C\206\7D !0, !enzymejl_byref_MUT_REF !0: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%39 = bitcast [1 x [9 x double]]* %38 to i8*, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double}, intvals: {}
%51 = bitcast [1 x [9 x double]]* %50 to i8*, !dbg !64: {[-1]:Pointer}, intvals: {}
[1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]]: {[-1]:Anything}, intvals: {}
%4 = alloca [1 x i64], align 8: {[-1]:Pointer}, intvals: {}
%17 = bitcast {} addrspace(10)* %1 to {} addrspace(10)** addrspace(10)*, !dbg !51: {[-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}, intvals: {}
%73 = fadd double %70, %72, !dbg !114: {[-1]:Float@double}, intvals: {}
%82 = load {} addrspace(10)**, {} addrspace(10)** addrspace(11)* %81, align 8, !dbg !121, !tbaa !52, !alias.scope !35, !noalias !38, !enzyme_type !11, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0, !enzyme_nocache !0: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%47 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 7, i32 1, !dbg !64: {[-1]:Pointer}, intvals: {}
i8* bitcast ([1 x [9 x double]]* @_j_const_6 to i8*): {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
i8* bitcast ([1 x [9 x double]]* @_j_const_8 to i8*): {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%46 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 7, i32 0, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%56 = bitcast i8 addrspace(11)* %55 to i64 addrspace(11)*, !dbg !86: {[-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}, intvals: {}
%50 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 8, i32 1, !dbg !64: {[-1]:Pointer}, intvals: {}
[9 x double] [double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]: {[-1]:Anything}, intvals: {}
%54 = addrspacecast i8 addrspace(10)* %53 to i8 addrspace(11)*, !dbg !86: {[-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}, intvals: {}
%safepoint = load i64*, i64** %7, align 8, !tbaa !18: {}, intvals: {}
%48 = bitcast [1 x [9 x double]]* %47 to i8*, !dbg !64: {[-1]:Pointer}, intvals: {}
[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]: {[-1]:Anything}, intvals: {}
[1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00]]: {[-1]:Anything}, intvals: {}
%44 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 6, i32 1, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double}, intvals: {}
[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00]: {[-1]:Anything}, intvals: {}
%42 = bitcast [1 x [9 x double]]* %41 to i8*, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double}, intvals: {}
%15 = bitcast {} addrspace(10)* %1 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !51: {[-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}, intvals: {}
double 0.000000e+00: {[-1]:Anything}, intvals: {}
%33 = bitcast [1 x [9 x double]]* %32 to i8*, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double}, intvals: {}
@_j_const_9 = private unnamed_addr constant [1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00]], align 8: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%76 = fadd double %73, %75, !dbg !114: {[-1]:Float@double}, intvals: {}
%81 = addrspacecast {} addrspace(10)** addrspace(10)* %80 to {} addrspace(10)** addrspace(11)*, !dbg !121: {[-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}, intvals: {}
%45 = bitcast [1 x [9 x double]]* %44 to i8*, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double}, intvals: {}
%26 = getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]* %2, i64 0, i64 0, i64 0, i32 1, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double}, intvals: {}
%21 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %20, align 8, !dbg !51, !tbaa !52, !alias.scope !35, !noalias !38, !dereferenceable_or_null !54, !align !55, !enzyme_type !56, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Memory\7BFloat64\7D !0: {[-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@double}, intvals: {}
%85 = call "enzyme_type"="{[-1]:Pointer, [-1,-1]:Float@double}" {} addrspace(10)* addrspace(13)* @julia.gc_loaded({} addrspace(10)* noundef %84, {} addrspace(10)** noundef %82) #15, !dbg !122: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%8 = bitcast {} addrspace(10)* %1 to i8 addrspace(10)*, !dbg !21: {[-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}, intvals: {}
@_j_const_2 = private unnamed_addr constant [1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]], align 8: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
i8* bitcast ([1 x [9 x double]]* @_j_const_2 to i8*): {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
[1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]]: {[-1]:Anything}, intvals: {}
Cannot deduce type of copy call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(72) %48, i8* noundef nonnull align 8 dereferenceable(72) bitcast ([1 x [9 x double]]* @_j_const_8 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !64, !tbaa !81, !alias.scope !82, !noalias !83
Caused by:
Stacktrace:
[1] Dual
@ ~/.julia/packages/ForwardDiff/UBbGT/src/dual.jl:19
[2] Dual
@ ~/.julia/packages/ForwardDiff/UBbGT/src/dual.jl:60
[3] Dual
@ ~/.julia/packages/ForwardDiff/UBbGT/src/dual.jl:72
[4] macro expansion
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:20
[5] dualize
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:13
[6] static_dual_eval
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:24
[7] vector_mode_gradient!
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:62
[8] gradient!
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:42
[9] foo
@ ~/scratch-1/Glaide.jl/src/mwe.jl:9
within MethodInstance for foo(::Vector{Float64}, ::Vector{Float64})
Stacktrace:
[1] Dual
@ ~/.julia/packages/ForwardDiff/UBbGT/src/dual.jl:19 [inlined]
[2] Dual
@ ~/.julia/packages/ForwardDiff/UBbGT/src/dual.jl:60 [inlined]
[3] Dual
@ ~/.julia/packages/ForwardDiff/UBbGT/src/dual.jl:72 [inlined]
[4] macro expansion
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:20 [inlined]
[5] dualize
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:13 [inlined]
[6] static_dual_eval
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:24 [inlined]
[7] vector_mode_gradient!
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:62 [inlined]
[8] gradient!
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:42 [inlined]
[9] foo
@ ~/scratch-1/Glaide.jl/src/mwe.jl:9 [inlined]
[10] diffejulia_foo_28711wrap
@ ~/scratch-1/Glaide.jl/src/mwe.jl:0
[11] macro expansion
@ ~/.julia/packages/Enzyme/NHs63/src/compiler.jl:5204 [inlined]
[12] enzyme_call
@ ~/.julia/packages/Enzyme/NHs63/src/compiler.jl:4750 [inlined]
[13] CombinedAdjointThunk
@ ~/.julia/packages/Enzyme/NHs63/src/compiler.jl:4622 [inlined]
[14] autodiff(::ReverseMode{…}, ::Const{…}, ::Type{…}, ::Duplicated{…}, ::Duplicated{…})
@ Enzyme ~/.julia/packages/Enzyme/NHs63/src/Enzyme.jl:503
[15] top-level scope
@ ~/scratch-1/Glaide.jl/src/mwe.jl:21
Some type information was truncated. Use `show(err)` to see complete types.
```
Contributor guide
Assessment
This issue has not been assessed yet.