EnzymeAD / Enzyme.jl

Julia bindings for the Enzyme automatic differentiator
https://enzyme.mit.edu
MIT License
451 stars 63 forks source link

Simpler example of a hard crash during Forward-over-Reverse #1385

Closed tcovert closed 4 months ago

tcovert commented 7 months ago

Hi Enzyme Team,

I cannot get this MWE, which I've structured as similar to the documentation for F-o-R as possible, to work. Any suggestions for how I might fix it? For reference, this is my attempts to continue the work I started asking about in #1239...

In my definition of f!() I've commented out the line I'd actually like to run in favor or something simpler that delivers the same crash. However, that is the line I'd eventually like to run (I'm trying to do get gradients and hessian-vector products of a multinomial logit log-likelihood in which the number of alternatives varies from choice to choice).

Thanks in advance for any suggestions you might have.

using LogExpFunctions, LinearAlgebra, Enzyme, SplitApplyCombine

function f!(result, y, X, theta, gs)
  deltas = X * theta
  for g in gs
    # result[1] += -1.0 * (dot(y[g], deltas[g]) - logsumexp(deltas[g]))
    result[1] += -1.0 * dot(y[g], deltas[g])
  end
  nothing
end

function grad_theta!(btheta, y, X, theta, gs)
  r = [0.0]
  br = [1.0]
  autodiff(
    Reverse, 
    f!, 
    Duplicated(r, br),
    Const(y), 
    Const(X), 
    Duplicated(theta, btheta), 
    Const(gs)
  )
  nothing
end

function Hv_theta!(hv, v, y, X, theta, gs)
  btheta = zeros(length(theta))
  r = [0.0]
  br = [1.0]
  dr = [0.0]
  dbr = [0.0]
  autodiff(
    Forward,
    (rstuff, thetastuff) -> autodiff_deferred(
      Reverse, 
      f!, 
      Const,
      rstuff,
      Const(y), 
      Const(X), 
      thetastuff, 
      Const(gs)
    ),
    Const,
    Duplicated(Duplicated(r, br), Duplicated(dr, dbr)),
    Duplicated(Duplicated(theta, btheta), Duplicated(v, hv))
  )
  nothing
end

# test it
X = randn(14, 3)
theta = randn(size(X, 2))
y = zeros(14)
y[3] = 1.0
y[12] = 1.0
idx = vcat(fill(1, 10), fill(2, 4))
gs = collect(groupfind(idx))

btheta = zeros(3)
v = [1.0, 0.0, 0.0]
hv = zeros(length(theta))

# works fine, after running btheta has the gradient I am expecting
grad_theta!(btheta, y, X, theta, gs)

# crashes
# Hv_theta!(hv, v, y, X, theta, gs)

My post-crash error log looks like this:

julia> Hv_theta!(hv, v, y, X, theta, gs)
┌ Warning: Using fallback BLAS replacements for (["cblas_daxpy64_", "cblas_ddot64_", "cblas_dcopy64_", "dscal_64_", "dgemv_64_"]), performance may be degraded
└ @ Enzyme.Compiler ~/.julia/packages/GPUCompiler/U36Ed/src/utils.jl:59
Error Unknown Type: <4 x {} addrspace(10)*>
Assertion failed: (0 && "Error Unknown Type: "), function defaultTypeTreeForLLVM, file /workspace/srcdir/Enzyme/enzyme/Enzyme/TypeAnalysis/TypeAnalysis.cpp, line 6087.

[10309] signal (6): Abort trap: 6
in expression starting at REPL[2]:1
__pthread_kill at /usr/lib/system/libsystem_kernel.dylib (unknown line)
pthread_kill at /usr/lib/system/libsystem_pthread.dylib (unknown line)
abort at /usr/lib/system/libsystem_c.dylib (unknown line)
__assert_rtn at /usr/lib/system/libsystem_c.dylib (unknown line)
_Z22defaultTypeTreeForLLVMPN4llvm4TypeEPNS_11InstructionEb at /Users/tcovert/.julia/artifacts/0cbd20125ffe7cde814445b2cf210a1ab5c9fae0/lib/libEnzyme-14.dylib (unknown line)
_ZN16AdjointGenerator16visitCommonStoreERN4llvm11InstructionEPNS0_5ValueES4_NS0_10MaybeAlignEbNS0_14AtomicOrderingEhS4_ at /Users/tcovert/.julia/artifacts/0cbd20125ffe7cde814445b2cf210a1ab5c9fae0/lib/libEnzyme-14.dylib (unknown line)
_ZN16AdjointGenerator14visitStoreInstERN4llvm9StoreInstE at /Users/tcovert/.julia/artifacts/0cbd20125ffe7cde814445b2cf210a1ab5c9fae0/lib/libEnzyme-14.dylib (unknown line)
_ZN11EnzymeLogic17CreateForwardDiffE14RequestContextPN4llvm8FunctionE10DIFFE_TYPENS1_8ArrayRefIS4_EER12TypeAnalysisb14DerivativeModebjPNS1_4TypeERK10FnTypeInfoNSt3__16vectorIbNSF_9allocatorIbEEEEPK15AugmentedReturnb at /Users/tcovert/.julia/artifacts/0cbd20125ffe7cde814445b2cf210a1ab5c9fae0/lib/libEnzyme-14.dylib (unknown line)
EnzymeCreateForwardDiff at /Users/tcovert/.julia/artifacts/0cbd20125ffe7cde814445b2cf210a1ab5c9fae0/lib/libEnzyme-14.dylib (unknown line)
EnzymeCreateForwardDiff at /Users/tcovert/.julia/packages/Enzyme/l4FS0/src/api.jl:168
unknown function (ip: 0x10da5d9c4)
ijl_apply_generic at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
enzyme! at /Users/tcovert/.julia/packages/Enzyme/l4FS0/src/compiler.jl:3125
unknown function (ip: 0x10da56515)
ijl_apply_generic at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
#codegen#488 at /Users/tcovert/.julia/packages/Enzyme/l4FS0/src/compiler.jl:4825
codegen at /Users/tcovert/.julia/packages/Enzyme/l4FS0/src/compiler.jl:4340 [inlined]
_thunk at /Users/tcovert/.julia/packages/Enzyme/l4FS0/src/compiler.jl:5430
_thunk at /Users/tcovert/.julia/packages/Enzyme/l4FS0/src/compiler.jl:5430 [inlined]
cached_compilation at /Users/tcovert/.julia/packages/Enzyme/l4FS0/src/compiler.jl:5464 [inlined]
#532 at /Users/tcovert/.julia/packages/Enzyme/l4FS0/src/compiler.jl:5530
JuliaContext at /Users/tcovert/.julia/packages/GPUCompiler/U36Ed/src/driver.jl:47
unknown function (ip: 0x10d9e1f82)
ijl_apply_generic at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
#s1081#531 at /Users/tcovert/.julia/packages/Enzyme/l4FS0/src/compiler.jl:5482 [inlined]
#s1081#531 at ./none:0
ijl_apply_generic at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
GeneratedFunctionStub at ./boot.jl:602
ijl_apply_generic at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
jl_call_staged at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
ijl_code_for_staged at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
get_staged at ./compiler/utilities.jl:115
retrieve_code_info at ./compiler/utilities.jl:127 [inlined]
InferenceState at ./compiler/inferencestate.jl:354
typeinf_edge at ./compiler/typeinfer.jl:923
abstract_call_method at ./compiler/abstractinterpretation.jl:611
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:152
abstract_call_known at ./compiler/abstractinterpretation.jl:1949
abstract_call at ./compiler/abstractinterpretation.jl:2020
abstract_call at ./compiler/abstractinterpretation.jl:1999
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2183
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2396
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:2658
typeinf_local at ./compiler/abstractinterpretation.jl:2867
typeinf_nocycle at ./compiler/abstractinterpretation.jl:2955
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:216
typeinf_edge at ./compiler/typeinfer.jl:932
abstract_call_method at ./compiler/abstractinterpretation.jl:611
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:152
abstract_call_known at ./compiler/abstractinterpretation.jl:1949
abstract_call at ./compiler/abstractinterpretation.jl:2020
abstract_apply at ./compiler/abstractinterpretation.jl:1566
abstract_call_known at ./compiler/abstractinterpretation.jl:1855
abstract_call at ./compiler/abstractinterpretation.jl:2020
abstract_call at ./compiler/abstractinterpretation.jl:1999
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2183
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2396
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:2682
typeinf_local at ./compiler/abstractinterpretation.jl:2867
typeinf_nocycle at ./compiler/abstractinterpretation.jl:2955
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:216
typeinf_edge at ./compiler/typeinfer.jl:932
abstract_call_method at ./compiler/abstractinterpretation.jl:611
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:152
abstract_call_known at ./compiler/abstractinterpretation.jl:1949
abstract_call at ./compiler/abstractinterpretation.jl:2020
abstract_call at ./compiler/abstractinterpretation.jl:1999
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2183
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2396
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:2682
typeinf_local at ./compiler/abstractinterpretation.jl:2867
typeinf_nocycle at ./compiler/abstractinterpretation.jl:2955
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:216
typeinf_ext at ./compiler/typeinfer.jl:1057
typeinf_ext_toplevel at ./compiler/typeinfer.jl:1090
typeinf_ext_toplevel at ./compiler/typeinfer.jl:1086
jfptr_typeinf_ext_toplevel_13529.clone_1 at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/sys.dylib (unknown line)
ijl_apply_generic at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
jl_type_infer at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
jl_generate_fptr_impl at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-codegen.1.9.dylib (unknown line)
jl_compile_method_internal at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
ijl_apply_generic at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
do_call at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
eval_body at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
jl_interpret_toplevel_thunk at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
jl_toplevel_eval_flex at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
jl_toplevel_eval_flex at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
ijl_toplevel_eval_in at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
eval at ./boot.jl:370 [inlined]
eval_user_input at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-macmini-x64-4.0/build/default-macmini-x64-4-0/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/REPL/src/REPL.jl:153
repl_backend_loop at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-macmini-x64-4.0/build/default-macmini-x64-4-0/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/REPL/src/REPL.jl:249
#start_repl_backend#46 at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-macmini-x64-4.0/build/default-macmini-x64-4-0/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/REPL/src/REPL.jl:234
start_repl_backend at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-macmini-x64-4.0/build/default-macmini-x64-4-0/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/REPL/src/REPL.jl:231
ijl_apply_generic at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
#run_repl#59 at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-macmini-x64-4.0/build/default-macmini-x64-4-0/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/REPL/src/REPL.jl:379
run_repl at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-macmini-x64-4.0/build/default-macmini-x64-4-0/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/REPL/src/REPL.jl:365
jfptr_run_repl_59702.clone_1 at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/sys.dylib (unknown line)
ijl_apply_generic at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
#1018 at ./client.jl:421
jfptr_YY.1018_49252.clone_1 at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/sys.dylib (unknown line)
ijl_apply_generic at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
jl_f__call_latest at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
#invokelatest#2 at ./essentials.jl:819 [inlined]
invokelatest at ./essentials.jl:816 [inlined]
run_main_repl at ./client.jl:405
exec_options at ./client.jl:322
_start at ./client.jl:522
jfptr__start_51207.clone_1 at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/sys.dylib (unknown line)
ijl_apply_generic at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
true_main at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
jl_repl_entrypoint at /Applications/Julia-1.9.app/Contents/Resources/julia/lib/julia/libjulia-internal.1.9.dylib (unknown line)
Allocations: 29311499 (Pool: 29279414; Big: 32085); GC: 39
zsh: abort      Julia

Here is my Julia/package environment status:

tcovert@tcovert-mbpro tmp % julia
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.9.4 (2023-11-14)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

(@v1.9) pkg> status
Status `~/.julia/environments/v1.9/Project.toml`
  [79adfba0] AdaptiveRegularization v0.1.0
  [69666777] Arrow v2.7.1
  [6e4b80f9] BenchmarkTools v1.5.0
  [1e616198] COSMO v0.8.8
  [324d7699] CategoricalArrays v0.10.8
  [a93c6f00] DataFrames v1.6.1
  [1313f7d8] DataFramesMeta v0.15.2
  [31c24e10] Distributions v0.25.107
  [7da242da] Enzyme v0.11.20
  [442a2c76] FastGaussQuadrature v1.0.2
⌅ [6a86dc24] FiniteDiff v2.22.0
  [f6369f11] ForwardDiff v0.10.36
  [b6b21f68] Ipopt v1.6.2
  [10dff2fc] JSOSolvers v0.11.2
  [4076af6c] JuMP v1.21.0
  [2ab3a3ac] LogExpFunctions v0.3.27
  [f1d291b0] MLUtils v0.4.4
  [30dfa513] ManualNLPModels v0.1.5
  [b8f27783] MathOptInterface v1.27.1
  [a4795742] NLPModels v0.20.0
  [0b1bfda6] OneHotArrays v0.2.5
  [01435c0c] Percival v0.7.1
  [14b8a8f1] PkgTemplates v0.7.48
  [37e2e3b7] ReverseDiff v1.15.1
  [295af30f] Revise v3.5.14
  [f2b01f46] Roots v2.1.5
  [47a9eef4] SparseDiffTools v2.17.0
  [03a91e81] SplitApplyCombine v1.2.3
  [2913bbd2] StatsBase v0.34.3
  [3eaba693] StatsModels v0.7.3
  [ab02a1b2] TableOperations v1.2.0
  [bd369af6] Tables v1.11.1
  [e88e6eb3] Zygote v0.6.69
Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. To see why use `status --outdated`
wsmoses commented 5 months ago

Now hits a type analysis error:

Current scope: 
; Function Attrs: mustprogress willreturn
define private fastcc "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}" { { {} addrspace(10)*, i64 }, {} addrspace(10)*, {} addrspace(10)* } @preprocess_augmented_julia__unsafe_getindex_4961({} addrspace(10)* nocapture noundef nonnull readonly align 16 dereferenceable(40) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}" "enzymejl_parmtype"="128488493393952" "enzymejl_parmtype_ref"="2" %0, {} addrspace(10)* nocapture noundef nonnull readonly align 16 dereferenceable(40) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}" "enzymejl_parmtype"="128488493232400" "enzymejl_parmtype_ref"="2" %1) unnamed_addr #7 !dbg !1843 {
top:
  %2 = call {}*** @julia.get_pgcstack() #31
  %newstruct2 = alloca [1 x [1 x i64]], align 8
  %ptls_field41 = getelementptr inbounds {}**, {}*** %2, i64 2
  %3 = bitcast {}*** %ptls_field41 to i64***
  %ptls_load4243 = load i64**, i64*** %3, align 8, !tbaa !33, !alias.scope !1844, !noalias !1847
  %4 = getelementptr inbounds i64*, i64** %ptls_load4243, i64 2
  %safepoint = load i64*, i64** %4, align 8, !tbaa !42, !alias.scope !1849, !noalias !1852
  fence syncscope("singlethread") seq_cst
  call void @julia.safepoint(i64* %safepoint) #31, !dbg !1854
  fence syncscope("singlethread") seq_cst
  %5 = addrspacecast {} addrspace(10)* %1 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !1855
  %arraylen_ptr = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %5, i64 0, i32 1, !dbg !1855
  %arraylen = load i64, i64 addrspace(11)* %arraylen_ptr, align 8, !dbg !1855, !tbaa !97, !range !59, !alias.scope !1859, !noalias !1862
  %6 = getelementptr inbounds [1 x [1 x i64]], [1 x [1 x i64]]* %newstruct2, i64 0, i64 0, i64 0, !dbg !1864
  store i64 %arraylen, i64* %6, align 8, !dbg !1864, !tbaa !434, !alias.scope !436, !noalias !1868
  %7 = call noalias {} addrspace(10)* @ijl_alloc_array_1d({} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 128488493393952 to {}*) to {} addrspace(10)*), i64 %arraylen) #32, !dbg !1875
  %8 = shl i64 %arraylen, 3, !dbg !1875
  %9 = bitcast {} addrspace(10)* %7 to i8 addrspace(13)* addrspace(10)*, !dbg !1875
  %10 = load i8 addrspace(13)*, i8 addrspace(13)* addrspace(10)* %9, align 8, !dbg !1875, !alias.scope !1880
  call void @llvm.memset.p13i8.i64(i8 addrspace(13)* align 8 %10, i8 noundef 0, i64 %8, i1 noundef false) #31, !dbg !1875
  %11 = call noalias nonnull {} addrspace(10)* @ijl_alloc_array_1d({} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 128488493393952 to {}*) to {} addrspace(10)*), i64 %arraylen) #32, !dbg !1875
  %12 = addrspacecast {} addrspace(10)* %11 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !1881
  %arraylen_ptr3 = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %12, i64 0, i32 1, !dbg !1881
  %arraylen4 = load i64, i64 addrspace(11)* %arraylen_ptr3, align 8, !dbg !1881, !tbaa !97, !range !59, !alias.scope !1884, !noalias !1887
  %.not = icmp eq i64 %arraylen4, %arraylen, !dbg !1889
  br i1 %.not, label %L19, label %L86, !dbg !1883

L19:                                              ; preds = %top
  %.not44 = icmp eq i64 %arraylen, 0, !dbg !1892
  br i1 %.not44, label %L85, label %L47, !dbg !1898

L47:                                              ; preds = %L19
  %13 = addrspacecast {} addrspace(10)* %1 to i64 addrspace(13)* addrspace(11)*, !dbg !1902
  %arrayptr46 = load i64 addrspace(13)*, i64 addrspace(13)* addrspace(11)* %13, align 16, !dbg !1902, !alias.scope !1903, !noalias !1904, !nonnull !32
  %14 = addrspacecast {} addrspace(10)* %0 to double addrspace(13)* addrspace(11)*
  %arrayptr2547 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %14, align 16, !tbaa !112, !alias.scope !1905, !noalias !1910, !nonnull !32
  %15 = addrspacecast {} addrspace(10)* %11 to double addrspace(13)* addrspace(11)*
  %arrayptr2848 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %15, align 8, !tbaa !112, !alias.scope !1912, !noalias !1887, !nonnull !32
  %value_phi1957 = load i64, i64 addrspace(13)* %arrayptr46, align 8, !dbg !1913, !tbaa !134, !alias.scope !1914, !noalias !1917
  %16 = add i64 %value_phi1957, -1, !dbg !1919
  %17 = getelementptr inbounds double, double addrspace(13)* %arrayptr2547, i64 %16, !dbg !1919
  %arrayref2658 = load double, double addrspace(13)* %17, align 8, !dbg !1919, !tbaa !134, !alias.scope !1922, !noalias !1925
  store double %arrayref2658, double addrspace(13)* %arrayptr2848, align 8, !dbg !1927, !tbaa !134, !alias.scope !1928, !noalias !1931
  %exitcond.not59 = icmp eq i64 %arraylen, 1, !dbg !1933
  br i1 %exitcond.not59, label %L85, label %L78.preheader, !dbg !1935

L78.preheader:                                    ; preds = %L47
  br label %L78, !dbg !1935

L78:                                              ; preds = %L78.preheader, %L78
  %iv1 = phi i64 [ 0, %L78.preheader ], [ %iv.next2, %L78 ]
  %iv.next2 = add nuw nsw i64 %iv1, 1, !dbg !1937
  %18 = add nuw nsw i64 %iv1, 2, !dbg !1939
  %19 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr46, i64 %iv.next2, !dbg !1941
  %value_phi19 = load i64, i64 addrspace(13)* %19, align 8, !dbg !1913, !tbaa !134, !alias.scope !1914, !noalias !1917
  %20 = add i64 %value_phi19, -1, !dbg !1919
  %21 = getelementptr inbounds double, double addrspace(13)* %arrayptr2547, i64 %20, !dbg !1919
  %arrayref26 = load double, double addrspace(13)* %21, align 8, !dbg !1919, !tbaa !134, !alias.scope !1922, !noalias !1925
  %22 = getelementptr inbounds double, double addrspace(13)* %arrayptr2848, i64 %iv.next2, !dbg !1927
  store double %arrayref26, double addrspace(13)* %22, align 8, !dbg !1927, !tbaa !134, !alias.scope !1928, !noalias !1931
  %exitcond.not = icmp eq i64 %18, %arraylen, !dbg !1933
  br i1 %exitcond.not, label %L85.loopexit, label %L78, !dbg !1935

L85.loopexit:                                     ; preds = %L78
  br label %L85, !dbg !1942

L85:                                              ; preds = %L85.loopexit, %L47, %L19
  %23 = insertvalue { {} addrspace(10)*, i64 } undef, {} addrspace(10)* %7, 0, !dbg !1942
  %.unpack7 = insertvalue { {} addrspace(10)*, i64 } %23, i64 %arraylen, 1, !dbg !1942
  %24 = insertvalue { { {} addrspace(10)*, i64 }, {} addrspace(10)*, {} addrspace(10)* } undef, { {} addrspace(10)*, i64 } %.unpack7, 0, !dbg !1942
  %25 = insertvalue { { {} addrspace(10)*, i64 }, {} addrspace(10)*, {} addrspace(10)* } %24, {} addrspace(10)* %11, 1, !dbg !1942
  %26 = insertvalue { { {} addrspace(10)*, i64 }, {} addrspace(10)*, {} addrspace(10)* } %25, {} addrspace(10)* %7, 2, !dbg !1942
  ret { { {} addrspace(10)*, i64 }, {} addrspace(10)*, {} addrspace(10)* } %26, !dbg !1942

L86:                                              ; preds = %top
  %27 = addrspacecast [1 x [1 x i64]]* %newstruct2 to [1 x [1 x i64]] addrspace(11)*, !dbg !1883
  call fastcc void @julia_throw_checksize_error_4964({} addrspace(10)* noalias nocapture noundef nonnull readonly align 16 dereferenceable(40) %11, [1 x [1 x i64]] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(8) %27) #33, !dbg !1883
  unreachable, !dbg !1883
}

 Type analysis state: 
<analysis>
i64 0: {[-1]:Anything}, intvals: {0,}
i64 1: {[-1]:Integer}, intvals: {1,}
i64 2: {[-1]:Integer}, intvals: {2,}
{}* inttoptr (i64 128488493393952 to {}*): {[-1]:Anything}, intvals: {}
{} addrspace(10)* addrspacecast ({}* inttoptr (i64 128488493393952 to {}*) to {} addrspace(10)*): {[-1]:Anything}, intvals: {}
i64 3: {[-1]:Integer}, intvals: {3,}
i64 -1: {[-1]:Anything}, intvals: {-1,}
{ {} addrspace(10)*, i64 } undef: {[-1]:Anything}, intvals: {}
{ { {} addrspace(10)*, i64 }, {} addrspace(10)*, {} addrspace(10)* } undef: {[-1]:Anything}, intvals: {}
  %safepoint = load i64*, i64** %4, align 8, !tbaa !42, !alias.scope !44, !noalias !47: {}, intvals: {}
  %5 = addrspacecast {} addrspace(10)* %1 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !50: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
  %arraylen = load i64, i64 addrspace(11)* %arraylen_ptr, align 8, !dbg !50, !tbaa !59, !range !62, !alias.scope !63, !noalias !68: {[-1]:Integer}, intvals: {}
{} addrspace(10)* %0: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
{} addrspace(10)* %1: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
  %2 = call {}*** @julia.get_pgcstack() #31: {}, intvals: {}
  %arrayptr2848 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %15, align 8, !tbaa !143, !alias.scope !152, !noalias !109, !nonnull !32: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
  %value_phi1957 = load i64, i64 addrspace(13)* %arrayptr46, align 8, !dbg !153, !tbaa !154, !alias.scope !157, !noalias !160: {[-1]:Integer}, intvals: {}
  %11 = call noalias nonnull {} addrspace(10)* @ijl_alloc_array_1d({} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 128488493393952 to {}*) to {} addrspace(10)*), i64 %arraylen) #32, !dbg !93: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
  %12 = addrspacecast {} addrspace(10)* %11 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !103: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
  %arraylen4 = load i64, i64 addrspace(11)* %arraylen_ptr3, align 8, !dbg !103, !tbaa !59, !range !62, !alias.scope !106, !noalias !109: {[-1]:Integer}, intvals: {}
  %.not = icmp eq i64 %arraylen4, %arraylen, !dbg !111: {[-1]:Integer}, intvals: {}
  %iv.next2 = add nuw nsw i64 %iv1, 1, !dbg !182: {[-1]:Integer}, intvals: {1,}
  %15 = addrspacecast {} addrspace(10)* %11 to double addrspace(13)* addrspace(11)*: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
  %4 = getelementptr inbounds i64*, i64** %ptls_load4243, i64 2: {[-1]:Pointer}, intvals: {}
  %ptls_field41 = getelementptr inbounds {}**, {}*** %2, i64 2: {}, intvals: {}
  %.not44 = icmp eq i64 %arraylen, 0, !dbg !118: {[-1]:Integer}, intvals: {}
  %8 = shl i64 %arraylen, 3, !dbg !93: {[-1]:Integer}, intvals: {}
  %9 = bitcast {} addrspace(10)* %7 to i8 addrspace(13)* addrspace(10)*, !dbg !93: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
  %10 = load i8 addrspace(13)*, i8 addrspace(13)* addrspace(10)* %9, align 8, !dbg !93, !alias.scope !102: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
  %arraylen_ptr3 = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %12, i64 0, i32 1, !dbg !103: {[-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: {}
  %13 = addrspacecast {} addrspace(10)* %1 to i64 addrspace(13)* addrspace(11)*, !dbg !138: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
  %arrayptr46 = load i64 addrspace(13)*, i64 addrspace(13)* addrspace(11)* %13, align 16, !dbg !138, !alias.scope !141, !noalias !142, !nonnull !32: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %14 = addrspacecast {} addrspace(10)* %0 to double addrspace(13)* addrspace(11)*: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
  %arrayptr2547 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %14, align 16, !tbaa !143, !alias.scope !145, !noalias !150, !nonnull !32: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
  %18 = add nuw nsw i64 %iv1, 2, !dbg !185: {[-1]:Integer}, intvals: {2,}
  %19 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr46, i64 %iv.next2, !dbg !187: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
  %value_phi19 = load i64, i64 addrspace(13)* %19, align 8, !dbg !153, !tbaa !154, !alias.scope !157, !noalias !160: {[-1]:Integer}, intvals: {}
  %20 = add i64 %value_phi19, -1, !dbg !162: {[-1]:Integer}, intvals: {}
  %21 = getelementptr inbounds double, double addrspace(13)* %arrayptr2547, i64 %20, !dbg !162: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
  %arrayref26 = load double, double addrspace(13)* %21, align 8, !dbg !162, !tbaa !154, !alias.scope !166, !noalias !169: {[-1]:Float@double}, intvals: {}
  %22 = getelementptr inbounds double, double addrspace(13)* %arrayptr2848, i64 %iv.next2, !dbg !171: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
  %iv1 = phi i64 [ 0, %L78.preheader ], [ %iv.next2, %L78 ]: {[-1]:Integer}, intvals: {0,}
  %arraylen_ptr = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %5, i64 0, i32 1, !dbg !50: {[-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: {}
  %exitcond.not = icmp eq i64 %18, %arraylen, !dbg !178: {[-1]:Integer}, intvals: {}
  %23 = insertvalue { {} addrspace(10)*, i64 } undef, {} addrspace(10)* %7, 0, !dbg !188: {[0,0]:Pointer, [0,0,-1]:Float@double, [0,8]:Integer, [0,9]:Integer, [0,10]:Integer, [0,11]:Integer, [0,12]:Integer, [0,13]:Integer, [0,14]:Integer, [0,15]:Integer, [0,16]:Integer, [0,17]:Integer, [0,18]:Integer, [0,19]:Integer, [0,20]:Integer, [0,21]:Integer, [0,22]:Integer, [0,23]:Integer, [0,24]:Integer, [0,25]:Integer, [0,26]:Integer, [0,27]:Integer, [0,28]:Integer, [0,29]:Integer, [0,30]:Integer, [0,31]:Integer, [0,32]:Integer, [0,33]:Integer, [0,34]:Integer, [0,35]:Integer, [0,36]:Integer, [0,37]:Integer, [0,38]:Integer, [0,39]:Integer, [1,0]:Pointer, [1,0,-1]:Float@double, [1,8]:Integer, [1,9]:Integer, [1,10]:Integer, [1,11]:Integer, [1,12]:Integer, [1,13]:Integer, [1,14]:Integer, [1,15]:Integer, [1,16]:Integer, [1,17]:Integer, [1,18]:Integer, [1,19]:Integer, [1,20]:Integer, [1,21]:Integer, [1,22]:Integer, [1,23]:Integer, [1,24]:Integer, [1,25]:Integer, [1,26]:Integer, [1,27]:Integer, [1,28]:Integer, [1,29]:Integer, [1,30]:Integer, [1,31]:Integer, [1,32]:Integer, [1,33]:Integer, [1,34]:Integer, [1,35]:Integer, [1,36]:Integer, [1,37]:Integer, [1,38]:Integer, [1,39]:Integer, [2,0]:Pointer, [2,0,-1]:Float@double, [2,8]:Integer, [2,9]:Integer, [2,10]:Integer, [2,11]:Integer, [2,12]:Integer, [2,13]:Integer, [2,14]:Integer, [2,15]:Integer, [2,16]:Integer, [2,17]:Integer, [2,18]:Integer, [2,19]:Integer, [2,20]:Integer, [2,21]:Integer, [2,22]:Integer, [2,23]:Integer, [2,24]:Integer, [2,25]:Integer, [2,26]:Integer, [2,27]:Integer, [2,28]:Integer, [2,29]:Integer, [2,30]:Integer, [2,31]:Integer, [2,32]:Integer, [2,33]:Integer, [2,34]:Integer, [2,35]:Integer, [2,36]:Integer, [2,37]:Integer, [2,38]:Integer, [2,39]:Integer, [3,0]:Pointer, [3,0,-1]:Float@double, [3,8]:Integer, [3,9]:Integer, [3,10]:Integer, [3,11]:Integer, [3,12]:Integer, [3,13]:Integer, [3,14]:Integer, [3,15]:Integer, [3,16]:Integer, [3,17]:Integer, [3,18]:Integer, [3,19]:Integer, [3,20]:Integer, [3,21]:Integer, [3,22]:Integer, [3,23]:Integer, [3,24]:Integer, [3,25]:Integer, [3,26]:Integer, [3,27]:Integer, [3,28]:Integer, [3,29]:Integer, [3,30]:Integer, [3,31]:Integer, [3,32]:Integer, [3,33]:Integer, [3,34]:Integer, [3,35]:Integer, [3,36]:Integer, [3,37]:Integer, [3,38]:Integer, [3,39]:Integer, [4,0]:Pointer, [4,0,-1]:Float@double, [4,8]:Integer, [4,9]:Integer, [4,10]:Integer, [4,11]:Integer, [4,12]:Integer, [4,13]:Integer, [4,14]:Integer, [4,15]:Integer, [4,16]:Integer, [4,17]:Integer, [4,18]:Integer, [4,19]:Integer, [4,20]:Integer, [4,21]:Integer, [4,22]:Integer, [4,23]:Integer, [4,24]:Integer, [4,25]:Integer, [4,26]:Integer, [4,27]:Integer, [4,28]:Integer, [4,29]:Integer, [4,30]:Integer, [4,31]:Integer, [4,32]:Integer, [4,33]:Integer, [4,34]:Integer, [4,35]:Integer, [4,36]:Integer, [4,37]:Integer, [4,38]:Integer, [4,39]:Integer, [5,0]:Pointer, [5,0,-1]:Float@double, [5,8]:Integer, [5,9]:Integer, [5,10]:Integer, [5,11]:Integer, [5,12]:Integer, [5,13]:Integer, [5,14]:Integer, [5,15]:Integer, [5,16]:Integer, [5,17]:Integer, [5,18]:Integer, [5,19]:Integer, [5,20]:Integer, [5,21]:Integer, [5,22]:Integer, [5,23]:Integer, [5,24]:Integer, [5,25]:Integer, [5,26]:Integer, [5,27]:Integer, [5,28]:Integer, [5,29]:Integer, [5,30]:Integer, [5,31]:Integer, [5,32]:Integer, [5,33]:Integer, [5,34]:Integer, [5,35]:Integer, [5,36]:Integer, [5,37]:Integer, [5,38]:Integer, [5,39]:Integer, [6,0]:Pointer, [6,0,-1]:Float@double, [6,8]:Integer, [6,9]:Integer, [6,10]:Integer, [6,11]:Integer, [6,12]:Integer, [6,13]:Integer, [6,14]:Integer, [6,15]:Integer, [6,16]:Integer, [6,17]:Integer, [6,18]:Integer, [6,19]:Integer, [6,20]:Integer, [6,21]:Integer, [6,22]:Integer, [6,23]:Integer, [6,24]:Integer, [6,25]:Integer, [6,26]:Integer, [6,27]:Integer, [6,28]:Integer, [6,29]:Integer, [6,30]:Integer, [6,31]:Integer, [6,32]:Integer, [6,33]:Integer, [6,34]:Integer, [6,35]:Integer, [6,36]:Integer, [6,37]:Integer, [6,38]:Integer, [6,39]:Integer, [7,0]:Pointer, [7,0,-1]:Float@double, [7,8]:Integer, [7,9]:Integer, [7,10]:Integer, [7,11]:Integer, [7,12]:Integer, [7,13]:Integer, [7,14]:Integer, [7,15]:Integer, [7,16]:Integer, [7,17]:Integer, [7,18]:Integer, [7,19]:Integer, [7,20]:Integer, [7,21]:Integer, [7,22]:Integer, [7,23]:Integer, [7,24]:Integer, [7,25]:Integer, [7,26]:Integer, [7,27]:Integer, [7,28]:Integer, [7,29]:Integer, [7,30]:Integer, [7,31]:Integer, [7,32]:Integer, [7,33]:Integer, [7,34]:Integer, [7,35]:Integer, [7,36]:Integer, [7,37]:Integer, [7,38]:Integer, [7,39]:Integer, [8]:Anything, [9]:Anything, [10]:Anything, [11]:Anything, [12]:Anything, [13]:Anything, [14]:Anything, [15]:Anything}, intvals: {}
  %.unpack7 = insertvalue { {} addrspace(10)*, i64 } %23, i64 %arraylen, 1, !dbg !188: {[0,0]:Pointer, [0,0,-1]:Float@double, [0,8]:Integer, [0,9]:Integer, [0,10]:Integer, [0,11]:Integer, [0,12]:Integer, [0,13]:Integer, [0,14]:Integer, [0,15]:Integer, [0,16]:Integer, [0,17]:Integer, [0,18]:Integer, [0,19]:Integer, [0,20]:Integer, [0,21]:Integer, [0,22]:Integer, [0,23]:Integer, [0,24]:Integer, [0,25]:Integer, [0,26]:Integer, [0,27]:Integer, [0,28]:Integer, [0,29]:Integer, [0,30]:Integer, [0,31]:Integer, [0,32]:Integer, [0,33]:Integer, [0,34]:Integer, [0,35]:Integer, [0,36]:Integer, [0,37]:Integer, [0,38]:Integer, [0,39]:Integer, [1,0]:Pointer, [1,0,-1]:Float@double, [1,8]:Integer, [1,9]:Integer, [1,10]:Integer, [1,11]:Integer, [1,12]:Integer, [1,13]:Integer, [1,14]:Integer, [1,15]:Integer, [1,16]:Integer, [1,17]:Integer, [1,18]:Integer, [1,19]:Integer, [1,20]:Integer, [1,21]:Integer, [1,22]:Integer, [1,23]:Integer, [1,24]:Integer, [1,25]:Integer, [1,26]:Integer, [1,27]:Integer, [1,28]:Integer, [1,29]:Integer, [1,30]:Integer, [1,31]:Integer, [1,32]:Integer, [1,33]:Integer, [1,34]:Integer, [1,35]:Integer, [1,36]:Integer, [1,37]:Integer, [1,38]:Integer, [1,39]:Integer, [2,0]:Pointer, [2,0,-1]:Float@double, [2,8]:Integer, [2,9]:Integer, [2,10]:Integer, [2,11]:Integer, [2,12]:Integer, [2,13]:Integer, [2,14]:Integer, [2,15]:Integer, [2,16]:Integer, [2,17]:Integer, [2,18]:Integer, [2,19]:Integer, [2,20]:Integer, [2,21]:Integer, [2,22]:Integer, [2,23]:Integer, [2,24]:Integer, [2,25]:Integer, [2,26]:Integer, [2,27]:Integer, [2,28]:Integer, [2,29]:Integer, [2,30]:Integer, [2,31]:Integer, [2,32]:Integer, [2,33]:Integer, [2,34]:Integer, [2,35]:Integer, [2,36]:Integer, [2,37]:Integer, [2,38]:Integer, [2,39]:Integer, [3,0]:Pointer, [3,0,-1]:Float@double, [3,8]:Integer, [3,9]:Integer, [3,10]:Integer, [3,11]:Integer, [3,12]:Integer, [3,13]:Integer, [3,14]:Integer, [3,15]:Integer, [3,16]:Integer, [3,17]:Integer, [3,18]:Integer, [3,19]:Integer, [3,20]:Integer, [3,21]:Integer, [3,22]:Integer, [3,23]:Integer, [3,24]:Integer, [3,25]:Integer, [3,26]:Integer, [3,27]:Integer, [3,28]:Integer, [3,29]:Integer, [3,30]:Integer, [3,31]:Integer, [3,32]:Integer, [3,33]:Integer, [3,34]:Integer, [3,35]:Integer, [3,36]:Integer, [3,37]:Integer, [3,38]:Integer, [3,39]:Integer, [4,0]:Pointer, [4,0,-1]:Float@double, [4,8]:Integer, [4,9]:Integer, [4,10]:Integer, [4,11]:Integer, [4,12]:Integer, [4,13]:Integer, [4,14]:Integer, [4,15]:Integer, [4,16]:Integer, [4,17]:Integer, [4,18]:Integer, [4,19]:Integer, [4,20]:Integer, [4,21]:Integer, [4,22]:Integer, [4,23]:Integer, [4,24]:Integer, [4,25]:Integer, [4,26]:Integer, [4,27]:Integer, [4,28]:Integer, [4,29]:Integer, [4,30]:Integer, [4,31]:Integer, [4,32]:Integer, [4,33]:Integer, [4,34]:Integer, [4,35]:Integer, [4,36]:Integer, [4,37]:Integer, [4,38]:Integer, [4,39]:Integer, [5,0]:Pointer, [5,0,-1]:Float@double, [5,8]:Integer, [5,9]:Integer, [5,10]:Integer, [5,11]:Integer, [5,12]:Integer, [5,13]:Integer, [5,14]:Integer, [5,15]:Integer, [5,16]:Integer, [5,17]:Integer, [5,18]:Integer, [5,19]:Integer, [5,20]:Integer, [5,21]:Integer, [5,22]:Integer, [5,23]:Integer, [5,24]:Integer, [5,25]:Integer, [5,26]:Integer, [5,27]:Integer, [5,28]:Integer, [5,29]:Integer, [5,30]:Integer, [5,31]:Integer, [5,32]:Integer, [5,33]:Integer, [5,34]:Integer, [5,35]:Integer, [5,36]:Integer, [5,37]:Integer, [5,38]:Integer, [5,39]:Integer, [6,0]:Pointer, [6,0,-1]:Float@double, [6,8]:Integer, [6,9]:Integer, [6,10]:Integer, [6,11]:Integer, [6,12]:Integer, [6,13]:Integer, [6,14]:Integer, [6,15]:Integer, [6,16]:Integer, [6,17]:Integer, [6,18]:Integer, [6,19]:Integer, [6,20]:Integer, [6,21]:Integer, [6,22]:Integer, [6,23]:Integer, [6,24]:Integer, [6,25]:Integer, [6,26]:Integer, [6,27]:Integer, [6,28]:Integer, [6,29]:Integer, [6,30]:Integer, [6,31]:Integer, [6,32]:Integer, [6,33]:Integer, [6,34]:Integer, [6,35]:Integer, [6,36]:Integer, [6,37]:Integer, [6,38]:Integer, [6,39]:Integer, [7,0]:Pointer, [7,0,-1]:Float@double, [7,8]:Integer, [7,9]:Integer, [7,10]:Integer, [7,11]:Integer, [7,12]:Integer, [7,13]:Integer, [7,14]:Integer, [7,15]:Integer, [7,16]:Integer, [7,17]:Integer, [7,18]:Integer, [7,19]:Integer, [7,20]:Integer, [7,21]:Integer, [7,22]:Integer, [7,23]:Integer, [7,24]:Integer, [7,25]:Integer, [7,26]:Integer, [7,27]:Integer, [7,28]:Integer, [7,29]:Integer, [7,30]:Integer, [7,31]:Integer, [7,32]:Integer, [7,33]:Integer, [7,34]:Integer, [7,35]:Integer, [7,36]:Integer, [7,37]:Integer, [7,38]:Integer, [7,39]:Integer, [8]:Integer, [9]:Integer, [10]:Integer, [11]:Integer, [12]:Integer, [13]:Integer, [14]:Integer, [15]:Integer}, intvals: {}
  %24 = insertvalue { { {} addrspace(10)*, i64 }, {} addrspace(10)*, {} addrspace(10)* } undef, { {} addrspace(10)*, i64 } %.unpack7, 0, !dbg !188: {[0,0]:Pointer, [0,0,-1]:Float@double, [0,8]:Integer, [0,9]:Integer, [0,10]:Integer, [0,11]:Integer, [0,12]:Integer, [0,13]:Integer, [0,14]:Integer, [0,15]:Integer, [0,16]:Integer, [0,17]:Integer, [0,18]:Integer, [0,19]:Integer, [0,20]:Integer, [0,21]:Integer, [0,22]:Integer, [0,23]:Integer, [0,24]:Integer, [0,25]:Integer, [0,26]:Integer, [0,27]:Integer, [0,28]:Integer, [0,29]:Integer, [0,30]:Integer, [0,31]:Integer, [0,32]:Integer, [0,33]:Integer, [0,34]:Integer, [0,35]:Integer, [0,36]:Integer, [0,37]:Integer, [0,38]:Integer, [0,39]:Integer, [1,0]:Pointer, [1,0,-1]:Float@double, [1,8]:Integer, [1,9]:Integer, [1,10]:Integer, [1,11]:Integer, [1,12]:Integer, [1,13]:Integer, [1,14]:Integer, [1,15]:Integer, [1,16]:Integer, [1,17]:Integer, [1,18]:Integer, [1,19]:Integer, [1,20]:Integer, [1,21]:Integer, [1,22]:Integer, [1,23]:Integer, [1,24]:Integer, [1,25]:Integer, [1,26]:Integer, [1,27]:Integer, [1,28]:Integer, [1,29]:Integer, [1,30]:Integer, [1,31]:Integer, [1,32]:Integer, [1,33]:Integer, [1,34]:Integer, [1,35]:Integer, [1,36]:Integer, [1,37]:Integer, [1,38]:Integer, [1,39]:Integer, [2,0]:Pointer, [2,0,-1]:Float@double, [2,8]:Integer, [2,9]:Integer, [2,10]:Integer, [2,11]:Integer, [2,12]:Integer, [2,13]:Integer, [2,14]:Integer, [2,15]:Integer, [2,16]:Integer, [2,17]:Integer, [2,18]:Integer, [2,19]:Integer, [2,20]:Integer, [2,21]:Integer, [2,22]:Integer, [2,23]:Integer, [2,24]:Integer, [2,25]:Integer, [2,26]:Integer, [2,27]:Integer, [2,28]:Integer, [2,29]:Integer, [2,30]:Integer, [2,31]:Integer, [2,32]:Integer, [2,33]:Integer, [2,34]:Integer, [2,35]:Integer, [2,36]:Integer, [2,37]:Integer, [2,38]:Integer, [2,39]:Integer, [3,0]:Pointer, [3,0,-1]:Float@double, [3,8]:Integer, [3,9]:Integer, [3,10]:Integer, [3,11]:Integer, [3,12]:Integer, [3,13]:Integer, [3,14]:Integer, [3,15]:Integer, [3,16]:Integer, [3,17]:Integer, [3,18]:Integer, [3,19]:Integer, [3,20]:Integer, [3,21]:Integer, [3,22]:Integer, [3,23]:Integer, [3,24]:Integer, [3,25]:Integer, [3,26]:Integer, [3,27]:Integer, [3,28]:Integer, [3,29]:Integer, [3,30]:Integer, [3,31]:Integer, [3,32]:Integer, [3,33]:Integer, [3,34]:Integer, [3,35]:Integer, [3,36]:Integer, [3,37]:Integer, [3,38]:Integer, [3,39]:Integer, [4,0]:Pointer, [4,0,-1]:Float@double, [4,8]:Integer, [4,9]:Integer, [4,10]:Integer, [4,11]:Integer, [4,12]:Integer, [4,13]:Integer, [4,14]:Integer, [4,15]:Integer, [4,16]:Integer, [4,17]:Integer, [4,18]:Integer, [4,19]:Integer, [4,20]:Integer, [4,21]:Integer, [4,22]:Integer, [4,23]:Integer, [4,24]:Integer, [4,25]:Integer, [4,26]:Integer, [4,27]:Integer, [4,28]:Integer, [4,29]:Integer, [4,30]:Integer, [4,31]:Integer, [4,32]:Integer, [4,33]:Integer, [4,34]:Integer, [4,35]:Integer, [4,36]:Integer, [4,37]:Integer, [4,38]:Integer, [4,39]:Integer, [5,0]:Pointer, [5,0,-1]:Float@double, [5,8]:Integer, [5,9]:Integer, [5,10]:Integer, [5,11]:Integer, [5,12]:Integer, [5,13]:Integer, [5,14]:Integer, [5,15]:Integer, [5,16]:Integer, [5,17]:Integer, [5,18]:Integer, [5,19]:Integer, [5,20]:Integer, [5,21]:Integer, [5,22]:Integer, [5,23]:Integer, [5,24]:Integer, [5,25]:Integer, [5,26]:Integer, [5,27]:Integer, [5,28]:Integer, [5,29]:Integer, [5,30]:Integer, [5,31]:Integer, [5,32]:Integer, [5,33]:Integer, [5,34]:Integer, [5,35]:Integer, [5,36]:Integer, [5,37]:Integer, [5,38]:Integer, [5,39]:Integer, [6,0]:Pointer, [6,0,-1]:Float@double, [6,8]:Integer, [6,9]:Integer, [6,10]:Integer, [6,11]:Integer, [6,12]:Integer, [6,13]:Integer, [6,14]:Integer, [6,15]:Integer, [6,16]:Integer, [6,17]:Integer, [6,18]:Integer, [6,19]:Integer, [6,20]:Integer, [6,21]:Integer, [6,22]:Integer, [6,23]:Integer, [6,24]:Integer, [6,25]:Integer, [6,26]:Integer, [6,27]:Integer, [6,28]:Integer, [6,29]:Integer, [6,30]:Integer, [6,31]:Integer, [6,32]:Integer, [6,33]:Integer, [6,34]:Integer, [6,35]:Integer, [6,36]:Integer, [6,37]:Integer, [6,38]:Integer, [6,39]:Integer, [7,0]:Pointer, [7,0,-1]:Float@double, [7,8]:Integer, [7,9]:Integer, [7,10]:Integer, [7,11]:Integer, [7,12]:Integer, [7,13]:Integer, [7,14]:Integer, [7,15]:Integer, [7,16]:Integer, [7,17]:Integer, [7,18]:Integer, [7,19]:Integer, [7,20]:Integer, [7,21]:Integer, [7,22]:Integer, [7,23]:Integer, [7,24]:Integer, [7,25]:Integer, [7,26]:Integer, [7,27]:Integer, [7,28]:Integer, [7,29]:Integer, [7,30]:Integer, [7,31]:Integer, [7,32]:Integer, [7,33]:Integer, [7,34]:Integer, [7,35]:Integer, [7,36]:Integer, [7,37]:Integer, [7,38]:Integer, [7,39]:Integer, [8]:Integer, [9]:Integer, [10]:Integer, [11]:Integer, [12]:Integer, [13]:Integer, [14]:Integer, [15]:Integer, [16]:Anything, [17]:Anything, [18]:Anything, [19]:Anything, [20]:Anything, [21]:Anything, [22]:Anything, [23]:Anything, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything}, intvals: {}
  %ptls_load4243 = load i64**, i64*** %3, align 8, !tbaa !33, !alias.scope !37, !noalias !40: {}, intvals: {}
  %6 = getelementptr inbounds [1 x [1 x i64]], [1 x [1 x i64]]* %newstruct2, i64 0, i64 0, i64 0, !dbg !74: {[-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 = call noalias {} addrspace(10)* @ijl_alloc_array_1d({} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 128488493393952 to {}*) to {} addrspace(10)*), i64 %arraylen) #32, !dbg !93: {[-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
  %newstruct2 = alloca [1 x [1 x i64]], align 8: {[-1]:Pointer}, intvals: {}
  %3 = bitcast {}*** %ptls_field41 to i64***: {[-1]:Pointer}, intvals: {}
  %16 = add i64 %value_phi1957, -1, !dbg !162: {[-1]:Integer}, intvals: {}
  %17 = getelementptr inbounds double, double addrspace(13)* %arrayptr2547, i64 %16, !dbg !162: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
  %arrayref2658 = load double, double addrspace(13)* %17, align 8, !dbg !162, !tbaa !154, !alias.scope !166, !noalias !169: {[-1]:Float@double}, intvals: {}
  %exitcond.not59 = icmp eq i64 %arraylen, 1, !dbg !178: {[-1]:Integer}, intvals: {}
  %25 = insertvalue { { {} addrspace(10)*, i64 }, {} addrspace(10)*, {} addrspace(10)* } %24, {} addrspace(10)* %11, 1, !dbg !188: {[0]:Pointer, [0,0]:Pointer, [0,0,-1]:Float@double, [0,8]:Integer, [0,9]:Integer, [0,10]:Integer, [0,11]:Integer, [0,12]:Integer, [0,13]:Integer, [0,14]:Integer, [0,15]:Integer, [0,16]:Integer, [0,17]:Integer, [0,18]:Integer, [0,19]:Integer, [0,20]:Integer, [0,21]:Integer, [0,22]:Integer, [0,23]:Integer, [0,24]:Integer, [0,25]:Integer, [0,26]:Integer, [0,27]:Integer, [0,28]:Integer, [0,29]:Integer, [0,30]:Integer, [0,31]:Integer, [0,32]:Integer, [0,33]:Integer, [0,34]:Integer, [0,35]:Integer, [0,36]:Integer, [0,37]:Integer, [0,38]:Integer, [0,39]:Integer, [1]:Pointer, [1,0]:Pointer, [1,0,-1]:Float@double, [1,8]:Integer, [1,9]:Integer, [1,10]:Integer, [1,11]:Integer, [1,12]:Integer, [1,13]:Integer, [1,14]:Integer, [1,15]:Integer, [1,16]:Integer, [1,17]:Integer, [1,18]:Integer, [1,19]:Integer, [1,20]:Integer, [1,21]:Integer, [1,22]:Integer, [1,23]:Integer, [1,24]:Integer, [1,25]:Integer, [1,26]:Integer, [1,27]:Integer, [1,28]:Integer, [1,29]:Integer, [1,30]:Integer, [1,31]:Integer, [1,32]:Integer, [1,33]:Integer, [1,34]:Integer, [1,35]:Integer, [1,36]:Integer, [1,37]:Integer, [1,38]:Integer, [1,39]:Integer, [2]:Pointer, [2,0]:Pointer, [2,0,-1]:Float@double, [2,8]:Integer, [2,9]:Integer, [2,10]:Integer, [2,11]:Integer, [2,12]:Integer, [2,13]:Integer, [2,14]:Integer, [2,15]:Integer, [2,16]:Integer, [2,17]:Integer, [2,18]:Integer, [2,19]:Integer, [2,20]:Integer, [2,21]:Integer, [2,22]:Integer, [2,23]:Integer, [2,24]:Integer, [2,25]:Integer, [2,26]:Integer, [2,27]:Integer, [2,28]:Integer, [2,29]:Integer, [2,30]:Integer, [2,31]:Integer, [2,32]:Integer, [2,33]:Integer, [2,34]:Integer, [2,35]:Integer, [2,36]:Integer, [2,37]:Integer, [2,38]:Integer, [2,39]:Integer, [3]:Pointer, [3,0]:Pointer, [3,0,-1]:Float@double, [3,8]:Integer, [3,9]:Integer, [3,10]:Integer, [3,11]:Integer, [3,12]:Integer, [3,13]:Integer, [3,14]:Integer, [3,15]:Integer, [3,16]:Integer, [3,17]:Integer, [3,18]:Integer, [3,19]:Integer, [3,20]:Integer, [3,21]:Integer, [3,22]:Integer, [3,23]:Integer, [3,24]:Integer, [3,25]:Integer, [3,26]:Integer, [3,27]:Integer, [3,28]:Integer, [3,29]:Integer, [3,30]:Integer, [3,31]:Integer, [3,32]:Integer, [3,33]:Integer, [3,34]:Integer, [3,35]:Integer, [3,36]:Integer, [3,37]:Integer, [3,38]:Integer, [3,39]:Integer, [4]:Pointer, [4,0]:Pointer, [4,0,-1]:Float@double, [4,8]:Integer, [4,9]:Integer, [4,10]:Integer, [4,11]:Integer, [4,12]:Integer, [4,13]:Integer, [4,14]:Integer, [4,15]:Integer, [4,16]:Integer, [4,17]:Integer, [4,18]:Integer, [4,19]:Integer, [4,20]:Integer, [4,21]:Integer, [4,22]:Integer, [4,23]:Integer, [4,24]:Integer, [4,25]:Integer, [4,26]:Integer, [4,27]:Integer, [4,28]:Integer, [4,29]:Integer, [4,30]:Integer, [4,31]:Integer, [4,32]:Integer, [4,33]:Integer, [4,34]:Integer, [4,35]:Integer, [4,36]:Integer, [4,37]:Integer, [4,38]:Integer, [4,39]:Integer, [5]:Pointer, [5,0]:Pointer, [5,0,-1]:Float@double, [5,8]:Integer, [5,9]:Integer, [5,10]:Integer, [5,11]:Integer, [5,12]:Integer, [5,13]:Integer, [5,14]:Integer, [5,15]:Integer, [5,16]:Integer, [5,17]:Integer, [5,18]:Integer, [5,19]:Integer, [5,20]:Integer, [5,21]:Integer, [5,22]:Integer, [5,23]:Integer, [5,24]:Integer, [5,25]:Integer, [5,26]:Integer, [5,27]:Integer, [5,28]:Integer, [5,29]:Integer, [5,30]:Integer, [5,31]:Integer, [5,32]:Integer, [5,33]:Integer, [5,34]:Integer, [5,35]:Integer, [5,36]:Integer, [5,37]:Integer, [5,38]:Integer, [5,39]:Integer, [6]:Pointer, [6,0]:Pointer, [6,0,-1]:Float@double, [6,8]:Integer, [6,9]:Integer, [6,10]:Integer, [6,11]:Integer, [6,12]:Integer, [6,13]:Integer, [6,14]:Integer, [6,15]:Integer, [6,16]:Integer, [6,17]:Integer, [6,18]:Integer, [6,19]:Integer, [6,20]:Integer, [6,21]:Integer, [6,22]:Integer, [6,23]:Integer, [6,24]:Integer, [6,25]:Integer, [6,26]:Integer, [6,27]:Integer, [6,28]:Integer, [6,29]:Integer, [6,30]:Integer, [6,31]:Integer, [6,32]:Integer, [6,33]:Integer, [6,34]:Integer, [6,35]:Integer, [6,36]:Integer, [6,37]:Integer, [6,38]:Integer, [6,39]:Integer, [7]:Pointer, [7,0]:Pointer, [7,0,-1]:Float@double, [7,8]:Integer, [7,9]:Integer, [7,10]:Integer, [7,11]:Integer, [7,12]:Integer, [7,13]:Integer, [7,14]:Integer, [7,15]:Integer, [7,16]:Integer, [7,17]:Integer, [7,18]:Integer, [7,19]:Integer, [7,20]:Integer, [7,21]:Integer, [7,22]:Integer, [7,23]:Integer, [7,24]:Integer, [7,25]:Integer, [7,26]:Integer, [7,27]:Integer, [7,28]:Integer, [7,29]:Integer, [7,30]:Integer, [7,31]:Integer, [7,32]:Integer, [7,33]:Integer, [7,34]:Integer, [7,35]:Integer, [7,36]:Integer, [7,37]:Integer, [7,38]:Integer, [7,39]:Integer, [8]:Integer, [9]:Integer, [10]:Integer, [11]:Integer, [12]:Integer, [13]:Integer, [14]:Integer, [15]:Integer, [16]:Pointer, [16,0]:Pointer, [16,0,-1]:Float@double, [16,8]:Integer, [16,9]:Integer, [16,10]:Integer, [16,11]:Integer, [16,12]:Integer, [16,13]:Integer, [16,14]:Integer, [16,15]:Integer, [16,16]:Integer, [16,17]:Integer, [16,18]:Integer, [16,19]:Integer, [16,20]:Integer, [16,21]:Integer, [16,22]:Integer, [16,23]:Integer, [16,24]:Integer, [16,25]:Integer, [16,26]:Integer, [16,27]:Integer, [16,28]:Integer, [16,29]:Integer, [16,30]:Integer, [16,31]:Integer, [16,32]:Integer, [16,33]:Integer, [16,34]:Integer, [16,35]:Integer, [16,36]:Integer, [16,37]:Integer, [16,38]:Integer, [16,39]:Integer, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything}, intvals: {}
  %26 = insertvalue { { {} addrspace(10)*, i64 }, {} addrspace(10)*, {} addrspace(10)* } %25, {} addrspace(10)* %7, 2, !dbg !188: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
  %27 = addrspacecast [1 x [1 x i64]]* %newstruct2 to [1 x [1 x i64]] addrspace(11)*, !dbg !105: {[-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: {}
</analysis>

Illegal updateAnalysis prev:

{[0,0]:Pointer, [0,0,-1]:Float@double, [0,8]:Integer, [0,9]:Integer, [0,10]:Integer, [0,11]:Integer, [0,12]:Integer, [0,13]:Integer, [0,14]:Integer, [0,15]:Integer, [0,16]:Integer, [0,17]:Integer, [0,18]:Integer, [0,19]:Integer, [0,20]:Integer, [0,21]:Integer, [0,22]:Integer, [0,23]:Integer, [0,24]:Integer, [0,25]:Integer, [0,26]:Integer, [0,27]:Integer, [0,28]:Integer, [0,29]:Integer, [0,30]:Integer, [0,31]:Integer, [0,32]:Integer, [0,33]:Integer, [0,34]:Integer, [0,35]:Integer, [0,36]:Integer, [0,37]:Integer, [0,38]:Integer, [0,39]:Integer, [1,0]:Pointer, [1,0,-1]:Float@double, [1,8]:Integer, [1,9]:Integer, [1,10]:Integer, [1,11]:Integer, [1,12]:Integer, [1,13]:Integer, [1,14]:Integer, [1,15]:Integer, [1,16]:Integer, [1,17]:Integer, [1,18]:Integer, [1,19]:Integer, [1,20]:Integer, [1,21]:Integer, [1,22]:Integer, [1,23]:Integer, [1,24]:Integer, [1,25]:Integer, [1,26]:Integer, [1,27]:Integer, [1,28]:Integer, [1,29]:Integer, [1,30]:Integer, [1,31]:Integer, [1,32]:Integer, [1,33]:Integer, [1,34]:Integer, [1,35]:Integer, [1,36]:Integer, [1,37]:Integer, [1,38]:Integer, [1,39]:Integer, [2,0]:Pointer, [2,0,-1]:Float@double, [2,8]:Integer, [2,9]:Integer, [2,10]:Integer, [2,11]:Integer, [2,12]:Integer, [2,13]:Integer, [2,14]:Integer, [2,15]:Integer, [2,16]:Integer, [2,17]:Integer, [2,18]:Integer, [2,19]:Integer, [2,20]:Integer, [2,21]:Integer, [2,22]:Integer, [2,23]:Integer, [2,24]:Integer, [2,25]:Integer, [2,26]:Integer, [2,27]:Integer, [2,28]:Integer, [2,29]:Integer, [2,30]:Integer, [2,31]:Integer, [2,32]:Integer, [2,33]:Integer, [2,34]:Integer, [2,35]:Integer, [2,36]:Integer, [2,37]:Integer, [2,38]:Integer, [2,39]:Integer, [3,0]:Pointer, [3,0,-1]:Float@double, [3,8]:Integer, [3,9]:Integer, [3,10]:Integer, [3,11]:Integer, [3,12]:Integer, [3,13]:Integer, [3,14]:Integer, [3,15]:Integer, [3,16]:Integer, [3,17]:Integer, [3,18]:Integer, [3,19]:Integer, [3,20]:Integer, [3,21]:Integer, [3,22]:Integer, [3,23]:Integer, [3,24]:Integer, [3,25]:Integer, [3,26]:Integer, [3,27]:Integer, [3,28]:Integer, [3,29]:Integer, [3,30]:Integer, [3,31]:Integer, [3,32]:Integer, [3,33]:Integer, [3,34]:Integer, [3,35]:Integer, [3,36]:Integer, [3,37]:Integer, [3,38]:Integer, [3,39]:Integer, [4,0]:Pointer, [4,0,-1]:Float@double, [4,8]:Integer, [4,9]:Integer, [4,10]:Integer, [4,11]:Integer, [4,12]:Integer, [4,13]:Integer, [4,14]:Integer, [4,15]:Integer, [4,16]:Integer, [4,17]:Integer, [4,18]:Integer, [4,19]:Integer, [4,20]:Integer, [4,21]:Integer, [4,22]:Integer, [4,23]:Integer, [4,24]:Integer, [4,25]:Integer, [4,26]:Integer, [4,27]:Integer, [4,28]:Integer, [4,29]:Integer, [4,30]:Integer, [4,31]:Integer, [4,32]:Integer, [4,33]:Integer, [4,34]:Integer, [4,35]:Integer, [4,36]:Integer, [4,37]:Integer, [4,38]:Integer, [4,39]:Integer, [5,0]:Pointer, [5,0,-1]:Float@double, [5,8]:Integer, [5,9]:Integer, [5,10]:Integer, [5,11]:Integer, [5,12]:Integer, [5,13]:Integer, [5,14]:Integer, [5,15]:Integer, [5,16]:Integer, [5,17]:Integer, [5,18]:Integer, [5,19]:Integer, [5,20]:Integer, [5,21]:Integer, [5,22]:Integer, [5,23]:Integer, [5,24]:Integer, [5,25]:Integer, [5,26]:Integer, [5,27]:Integer, [5,28]:Integer, [5,29]:Integer, [5,30]:Integer, [5,31]:Integer, [5,32]:Integer, [5,33]:Integer, [5,34]:Integer, [5,35]:Integer, [5,36]:Integer, [5,37]:Integer, [5,38]:Integer, [5,39]:Integer, [6,0]:Pointer, [6,0,-1]:Float@double, [6,8]:Integer, [6,9]:Integer, [6,10]:Integer, [6,11]:Integer, [6,12]:Integer, [6,13]:Integer, [6,14]:Integer, [6,15]:Integer, [6,16]:Integer, [6,17]:Integer, [6,18]:Integer, [6,19]:Integer, [6,20]:Integer, [6,21]:Integer, [6,22]:Integer, [6,23]:Integer, [6,24]:Integer, [6,25]:Integer, [6,26]:Integer, [6,27]:Integer, [6,28]:Integer, [6,29]:Integer, [6,30]:Integer, [6,31]:Integer, [6,32]:Integer, [6,33]:Integer, [6,34]:Integer, [6,35]:Integer, [6,36]:Integer, [6,37]:Integer, [6,38]:Integer, [6,39]:Integer, [7,0]:Pointer, [7,0,-1]:Float@double, [7,8]:Integer, [7,9]:Integer, [7,10]:Integer, [7,11]:Integer, [7,12]:Integer, [7,13]:Integer, [7,14]:Integer, [7,15]:Integer, [7,16]:Integer, [7,17]:Integer, [7,18]:Integer, [7,19]:Integer, [7,20]:Integer, [7,21]:Integer, [7,22]:Integer, [7,23]:Integer, [7,24]:Integer, [7,25]:Integer, [7,26]:Integer, [7,27]:Integer, [7,28]:Integer, [7,29]:Integer, [7,30]:Integer, [7,31]:Integer, [7,32]:Integer, [7,33]:Integer, [7,34]:Integer, [7,35]:Integer, [7,36]:Integer, [7,37]:Integer, [7,38]:Integer, [7,39]:Integer, [8]:Integer, [9]:Integer, [10]:Integer, [11]:Integer, [12]:Integer, [13]:Integer, [14]:Integer, [15]:Integer, [16]:Pointer, [16,0]:Pointer, [16,0,-1]:Float@double, [16,8]:Integer, [16,9]:Integer, [16,10]:Integer, [16,11]:Integer, [16,12]:Integer, [16,13]:Integer, [16,14]:Integer, [16,15]:Integer, [16,16]:Integer, [16,17]:Integer, [16,18]:Integer, [16,19]:Integer, [16,20]:Integer, [16,21]:Integer, [16,22]:Integer, [16,23]:Integer, [16,24]:Integer, [16,25]:Integer, [16,26]:Integer, [16,27]:Integer, [16,28]:Integer, [16,29]:Integer, [16,30]:Integer, [16,31]:Integer, [16,32]:Integer, [16,33]:Integer, [16,34]:Integer, [16,35]:Integer, [16,36]:Integer, [16,37]:Integer, [16,38]:Integer, [16,39]:Integer, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything} new:

{[0]:Pointer, [0,0]:Pointer, [0,0,-1]:Float@double, [0,8]:Integer, [0,9]:Integer, [0,10]:Integer, [0,11]:Integer, [0,12]:Integer, [0,13]:Integer, [0,14]:Integer, [0,15]:Integer, [0,16]:Integer, [0,17]:Integer, [0,18]:Integer, [0,19]:Integer, [0,20]:Integer, [0,21]:Integer, [0,22]:Integer, [0,23]:Integer, [0,24]:Integer, [0,25]:Integer, [0,26]:Integer, [0,27]:Integer, [0,28]:Integer, [0,29]:Integer, [0,30]:Integer, [0,31]:Integer, [0,32]:Integer, [0,33]:Integer, [0,34]:Integer, [0,35]:Integer, [0,36]:Integer, [0,37]:Integer, [0,38]:Integer, [0,39]:Integer, [1]:Pointer, [1,0]:Pointer, [1,0,-1]:Float@double, [1,8]:Integer, [1,9]:Integer, [1,10]:Integer, [1,11]:Integer, [1,12]:Integer, [1,13]:Integer, [1,14]:Integer, [1,15]:Integer, [1,16]:Integer, [1,17]:Integer, [1,18]:Integer, [1,19]:Integer, [1,20]:Integer, [1,21]:Integer, [1,22]:Integer, [1,23]:Integer, [1,24]:Integer, [1,25]:Integer, [1,26]:Integer, [1,27]:Integer, [1,28]:Integer, [1,29]:Integer, [1,30]:Integer, [1,31]:Integer, [1,32]:Integer, [1,33]:Integer, [1,34]:Integer, [1,35]:Integer, [1,36]:Integer, [1,37]:Integer, [1,38]:Integer, [1,39]:Integer, [2]:Pointer, [2,0]:Pointer, [2,0,-1]:Float@double, [2,8]:Integer, [2,9]:Integer, [2,10]:Integer, [2,11]:Integer, [2,12]:Integer, [2,13]:Integer, [2,14]:Integer, [2,15]:Integer, [2,16]:Integer, [2,17]:Integer, [2,18]:Integer, [2,19]:Integer, [2,20]:Integer, [2,21]:Integer, [2,22]:Integer, [2,23]:Integer, [2,24]:Integer, [2,25]:Integer, [2,26]:Integer, [2,27]:Integer, [2,28]:Integer, [2,29]:Integer, [2,30]:Integer, [2,31]:Integer, [2,32]:Integer, [2,33]:Integer, [2,34]:Integer, [2,35]:Integer, [2,36]:Integer, [2,37]:Integer, [2,38]:Integer, [2,39]:Integer, [3]:Pointer, [3,0]:Pointer, [3,0,-1]:Float@double, [3,8]:Integer, [3,9]:Integer, [3,10]:Integer, [3,11]:Integer, [3,12]:Integer, [3,13]:Integer, [3,14]:Integer, [3,15]:Integer, [3,16]:Integer, [3,17]:Integer, [3,18]:Integer, [3,19]:Integer, [3,20]:Integer, [3,21]:Integer, [3,22]:Integer, [3,23]:Integer, [3,24]:Integer, [3,25]:Integer, [3,26]:Integer, [3,27]:Integer, [3,28]:Integer, [3,29]:Integer, [3,30]:Integer, [3,31]:Integer, [3,32]:Integer, [3,33]:Integer, [3,34]:Integer, [3,35]:Integer, [3,36]:Integer, [3,37]:Integer, [3,38]:Integer, [3,39]:Integer, [4]:Pointer, [4,0]:Pointer, [4,0,-1]:Float@double, [4,8]:Integer, [4,9]:Integer, [4,10]:Integer, [4,11]:Integer, [4,12]:Integer, [4,13]:Integer, [4,14]:Integer, [4,15]:Integer, [4,16]:Integer, [4,17]:Integer, [4,18]:Integer, [4,19]:Integer, [4,20]:Integer, [4,21]:Integer, [4,22]:Integer, [4,23]:Integer, [4,24]:Integer, [4,25]:Integer, [4,26]:Integer, [4,27]:Integer, [4,28]:Integer, [4,29]:Integer, [4,30]:Integer, [4,31]:Integer, [4,32]:Integer, [4,33]:Integer, [4,34]:Integer, [4,35]:Integer, [4,36]:Integer, [4,37]:Integer, [4,38]:Integer, [4,39]:Integer, [5]:Pointer, [5,0]:Pointer, [5,0,-1]:Float@double, [5,8]:Integer, [5,9]:Integer, [5,10]:Integer, [5,11]:Integer, [5,12]:Integer, [5,13]:Integer, [5,14]:Integer, [5,15]:Integer, [5,16]:Integer, [5,17]:Integer, [5,18]:Integer, [5,19]:Integer, [5,20]:Integer, [5,21]:Integer, [5,22]:Integer, [5,23]:Integer, [5,24]:Integer, [5,25]:Integer, [5,26]:Integer, [5,27]:Integer, [5,28]:Integer, [5,29]:Integer, [5,30]:Integer, [5,31]:Integer, [5,32]:Integer, [5,33]:Integer, [5,34]:Integer, [5,35]:Integer, [5,36]:Integer, [5,37]:Integer, [5,38]:Integer, [5,39]:Integer, [6]:Pointer, [6,0]:Pointer, [6,0,-1]:Float@double, [6,8]:Integer, [6,9]:Integer, [6,10]:Integer, [6,11]:Integer, [6,12]:Integer, [6,13]:Integer, [6,14]:Integer, [6,15]:Integer, [6,16]:Integer, [6,17]:Integer, [6,18]:Integer, [6,19]:Integer, [6,20]:Integer, [6,21]:Integer, [6,22]:Integer, [6,23]:Integer, [6,24]:Integer, [6,25]:Integer, [6,26]:Integer, [6,27]:Integer, [6,28]:Integer, [6,29]:Integer, [6,30]:Integer, [6,31]:Integer, [6,32]:Integer, [6,33]:Integer, [6,34]:Integer, [6,35]:Integer, [6,36]:Integer, [6,37]:Integer, [6,38]:Integer, [6,39]:Integer, [7]:Pointer, [7,0]:Pointer, [7,0,-1]:Float@double, [7,8]:Integer, [7,9]:Integer, [7,10]:Integer, [7,11]:Integer, [7,12]:Integer, [7,13]:Integer, [7,14]:Integer, [7,15]:Integer, [7,16]:Integer, [7,17]:Integer, [7,18]:Integer, [7,19]:Integer, [7,20]:Integer, [7,21]:Integer, [7,22]:Integer, [7,23]:Integer, [7,24]:Integer, [7,25]:Integer, [7,26]:Integer, [7,27]:Integer, [7,28]:Integer, [7,29]:Integer, [7,30]:Integer, [7,31]:Integer, [7,32]:Integer, [7,33]:Integer, [7,34]:Integer, [7,35]:Integer, [7,36]:Integer, [7,37]:Integer, [7,38]:Integer, [7,39]:Integer, [8]:Pointer, [8,0]:Pointer, [8,0,-1]:Float@double, [8,8]:Integer, [8,9]:Integer, [8,10]:Integer, [8,11]:Integer, [8,12]:Integer, [8,13]:Integer, [8,14]:Integer, [8,15]:Integer, [8,16]:Integer, [8,17]:Integer, [8,18]:Integer, [8,19]:Integer, [8,20]:Integer, [8,21]:Integer, [8,22]:Integer, [8,23]:Integer, [8,24]:Integer, [8,25]:Integer, [8,26]:Integer, [8,27]:Integer, [8,28]:Integer, [8,29]:Integer, [8,30]:Integer, [8,31]:Integer, [8,32]:Integer, [8,33]:Integer, [8,34]:Integer, [8,35]:Integer, [8,36]:Integer, [8,37]:Integer, [8,38]:Integer, [8,39]:Integer, [9]:Pointer, [9,0]:Pointer, [9,0,-1]:Float@double, [9,8]:Integer, [9,9]:Integer, [9,10]:Integer, [9,11]:Integer, [9,12]:Integer, [9,13]:Integer, [9,14]:Integer, [9,15]:Integer, [9,16]:Integer, [9,17]:Integer, [9,18]:Integer, [9,19]:Integer, [9,20]:Integer, [9,21]:Integer, [9,22]:Integer, [9,23]:Integer, [9,24]:Integer, [9,25]:Integer, [9,26]:Integer, [9,27]:Integer, [9,28]:Integer, [9,29]:Integer, [9,30]:Integer, [9,31]:Integer, [9,32]:Integer, [9,33]:Integer, [9,34]:Integer, [9,35]:Integer, [9,36]:Integer, [9,37]:Integer, [9,38]:Integer, [9,39]:Integer, [10]:Pointer, [10,0]:Pointer, [10,0,-1]:Float@double, [10,8]:Integer, [10,9]:Integer, [10,10]:Integer, [10,11]:Integer, [10,12]:Integer, [10,13]:Integer, [10,14]:Integer, [10,15]:Integer, [10,16]:Integer, [10,17]:Integer, [10,18]:Integer, [10,19]:Integer, [10,20]:Integer, [10,21]:Integer, [10,22]:Integer, [10,23]:Integer, [10,24]:Integer, [10,25]:Integer, [10,26]:Integer, [10,27]:Integer, [10,28]:Integer, [10,29]:Integer, [10,30]:Integer, [10,31]:Integer, [10,32]:Integer, [10,33]:Integer, [10,34]:Integer, [10,35]:Integer, [10,36]:Integer, [10,37]:Integer, [10,38]:Integer, [10,39]:Integer, [11]:Pointer, [11,0]:Pointer, [11,0,-1]:Float@double, [11,8]:Integer, [11,9]:Integer, [11,10]:Integer, [11,11]:Integer, [11,12]:Integer, [11,13]:Integer, [11,14]:Integer, [11,15]:Integer, [11,16]:Integer, [11,17]:Integer, [11,18]:Integer, [11,19]:Integer, [11,20]:Integer, [11,21]:Integer, [11,22]:Integer, [11,23]:Integer, [11,24]:Integer, [11,25]:Integer, [11,26]:Integer, [11,27]:Integer, [11,28]:Integer, [11,29]:Integer, [11,30]:Integer, [11,31]:Integer, [11,32]:Integer, [11,33]:Integer, [11,34]:Integer, [11,35]:Integer, [11,36]:Integer, [11,37]:Integer, [11,38]:Integer, [11,39]:Integer, [12]:Pointer, [12,0]:Pointer, [12,0,-1]:Float@double, [12,8]:Integer, [12,9]:Integer, [12,10]:Integer, [12,11]:Integer, [12,12]:Integer, [12,13]:Integer, [12,14]:Integer, [12,15]:Integer, [12,16]:Integer, [12,17]:Integer, [12,18]:Integer, [12,19]:Integer, [12,20]:Integer, [12,21]:Integer, [12,22]:Integer, [12,23]:Integer, [12,24]:Integer, [12,25]:Integer, [12,26]:Integer, [12,27]:Integer, [12,28]:Integer, [12,29]:Integer, [12,30]:Integer, [12,31]:Integer, [12,32]:Integer, [12,33]:Integer, [12,34]:Integer, [12,35]:Integer, [12,36]:Integer, [12,37]:Integer, [12,38]:Integer, [12,39]:Integer, [13]:Pointer, [13,0]:Pointer, [13,0,-1]:Float@double, [13,8]:Integer, [13,9]:Integer, [13,10]:Integer, [13,11]:Integer, [13,12]:Integer, [13,13]:Integer, [13,14]:Integer, [13,15]:Integer, [13,16]:Integer, [13,17]:Integer, [13,18]:Integer, [13,19]:Integer, [13,20]:Integer, [13,21]:Integer, [13,22]:Integer, [13,23]:Integer, [13,24]:Integer, [13,25]:Integer, [13,26]:Integer, [13,27]:Integer, [13,28]:Integer, [13,29]:Integer, [13,30]:Integer, [13,31]:Integer, [13,32]:Integer, [13,33]:Integer, [13,34]:Integer, [13,35]:Integer, [13,36]:Integer, [13,37]:Integer, [13,38]:Integer, [13,39]:Integer, [14]:Pointer, [14,0]:Pointer, [14,0,-1]:Float@double, [14,8]:Integer, [14,9]:Integer, [14,10]:Integer, [14,11]:Integer, [14,12]:Integer, [14,13]:Integer, [14,14]:Integer, [14,15]:Integer, [14,16]:Integer, [14,17]:Integer, [14,18]:Integer, [14,19]:Integer, [14,20]:Integer, [14,21]:Integer, [14,22]:Integer, [14,23]:Integer, [14,24]:Integer, [14,25]:Integer, [14,26]:Integer, [14,27]:Integer, [14,28]:Integer, [14,29]:Integer, [14,30]:Integer, [14,31]:Integer, [14,32]:Integer, [14,33]:Integer, [14,34]:Integer, [14,35]:Integer, [14,36]:Integer, [14,37]:Integer, [14,38]:Integer, [14,39]:Integer, [15]:Pointer, [15,0]:Pointer, [15,0,-1]:Float@double, [15,8]:Integer, [15,9]:Integer, [15,10]:Integer, [15,11]:Integer, [15,12]:Integer, [15,13]:Integer, [15,14]:Integer, [15,15]:Integer, [15,16]:Integer, [15,17]:Integer, [15,18]:Integer, [15,19]:Integer, [15,20]:Integer, [15,21]:Integer, [15,22]:Integer, [15,23]:Integer, [15,24]:Integer, [15,25]:Integer, [15,26]:Integer, [15,27]:Integer, [15,28]:Integer, [15,29]:Integer, [15,30]:Integer, [15,31]:Integer, [15,32]:Integer, [15,33]:Integer, [15,34]:Integer, [15,35]:Integer, [15,36]:Integer, [15,37]:Integer, [15,38]:Integer, [15,39]:Integer, [16]:Pointer, [16,0]:Pointer, [16,0,-1]:Float@double, [16,8]:Integer, [16,9]:Integer, [16,10]:Integer, [16,11]:Integer, [16,12]:Integer, [16,13]:Integer, [16,14]:Integer, [16,15]:Integer, [16,16]:Integer, [16,17]:Integer, [16,18]:Integer, [16,19]:Integer, [16,20]:Integer, [16,21]:Integer, [16,22]:Integer, [16,23]:Integer, [16,24]:Integer, [16,25]:Integer, [16,26]:Integer, [16,27]:Integer, [16,28]:Integer, [16,29]:Integer, [16,30]:Integer, [16,31]:Integer, [16,32]:Integer, [16,33]:Integer, [16,34]:Integer, [16,35]:Integer, [16,36]:Integer, [16,37]:Integer, [16,38]:Integer, [16,39]:Integer, [17]:Pointer, [17,0]:Pointer, [17,0,-1]:Float@double, [17,8]:Integer, [17,9]:Integer, [17,10]:Integer, [17,11]:Integer, [17,12]:Integer, [17,13]:Integer, [17,14]:Integer, [17,15]:Integer, [17,16]:Integer, [17,17]:Integer, [17,18]:Integer, [17,19]:Integer, [17,20]:Integer, [17,21]:Integer, [17,22]:Integer, [17,23]:Integer, [17,24]:Integer, [17,25]:Integer, [17,26]:Integer, [17,27]:Integer, [17,28]:Integer, [17,29]:Integer, [17,30]:Integer, [17,31]:Integer, [17,32]:Integer, [17,33]:Integer, [17,34]:Integer, [17,35]:Integer, [17,36]:Integer, [17,37]:Integer, [17,38]:Integer, [17,39]:Integer, [18]:Pointer, [18,0]:Pointer, [18,0,-1]:Float@double, [18,8]:Integer, [18,9]:Integer, [18,10]:Integer, [18,11]:Integer, [18,12]:Integer, [18,13]:Integer, [18,14]:Integer, [18,15]:Integer, [18,16]:Integer, [18,17]:Integer, [18,18]:Integer, [18,19]:Integer, [18,20]:Integer, [18,21]:Integer, [18,22]:Integer, [18,23]:Integer, [18,24]:Integer, [18,25]:Integer, [18,26]:Integer, [18,27]:Integer, [18,28]:Integer, [18,29]:Integer, [18,30]:Integer, [18,31]:Integer, [18,32]:Integer, [18,33]:Integer, [18,34]:Integer, [18,35]:Integer, [18,36]:Integer, [18,37]:Integer, [18,38]:Integer, [18,39]:Integer, [19]:Pointer, [19,0]:Pointer, [19,0,-1]:Float@double, [19,8]:Integer, [19,9]:Integer, [19,10]:Integer, [19,11]:Integer, [19,12]:Integer, [19,13]:Integer, [19,14]:Integer, [19,15]:Integer, [19,16]:Integer, [19,17]:Integer, [19,18]:Integer, [19,19]:Integer, [19,20]:Integer, [19,21]:Integer, [19,22]:Integer, [19,23]:Integer, [19,24]:Integer, [19,25]:Integer, [19,26]:Integer, [19,27]:Integer, [19,28]:Integer, [19,29]:Integer, [19,30]:Integer, [19,31]:Integer, [19,32]:Integer, [19,33]:Integer, [19,34]:Integer, [19,35]:Integer, [19,36]:Integer, [19,37]:Integer, [19,38]:Integer, [19,39]:Integer, [20]:Pointer, [20,0]:Pointer, [20,0,-1]:Float@double, [20,8]:Integer, [20,9]:Integer, [20,10]:Integer, [20,11]:Integer, [20,12]:Integer, [20,13]:Integer, [20,14]:Integer, [20,15]:Integer, [20,16]:Integer, [20,17]:Integer, [20,18]:Integer, [20,19]:Integer, [20,20]:Integer, [20,21]:Integer, [20,22]:Integer, [20,23]:Integer, [20,24]:Integer, [20,25]:Integer, [20,26]:Integer, [20,27]:Integer, [20,28]:Integer, [20,29]:Integer, [20,30]:Integer, [20,31]:Integer, [20,32]:Integer, [20,33]:Integer, [20,34]:Integer, [20,35]:Integer, [20,36]:Integer, [20,37]:Integer, [20,38]:Integer, [20,39]:Integer, [21]:Pointer, [21,0]:Pointer, [21,0,-1]:Float@double, [21,8]:Integer, [21,9]:Integer, [21,10]:Integer, [21,11]:Integer, [21,12]:Integer, [21,13]:Integer, [21,14]:Integer, [21,15]:Integer, [21,16]:Integer, [21,17]:Integer, [21,18]:Integer, [21,19]:Integer, [21,20]:Integer, [21,21]:Integer, [21,22]:Integer, [21,23]:Integer, [21,24]:Integer, [21,25]:Integer, [21,26]:Integer, [21,27]:Integer, [21,28]:Integer, [21,29]:Integer, [21,30]:Integer, [21,31]:Integer, [21,32]:Integer, [21,33]:Integer, [21,34]:Integer, [21,35]:Integer, [21,36]:Integer, [21,37]:Integer, [21,38]:Integer, [21,39]:Integer, [22]:Pointer, [22,0]:Pointer, [22,0,-1]:Float@double, [22,8]:Integer, [22,9]:Integer, [22,10]:Integer, [22,11]:Integer, [22,12]:Integer, [22,13]:Integer, [22,14]:Integer, [22,15]:Integer, [22,16]:Integer, [22,17]:Integer, [22,18]:Integer, [22,19]:Integer, [22,20]:Integer, [22,21]:Integer, [22,22]:Integer, [22,23]:Integer, [22,24]:Integer, [22,25]:Integer, [22,26]:Integer, [22,27]:Integer, [22,28]:Integer, [22,29]:Integer, [22,30]:Integer, [22,31]:Integer, [22,32]:Integer, [22,33]:Integer, [22,34]:Integer, [22,35]:Integer, [22,36]:Integer, [22,37]:Integer, [22,38]:Integer, [22,39]:Integer, [23]:Pointer, [23,0]:Pointer, [23,0,-1]:Float@double, [23,8]:Integer, [23,9]:Integer, [23,10]:Integer, [23,11]:Integer, [23,12]:Integer, [23,13]:Integer, [23,14]:Integer, [23,15]:Integer, [23,16]:Integer, [23,17]:Integer, [23,18]:Integer, [23,19]:Integer, [23,20]:Integer, [23,21]:Integer, [23,22]:Integer, [23,23]:Integer, [23,24]:Integer, [23,25]:Integer, [23,26]:Integer, [23,27]:Integer, [23,28]:Integer, [23,29]:Integer, [23,30]:Integer, [23,31]:Integer, [23,32]:Integer, [23,33]:Integer, [23,34]:Integer, [23,35]:Integer, [23,36]:Integer, [23,37]:Integer, [23,38]:Integer, [23,39]:Integer}

val:   %25 = insertvalue { { {} addrspace(10)*, i64 }, {} addrspace(10)*, {} addrspace(10)* } %24, {} addrspace(10)* %11, 1, !dbg !188 origin=  %26 = insertvalue { { {} addrspace(10)*, i64 }, {} addrspace(10)*, {} addrspace(10)* } %25, {} addrspace(10)* %7, 2, !dbg !188
MethodInstance for Base._unsafe_getindex(::IndexLinear, ::Vector{Float64}, ::Vector{Int64})

Caused by:
Stacktrace:
 [1] _unsafe_getindex
   @ ./multidimensional.jl:904
wsmoses commented 4 months ago

This now succeeds for me on main, closing

tcovert commented 4 months ago

For the record I still get an error on the Hv_theta!() call. I'm running Julia 1.9.4, and the most recently tagged Enzyme release in case that matters. Maybe I need Julia 1.10?

Here's the top of the error log I'm getting:

julia> Hv_theta!(hv, v, y, X, theta, gs)
ERROR: Enzyme compilation failed due to illegal type analysis.
Current scope: 
; Function Attrs: mustprogress willreturn
define private fastcc "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}" { { {} addrspace(10)*, i64, i64 }, {} addrspace(10)*, {} addrspace(10)* } @preprocess_augmented_julia__unsafe_getindex_3634({} addrspace(10)* nocapture noundef nonnull readonly align 16 dereferenceable(40) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}" "enzymejl_parmtype"="4766898112" "enzymejl_parmtype_ref"="2" %0, {} addrspace(10)* nocapture noundef nonnull readonly align 16 dereferenceable(40) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}" "enzymejl_parmtype"="4764759872" "enzymejl_parmtype_ref"="2" %1) unnamed_addr #7 !dbg !1800 {
top:

it continues and ends with this:

val:   %70 = insertvalue { { {} addrspace(10)*, i64, i64 }, {} addrspace(10)*, {} addrspace(10)* } %69, {} addrspace(10)* %13, 1, !dbg !162 origin=  %71 = insertvalue { { {} addrspace(10)*, i64, i64 }, {} addrspace(10)*, {} addrspace(10)* } %70, {} addrspace(10)* %9, 2, !dbg !162
MethodInstance for Base._unsafe_getindex(::IndexLinear, ::Vector{Float64}, ::Vector{Int64})

Caused by:
Stacktrace:
 [1] _unsafe_getindex
   @ ./multidimensional.jl:876

Stacktrace:
  [1] julia_error(cstr::Cstring, val::Ptr{LLVM.API.LLVMOpaqueValue}, errtype::Enzyme.API.ErrorType, data::Ptr{Nothing}, data2::Ptr{LLVM.API.LLVMOpaqueValue}, B::Ptr{LLVM.API.LLVMOpaqueBuilder})
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/qd8AI/src/compiler.jl:1993
  [2] EnzymeCreateForwardDiff(logic::Enzyme.Logic, todiff::LLVM.Function, retType::Enzyme.API.CDIFFE_TYPE, constant_args::Vector{Enzyme.API.CDIFFE_TYPE}, TA::Enzyme.TypeAnalysis, returnValue::Bool, mode::Enzyme.API.CDerivativeMode, width::Int64, additionalArg::Ptr{Nothing}, typeInfo::Enzyme.FnTypeInfo, uncacheable_args::Vector{Bool})
    @ Enzyme.API ~/.julia/packages/Enzyme/qd8AI/src/api.jl:170
  [3] enzyme!(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, mod::LLVM.Module, primalf::LLVM.Function, TT::Type, mode::Enzyme.API.CDerivativeMode, width::Int64, parallel::Bool, actualRetType::Type, wrap::Bool, modifiedBetween::Tuple{Bool, Bool, Bool}, returnPrimal::Bool, expectedTapeType::Type, loweredArgs::Set{Int64}, boxedArgs::Set{Int64})
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/qd8AI/src/compiler.jl:3722
  [4] codegen(output::Symbol, job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}; libraries::Bool, deferred_codegen::Bool, optimize::Bool, toplevel::Bool, strip::Bool, validate::Bool, only_entry::Bool, parent_job::Nothing)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/qd8AI/src/compiler.jl:5851
  [5] codegen
    @ ~/.julia/packages/Enzyme/qd8AI/src/compiler.jl:5129 [inlined]
  [6] _thunk(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, postopt::Bool)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/qd8AI/src/compiler.jl:6658
  [7] _thunk
    @ ~/.julia/packages/Enzyme/qd8AI/src/compiler.jl:6658 [inlined]
  [8] cached_compilation
    @ ~/.julia/packages/Enzyme/qd8AI/src/compiler.jl:6696 [inlined]
  [9] (::Enzyme.Compiler.var"#28593#28594"{DataType, DataType, Enzyme.API.CDerivativeMode, Tuple{Bool, Bool, Bool}, Int64, Bool, Bool, UInt64, DataType})(ctx::LLVM.Context)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/qd8AI/src/compiler.jl:6765
 [10] JuliaContext(f::Enzyme.Compiler.var"#28593#28594"{DataType, DataType, Enzyme.API.CDerivativeMode, Tuple{Bool, Bool, Bool}, Int64, Bool, Bool, UInt64, DataType}; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ GPUCompiler ~/.julia/packages/GPUCompiler/nWT2N/src/driver.jl:52
 [11] JuliaContext(f::Function)
    @ GPUCompiler ~/.julia/packages/GPUCompiler/nWT2N/src/driver.jl:42
 [12] #s2008#28592
    @ ~/.julia/packages/Enzyme/qd8AI/src/compiler.jl:6716 [inlined]
 [13] var"#s2008#28592"(FA::Any, A::Any, TT::Any, Mode::Any, ModifiedBetween::Any, width::Any, ReturnPrimal::Any, ShadowInit::Any, World::Any, ABI::Any, ::Any, #unused#::Type, #unused#::Type, #unused#::Type, tt::Any, #unused#::Type, #unused#::Type, #unused#::Type, #unused#::Type, #unused#::Type, #unused#::Any)
    @ Enzyme.Compiler ./none:0
 [14] (::Core.GeneratedFunctionStub)(::Any, ::Vararg{Any})
    @ Core ./boot.jl:602
 [15] autodiff
    @ ~/.julia/packages/Enzyme/qd8AI/src/Enzyme.jl:415 [inlined]
 [16] autodiff
    @ ~/.julia/packages/Enzyme/qd8AI/src/Enzyme.jl:321 [inlined]
 [17] Hv_theta!(hv::Vector{Float64}, v::Vector{Float64}, y::Vector{Float64}, X::Matrix{Float64}, theta::Vector{Float64}, gs::Vector{Vector{Int64}})
    @ Main ./REPL[4]:7
 [18] top-level scope
    @ REPL[17]:1
wsmoses commented 4 months ago

No, we just haven't released Enzyme.jl main yet (where the fix should exist).

Hopefully will shortly but there's something weird going on with yggdrassil package registration today.

On Fri, Jun 28, 2024 at 4:44 PM Thomas R. Covert @.***> wrote:

For the record I still get an error on the Hv_theta!() call. I'm running Julia 1.9.4, and the most recently tagged Enzyme release in case that matters. Maybe I need Julia 1.10?

Here's the top of the error log I'm getting:

julia> Hv_theta!(hv, v, y, X, theta, gs) ERROR: Enzyme compilation failed due to illegal type analysis. Current scope: ; Function Attrs: mustprogress willreturn define private fastcc "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, @., [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}" { { {} addrspace(10), i64, i64 }, {} addrspace(10), {} addrspace(10) } @preprocess_augmented_julia__unsafe_getindex_3634({} addrspace(10) nocapture noundef nonnull readonly align 16 dereferenceable(40) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, @., [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}" "enzymejl_parmtype"="4766898112" "enzymejl_parmtype_ref"="2" %0, {} addrspace(10)* nocapture noundef nonnull readonly align 16 dereferenceable(40) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}" "enzymejl_parmtype"="4764759872" "enzymejl_parmtype_ref"="2" %1) unnamed_addr #7 !dbg !1800 { top:

it continues and ends with this:

val: %70 = insertvalue { { {} addrspace(10), i64, i64 }, {} addrspace(10), {} addrspace(10) } %69, {} addrspace(10) %13, 1, !dbg !162 origin= %71 = insertvalue { { {} addrspace(10), i64, i64 }, {} addrspace(10), {} addrspace(10) } %70, {} addrspace(10) %9, 2, !dbg !162 MethodInstance for Base._unsafe_getindex(::IndexLinear, ::Vector{Float64}, ::Vector{Int64})

Caused by: Stacktrace: [1] _unsafe_getindex @ ./multidimensional.jl:876

Stacktrace: [1] julia_error(cstr::Cstring, val::Ptr{LLVM.API.LLVMOpaqueValue}, errtype::Enzyme.API.ErrorType, data::Ptr{Nothing}, data2::Ptr{LLVM.API.LLVMOpaqueValue}, B::Ptr{LLVM.API.LLVMOpaqueBuilder}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/qd8AI/src/compiler.jl:1993 [2] EnzymeCreateForwardDiff(logic::Enzyme.Logic, todiff::LLVM.Function, retType::Enzyme.API.CDIFFE_TYPE, constant_args::Vector{Enzyme.API.CDIFFE_TYPE}, TA::Enzyme.TypeAnalysis, returnValue::Bool, mode::Enzyme.API.CDerivativeMode, width::Int64, additionalArg::Ptr{Nothing}, typeInfo::Enzyme.FnTypeInfo, uncacheable_args::Vector{Bool}) @ Enzyme.API ~/.julia/packages/Enzyme/qd8AI/src/api.jl:170 [3] enzyme!(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, mod::LLVM.Module, primalf::LLVM.Function, TT::Type, mode::Enzyme.API.CDerivativeMode, width::Int64, parallel::Bool, actualRetType::Type, wrap::Bool, modifiedBetween::Tuple{Bool, Bool, Bool}, returnPrimal::Bool, expectedTapeType::Type, loweredArgs::Set{Int64}, boxedArgs::Set{Int64}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/qd8AI/src/compiler.jl:3722 [4] codegen(output::Symbol, job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}; libraries::Bool, deferred_codegen::Bool, optimize::Bool, toplevel::Bool, strip::Bool, validate::Bool, only_entry::Bool, parent_job::Nothing) @ Enzyme.Compiler ~/.julia/packages/Enzyme/qd8AI/src/compiler.jl:5851 [5] codegen @ ~/.julia/packages/Enzyme/qd8AI/src/compiler.jl:5129 [inlined] [6] _thunk(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, postopt::Bool) @ Enzyme.Compiler ~/.julia/packages/Enzyme/qd8AI/src/compiler.jl:6658 [7] _thunk @ ~/.julia/packages/Enzyme/qd8AI/src/compiler.jl:6658 [inlined] [8] cached_compilation @ ~/.julia/packages/Enzyme/qd8AI/src/compiler.jl:6696 [inlined] [9] (::Enzyme.Compiler.var"#28593#28594"{DataType, DataType, Enzyme.API.CDerivativeMode, Tuple{Bool, Bool, Bool}, Int64, Bool, Bool, UInt64, DataType})(ctx::LLVM.Context) @ Enzyme.Compiler ~/.julia/packages/Enzyme/qd8AI/src/compiler.jl:6765 [10] JuliaContext(f::Enzyme.Compiler.var"#28593#28594"{DataType, DataType, Enzyme.API.CDerivativeMode, Tuple{Bool, Bool, Bool}, Int64, Bool, Bool, UInt64, DataType}; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}) @ GPUCompiler ~/.julia/packages/GPUCompiler/nWT2N/src/driver.jl:52 [11] JuliaContext(f::Function) @ GPUCompiler ~/.julia/packages/GPUCompiler/nWT2N/src/driver.jl:42 [12] #s2008#28592 @ ~/.julia/packages/Enzyme/qd8AI/src/compiler.jl:6716 [inlined] [13] var"#s2008#28592"(FA::Any, A::Any, TT::Any, Mode::Any, ModifiedBetween::Any, width::Any, ReturnPrimal::Any, ShadowInit::Any, World::Any, ABI::Any, ::Any, #unused#::Type, #unused#::Type, #unused#::Type, tt::Any, #unused#::Type, #unused#::Type, #unused#::Type, #unused#::Type, #unused#::Type, #unused#::Any) @ Enzyme.Compiler ./none:0 [14] (::Core.GeneratedFunctionStub)(::Any, ::Vararg{Any}) @ Core ./boot.jl:602 [15] autodiff @ ~/.julia/packages/Enzyme/qd8AI/src/Enzyme.jl:415 [inlined] [16] autodiff @ ~/.julia/packages/Enzyme/qd8AI/src/Enzyme.jl:321 [inlined] [17] Hv_theta!(hv::Vector{Float64}, v::Vector{Float64}, y::Vector{Float64}, X::Matrix{Float64}, theta::Vector{Float64}, gs::Vector{Vector{Int64}}) @ Main ./REPL[4]:7 [18] top-level scope @ REPL[17]:1

— Reply to this email directly, view it on GitHub https://github.com/EnzymeAD/Enzyme.jl/issues/1385#issuecomment-2197102044, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJTUXHAADWZWSSPBG7GMETZJVZE5AVCNFSM6AAAAABGC5XG2WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCOJXGEYDEMBUGQ . You are receiving this because you modified the open/close state.Message ID: @.***>

tcovert commented 4 months ago

even after the package update, this is still crashing for me:

the first 40 or so lines of the error log:

julia> Hv_theta!(hv, v, y, X, theta, gs)
ERROR: Enzyme compilation failed due to illegal type analysis.
Current scope: 
; Function Attrs: mustprogress willreturn
define private fastcc "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}" { { {} addrspace(10)*, i64, i64 }, {} addrspace(10)*, {} addrspace(10)* } @preprocess_augmented_julia__unsafe_getindex_3485({} addrspace(10)* nocapture noundef nonnull readonly align 16 dereferenceable(40) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}" "enzymejl_parmtype"="4767946688" "enzymejl_parmtype_ref"="2" %0, {} addrspace(10)* nocapture noundef nonnull readonly align 16 dereferenceable(40) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}" "enzymejl_parmtype"="4765808448" "enzymejl_parmtype_ref"="2" %1) unnamed_addr #7 !dbg !1799 {
top:
  %2 = call {}*** @julia.get_pgcstack() #35
  %3 = alloca [1 x [1 x i64]], align 8
  %4 = bitcast {} addrspace(10)* %1 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(10)*, !dbg !1800
  %5 = addrspacecast { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(10)* %4 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !1800
  %6 = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %5, i64 0, i32 1, !dbg !1800
  %7 = load i64, i64 addrspace(11)* %6, align 8, !dbg !1800, !tbaa !71, !range !

the bottom 40 or so lines:

MethodInstance for Base._unsafe_getindex(::IndexLinear, ::Vector{Float64}, ::Vector{Int64})

Caused by:
Stacktrace:
 [1] _unsafe_getindex
   @ ./multidimensional.jl:876

Stacktrace:
  [1] julia_error(cstr::Cstring, val::Ptr{LLVM.API.LLVMOpaqueValue}, errtype::Enzyme.API.ErrorType, data::Ptr{Nothing}, data2::Ptr{LLVM.API.LLVMOpaqueValue}, B::Ptr{LLVM.API.LLVMOpaqueBuilder})
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/baiSZ/src/compiler.jl:1993
  [2] EnzymeCreateForwardDiff(logic::Enzyme.Logic, todiff::LLVM.Function, retType::Enzyme.API.CDIFFE_TYPE, constant_args::Vector{Enzyme.API.CDIFFE_TYPE}, TA::Enzyme.TypeAnalysis, returnValue::Bool, mode::Enzyme.API.CDerivativeMode, width::Int64, additionalArg::Ptr{Nothing}, typeInfo::Enzyme.FnTypeInfo, uncacheable_args::Vector{Bool})
    @ Enzyme.API ~/.julia/packages/Enzyme/baiSZ/src/api.jl:170
  [3] enzyme!(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, mod::LLVM.Module, primalf::LLVM.Function, TT::Type, mode::Enzyme.API.CDerivativeMode, width::Int64, parallel::Bool, actualRetType::Type, wrap::Bool, modifiedBetween::Tuple{Bool, Bool, Bool}, returnPrimal::Bool, expectedTapeType::Type, loweredArgs::Set{Int64}, boxedArgs::Set{Int64})
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/baiSZ/src/compiler.jl:3722
  [4] codegen(output::Symbol, job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}; libraries::Bool, deferred_codegen::Bool, optimize::Bool, toplevel::Bool, strip::Bool, validate::Bool, only_entry::Bool, parent_job::Nothing)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/baiSZ/src/compiler.jl:5851
  [5] codegen
    @ ~/.julia/packages/Enzyme/baiSZ/src/compiler.jl:5129 [inlined]
  [6] _thunk(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, postopt::Bool)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/baiSZ/src/compiler.jl:6658
  [7] _thunk
    @ ~/.julia/packages/Enzyme/baiSZ/src/compiler.jl:6658 [inlined]
  [8] cached_compilation
    @ ~/.julia/packages/Enzyme/baiSZ/src/compiler.jl:6696 [inlined]
  [9] (::Enzyme.Compiler.var"#28593#28594"{DataType, DataType, Enzyme.API.CDerivativeMode, Tuple{Bool, Bool, Bool}, Int64, Bool, Bool, UInt64, DataType})(ctx::LLVM.Context)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/baiSZ/src/compiler.jl:6765
 [10] JuliaContext(f::Enzyme.Compiler.var"#28593#28594"{DataType, DataType, Enzyme.API.CDerivativeMode, Tuple{Bool, Bool, Bool}, Int64, Bool, Bool, UInt64, DataType}; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ GPUCompiler ~/.julia/packages/GPUCompiler/05oYT/src/driver.jl:52
 [11] JuliaContext(f::Function)
    @ GPUCompiler ~/.julia/packages/GPUCompiler/05oYT/src/driver.jl:42
 [12] #s2008#28592
    @ ~/.julia/packages/Enzyme/baiSZ/src/compiler.jl:6716 [inlined]
 [13] var"#s2008#28592"(FA::Any, A::Any, TT::Any, Mode::Any, ModifiedBetween::Any, width::Any, ReturnPrimal::Any, ShadowInit::Any, World::Any, ABI::Any, ::Any, #unused#::Type, #unused#::Type, #unused#::Type, tt::Any, #unused#::Type, #unused#::Type, #unused#::Type, #unused#::Type, #unused#::Type, #unused#::Any)
    @ Enzyme.Compiler ./none:0
 [14] (::Core.GeneratedFunctionStub)(::Any, ::Vararg{Any})
    @ Core ./boot.jl:602
 [15] autodiff
    @ ~/.julia/packages/Enzyme/baiSZ/src/Enzyme.jl:415 [inlined]
 [16] autodiff
    @ ~/.julia/packages/Enzyme/baiSZ/src/Enzyme.jl:321 [inlined]
 [17] Hv_theta!(hv::Vector{Float64}, v::Vector{Float64}, y::Vector{Float64}, X::Matrix{Float64}, theta::Vector{Float64}, gs::Vector{Vector{Int64}})
    @ Main ~/tmp/felogit_enzyme_mwe.jl:33
 [18] top-level scope
    @ REPL[2]:1

I'm on Julia 1.9.4. here's my package status:

(@v1.9) pkg> status
Status `~/.julia/environments/v1.9/Project.toml`
  [79adfba0] AdaptiveRegularization v0.1.0
  [69666777] Arrow v2.7.2
  [6e4b80f9] BenchmarkTools v1.5.0
  [1e616198] COSMO v0.8.9
  [324d7699] CategoricalArrays v0.10.8
  [61c947e1] Clarabel v0.9.0
  [a93c6f00] DataFrames v1.6.1
  [1313f7d8] DataFramesMeta v0.15.2
  [31c24e10] Distributions v0.25.109
  [7da242da] Enzyme v0.12.21
  [442a2c76] FastGaussQuadrature v1.0.2
⌅ [6a86dc24] FiniteDiff v2.22.0
  [f6369f11] ForwardDiff v0.10.36
  [b6b21f68] Ipopt v1.6.3
⌃ [10dff2fc] JSOSolvers v0.11.2
  [4076af6c] JuMP v1.22.2
  [2ab3a3ac] LogExpFunctions v0.3.28
  [f1d291b0] MLUtils v0.4.4
  [30dfa513] ManualNLPModels v0.1.6
  [b8f27783] MathOptInterface v1.31.0
⌅ [a4795742] NLPModels v0.20.0
  [0b1bfda6] OneHotArrays v0.2.5
  [0ce4ce61] ParametricOptInterface v0.7.0
  [01435c0c] Percival v0.7.2
  [14b8a8f1] PkgTemplates v0.7.51
  [37e2e3b7] ReverseDiff v1.15.3
  [295af30f] Revise v3.5.15
  [f2b01f46] Roots v2.1.5
⌅ [47a9eef4] SparseDiffTools v2.18.0
  [03a91e81] SplitApplyCombine v1.2.3
  [2913bbd2] StatsBase v0.34.3
  [3eaba693] StatsModels v0.7.3
  [ab02a1b2] TableOperations v1.2.0
  [bd369af6] Tables v1.11.1
  [e88e6eb3] Zygote v0.6.70
Info Packages marked with ⌃ and ⌅ have new versions available. Those with ⌃ may be upgradable, but those with ⌅ are restricted by compatibility constraints from upgrading. To see why use `status --outdated`

is this the signal I need to just upgrade to 1.10?