EnzymeAD / Enzyme.jl

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

Regression on differentiating Bessels.jl #941

Closed lxvm closed 1 year ago

lxvm commented 1 year ago

Hi,

I think there has been a regression on the issue reported in https://github.com/EnzymeAD/Enzyme.jl/issues/647 on differentiating Bessel functions. I tried both forward-mode and reverse-mode AD and traced down the error to Base.Math.paynehanek, though I believe the issue also involves Base.Math.DoubleFloat64 since Enzyme could differentiate paynehanek if I commented out the part with DoubleFloat64. I don't know how to read the error messages, but I thought I would open this issue to keep track

Here are the details of my Julia environment

pkg> status Enzyme Bessels
Status `/local/home/lxvm/projects/beams/Project.toml`
  [0e736298] Bessels v0.3.0-DEV `~/.julia/dev/Bessels`
  [7da242da] Enzyme v0.11.4

julia> versioninfo()
Julia Version 1.9.2
Commit e4ee485e909 (2023-07-05 09:39 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 12 × Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-14.0.6 (ORCJIT, skylake)
  Threads: 1 on 12 virtual cores
Environment:
  LD_PRELOAD = /usr/lib/x86_64-linux-gnu/libstdc++.so.6

I was running Bessels.jl at commit 52b694883c84769c5e51f7fa4d0d5fff823ad098 of the master branch

Here is the MWE (taken from https://github.com/EnzymeAD/Enzyme.jl/issues/647) for both forward-mode, which errors, and reverse-mode AD, which segfaults.

julia> using Enzyme, Bessels

julia> f = besselj0
besselj0 (generic function with 2 methods)

julia> x = 12.0
12.0

julia> autodiff(Forward, f, Duplicated, Duplicated(x, 1.0))
ERROR: MethodError: no method matching new_from_original(::Ptr{Nothing}, ::LLVM.AndInst)

Closest candidates are:
  new_from_original(::Enzyme.Compiler.GradientUtils, ::LLVM.Value)
   @ Enzyme ~/.julia/packages/Enzyme/RiUxJ/src/gradientutils.jl:27

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/RiUxJ/src/compiler.jl:5651
  [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/RiUxJ/src/api.jl:142
  [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}, returnPrimal::Bool, jlrules::Vector{String}, expectedTapeType::Type)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/RiUxJ/src/compiler.jl:7463
  [4] codegen(output::Symbol, job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}; libraries::Bool, deferred_codegen::Bool, optimize::Bool, toplevel::Bool, ctx::LLVM.ThreadSafeContext, strip::Bool, validate::Bool, only_entry::Bool, parent_job::Nothing)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/RiUxJ/src/compiler.jl:8984
  [5] codegen
    @ ~/.julia/packages/Enzyme/RiUxJ/src/compiler.jl:8592 [inlined]
  [6] _thunk(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, ctx::Nothing, postopt::Bool)
    @ Enzyme.Compiler ~/.julia/packages/Enzyme/RiUxJ/src/compiler.jl:9518
  [7] _thunk
    @ ~/.julia/packages/Enzyme/RiUxJ/src/compiler.jl:9515 [inlined]
  [8] cached_compilation
    @ ~/.julia/packages/Enzyme/RiUxJ/src/compiler.jl:9553 [inlined]
  [9] #s291#456
    @ ~/.julia/packages/Enzyme/RiUxJ/src/compiler.jl:9615 [inlined]
 [10] var"#s291#456"(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
 [11] (::Core.GeneratedFunctionStub)(::Any, ::Vararg{Any})
    @ Core ./boot.jl:602
 [12] autodiff(#unused#::ForwardMode{FFIABI}, f::Const{typeof(besselj0)}, #unused#::Type{Duplicated}, args::Duplicated{Float64})
    @ Enzyme ~/.julia/packages/Enzyme/RiUxJ/src/Enzyme.jl:328
 [13] autodiff(::ForwardMode{FFIABI}, ::typeof(besselj0), ::Type, ::Duplicated{Float64})
    @ Enzyme ~/.julia/packages/Enzyme/RiUxJ/src/Enzyme.jl:222
 [14] top-level scope
    @ REPL[3]:1

julia> autodiff(Reverse, f, Active, Active(x))
 caching call:   %134 = call fastcc double @julia_sin_sum_2542(double %3, double %133) #21, !dbg !130
; Function Attrs: argmemonly mustprogress nofree nosync willreturn
define internal fastcc void @preprocess_julia_paynehanek_2548({ i64, [2 x double] }* noalias nocapture nofree noundef nonnull writeonly sret({ i64, [2 x double] }) align 8 dereferenceable(24) %0, double %1) unnamed_addr #22 !dbg !1990 {
top:
  %2 = call {}*** @julia.get_pgcstack() #23
  %3 = bitcast double %1 to i64, !dbg !1991
  %4 = and i64 %3, 4503599627370495, !dbg !1993
  %5 = or i64 %4, 4503599627370496, !dbg !1995
  %6 = lshr i64 %3, 52, !dbg !1996
  %7 = and i64 %6, 2047, !dbg !1996
  %8 = add nsw i64 %7, -1075, !dbg !1999
  %9 = ashr i64 %8, 6, !dbg !2001
  %10 = and i64 %8, 63, !dbg !2004
  %.not = icmp eq i64 %10, 0, !dbg !2006
  br i1 %.not, label %L28, label %L38, !dbg !2007

L28:                                              ; preds = %top
  %11 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %9, !dbg !2008
  %12 = add nsw i64 %9, 1, !dbg !2010
  %13 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %12, !dbg !2010
  %14 = add nsw i64 %9, 2, !dbg !2012
  %15 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %14, !dbg !2012
  %16 = load i64, i64* %15, align 8, !tbaa !56, !alias.scope !62, !noalias !65
  %17 = load i64, i64* %13, align 8, !tbaa !56, !alias.scope !62, !noalias !65
  %18 = load i64, i64* %11, align 8, !tbaa !56, !alias.scope !62, !noalias !65
  br label %L108

L38:                                              ; preds = %top
  %19 = icmp ugt i64 %7, 1074, !dbg !2014
  br i1 %19, label %L41, label %L51, !dbg !2015

L41:                                              ; preds = %L38
  %20 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %9, !dbg !2016
  %21 = load i64, i64* %20, align 8, !dbg !2017, !tbaa !56, !alias.scope !62, !noalias !65
  %22 = shl i64 %21, %10, !dbg !2017
  br label %L51, !dbg !2019

L51:                                              ; preds = %L41, %L38
  %value_phi5 = phi i64 [ %22, %L41 ], [ 0, %L38 ]
  %23 = add nsw i64 %9, 1, !dbg !2016
  %24 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %23, !dbg !2016
  %25 = sub nuw nsw i64 64, %10, !dbg !2020
  %26 = load i64, i64* %24, align 8, !dbg !2021, !tbaa !56, !alias.scope !62, !noalias !65
  %27 = lshr i64 %26, %25, !dbg !2021
  %28 = or i64 %27, %value_phi5, !dbg !2023
  %29 = shl i64 %26, %10, !dbg !2024
  %30 = add nsw i64 %9, 2, !dbg !2027
  %31 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %30, !dbg !2027
  %32 = load i64, i64* %31, align 8, !dbg !2028, !tbaa !56, !alias.scope !62, !noalias !65
  %33 = lshr i64 %32, %25, !dbg !2028
  %34 = or i64 %33, %29, !dbg !2030
  %35 = shl i64 %32, %10, !dbg !2031
  %36 = add nsw i64 %9, 3, !dbg !2034
  %37 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %36, !dbg !2034
  %38 = load i64, i64* %37, align 8, !dbg !2035, !tbaa !56, !alias.scope !62, !noalias !65
  %39 = lshr i64 %38, %25, !dbg !2035
  %40 = or i64 %39, %35, !dbg !2037
  br label %L108, !dbg !2037

L108:                                             ; preds = %L51, %L28
  %value_phi = phi i64 [ %40, %L51 ], [ %16, %L28 ]
  %value_phi1 = phi i64 [ %34, %L51 ], [ %17, %L28 ]
  %value_phi2 = phi i64 [ %28, %L51 ], [ %18, %L28 ]
  %41 = mul i64 %value_phi2, %5, !dbg !2038
  %42 = zext i64 %41 to i128, !dbg !2040
  %43 = shl nuw i128 %42, 64, !dbg !2042
  %44 = zext i64 %5 to i128, !dbg !2044
  %45 = zext i64 %value_phi1 to i128, !dbg !2044
  %46 = mul nuw nsw i128 %45, %44, !dbg !2050
  %47 = zext i64 %value_phi to i128, !dbg !2051
  %48 = mul nuw nsw i128 %47, %44, !dbg !2057
  %49 = lshr i128 %48, 64, !dbg !2058
  %50 = add nuw nsw i128 %49, %46, !dbg !2060
  %51 = add i128 %50, %43, !dbg !2060
  %52 = sub i128 0, %51, !dbg !2063
  %53 = icmp slt i64 %3, 0, !dbg !2066
  %54 = select i1 %53, i128 %52, i128 %51, !dbg !2066
  %55 = shl i128 %54, 2, !dbg !2067
  %.not20 = icmp eq i128 %55, 0, !dbg !2070
  br i1 %.not20, label %L218, label %L150, !dbg !2072

L150:                                             ; preds = %L108
  %sh.diff = lshr i128 %55, 64, !dbg !2074
  %tr.sh.diff = trunc i128 %sh.diff to i64, !dbg !2074
  %56 = and i64 %tr.sh.diff, -9223372036854775808, !dbg !2074
  %57 = call i128 @llvm.abs.i128(i128 %55, i1 noundef false) #23, !dbg !2077
  %58 = call i128 @llvm.ctlz.i128(i128 %57, i1 noundef false) #23, !dbg !2080, !range !157
  %59 = trunc i128 %58 to i64, !dbg !2082
  %.neg = add nsw i64 %59, -102, !dbg !2083
  %60 = sub nsw i64 102, %59, !dbg !2083
  %61 = icmp ugt i64 %59, 102, !dbg !2085
  %62 = zext i64 %60 to i128, !dbg !2087
  %63 = lshr i128 %57, %62, !dbg !2087
  %64 = icmp ugt i64 %60, 127, !dbg !2087
  %65 = select i1 %64, i128 0, i128 %63, !dbg !2087
  %66 = zext i64 %.neg to i128, !dbg !2088
  %67 = shl i128 %57, %66, !dbg !2088
  %68 = icmp ugt i64 %.neg, 127, !dbg !2088
  %69 = select i1 %68, i128 0, i128 %67, !dbg !2088
  %70 = select i1 %61, i128 %69, i128 %65, !dbg !2089
  %71 = trunc i128 %70 to i64, !dbg !2090
  %72 = shl i64 %71, 27, !dbg !2091
  %.neg21 = mul nsw i64 %59, -4503599627370496, !dbg !2093
  %73 = add nsw i64 %.neg21, 4598175219545276416, !dbg !2093
  %74 = add i64 %73, %72, !dbg !2096
  %75 = or i64 %74, %56, !dbg !2098
  %76 = bitcast i64 %75 to double, !dbg !2099
  %77 = zext i64 %72 to i128, !dbg !2100
  %.neg22 = add nsw i64 %59, -75, !dbg !2103
  %78 = sub nsw i64 75, %59, !dbg !2103
  %79 = icmp ugt i64 %59, 75, !dbg !2104
  %80 = zext i64 %78 to i128, !dbg !2106
  %81 = shl i128 %77, %80, !dbg !2106
  %82 = icmp ugt i64 %78, 127, !dbg !2106
  %83 = select i1 %82, i128 0, i128 %81, !dbg !2106
  %84 = zext i64 %.neg22 to i128, !dbg !2107
  %85 = lshr i128 %77, %84, !dbg !2107
  %86 = icmp ugt i64 %.neg22, 127, !dbg !2107
  %87 = select i1 %86, i128 0, i128 %85, !dbg !2107
  %88 = select i1 %79, i128 %87, i128 %83, !dbg !2108
  %89 = sub i128 %57, %88, !dbg !2103
  %.not23 = icmp eq i128 %89, 0, !dbg !2109
  br i1 %.not23, label %L218, label %L196, !dbg !2112

L196:                                             ; preds = %L150
  %90 = call i128 @llvm.ctlz.i128(i128 %89, i1 noundef true) #23, !dbg !2113, !range !157
  %91 = trunc i128 %90 to i64, !dbg !2115
  %.neg24 = add nsw i64 %91, -75, !dbg !2116
  %92 = sub nsw i64 75, %91, !dbg !2116
  %93 = icmp ugt i64 %91, 75, !dbg !2118
  %94 = zext i64 %92 to i128, !dbg !2120
  %95 = lshr i128 %89, %94, !dbg !2120
  %96 = icmp ugt i64 %92, 127, !dbg !2120
  %97 = select i1 %96, i128 0, i128 %95, !dbg !2120
  %98 = zext i64 %.neg24 to i128, !dbg !2121
  %99 = shl i128 %89, %98, !dbg !2121
  %100 = icmp ugt i64 %.neg24, 127, !dbg !2121
  %101 = select i1 %100, i128 0, i128 %99, !dbg !2121
  %102 = select i1 %93, i128 %101, i128 %97, !dbg !2122
  %103 = trunc i128 %102 to i64, !dbg !2123
  %.neg25 = mul nsw i64 %91, -4503599627370496, !dbg !2124
  %104 = add nsw i64 %.neg25, 4598175219545276416, !dbg !2124
  %105 = add i64 %104, %103, !dbg !2127
  %106 = or i64 %105, %56, !dbg !2129
  %107 = bitcast i64 %106 to double, !dbg !2130
  br label %L218, !dbg !2131

L218:                                             ; preds = %L196, %L150, %L108
  %value_phi3 = phi double [ %76, %L196 ], [ 0.000000e+00, %L108 ], [ %76, %L150 ]
  %value_phi4 = phi double [ %107, %L196 ], [ 0.000000e+00, %L108 ], [ 0.000000e+00, %L150 ]
  %108 = lshr i128 %54, 125, !dbg !2132
  %109 = trunc i128 %108 to i64, !dbg !2135
  %110 = add nuw nsw i64 %109, 1, !dbg !2136
  %111 = lshr i64 %110, 1, !dbg !2137
  %112 = fadd double %value_phi3, %value_phi4, !dbg !2138
  %113 = fmul double %112, 0x3FF921FB54442D18, !dbg !2140
  %114 = fmul double %value_phi3, 0x3FF921FB58000000, !dbg !2141
  %115 = fsub double %114, %113, !dbg !2143
  %116 = fmul double %value_phi3, 0x3E4DDE973DCB3B3A, !dbg !2141
  %117 = fsub double %115, %116, !dbg !2144
  %118 = fmul double %value_phi4, 0x3FF921FB58000000, !dbg !2141
  %119 = fadd double %118, %117, !dbg !2144
  %120 = fmul double %value_phi4, 0x3E4DDE973DCB3B3A, !dbg !2141
  %121 = fsub double %119, %120, !dbg !2144
  %.sroa.0.0..sroa_idx = getelementptr inbounds { i64, [2 x double] }, { i64, [2 x double] }* %0, i64 0, i32 0, !dbg !2145
  store i64 %111, i64* %.sroa.0.0..sroa_idx, align 8, !dbg !2145, !noalias !2146
  %.sroa.2.0..sroa_idx18 = getelementptr inbounds { i64, [2 x double] }, { i64, [2 x double] }* %0, i64 0, i32 1, i64 0, !dbg !2145
  store double %113, double* %.sroa.2.0..sroa_idx18, align 8, !dbg !2145, !noalias !2146
  %.sroa.3.0..sroa_idx19 = getelementptr inbounds { i64, [2 x double] }, { i64, [2 x double] }* %0, i64 0, i32 1, i64 1, !dbg !2145
  store double %121, double* %.sroa.3.0..sroa_idx19, align 8, !dbg !2145, !noalias !2146
  ret void, !dbg !2145
}

; Function Attrs: argmemonly mustprogress nofree nosync willreturn
define internal fastcc { {} addrspace(10)* } @fakeaugmented_julia_paynehanek_2548({ i64, [2 x double] }* noalias nocapture nofree noundef nonnull writeonly sret({ i64, [2 x double] }) align 8 dereferenceable(24) "enzyme_sret" %0, { i64, [2 x double] }* nocapture nofree align 8 "enzyme_sret" %"'", double %1) unnamed_addr #22 !dbg !2149 {
top:
  %2 = call {}*** @julia.get_pgcstack() #23
  %3 = bitcast double %1 to i64, !dbg !2150
  %4 = and i64 %3, 4503599627370495, !dbg !2152
  %5 = or i64 %4, 4503599627370496, !dbg !2154
  %6 = lshr i64 %3, 52, !dbg !2155
  %7 = and i64 %6, 2047, !dbg !2155
  %8 = add nsw i64 %7, -1075, !dbg !2158
  %9 = ashr i64 %8, 6, !dbg !2160
  %10 = and i64 %8, 63, !dbg !2163
  %.not = icmp eq i64 %10, 0, !dbg !2165
  br i1 %.not, label %L28, label %L38, !dbg !2166

L28:                                              ; preds = %top
  %11 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %9, !dbg !2167
  %12 = add nsw i64 %9, 1, !dbg !2169
  %13 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %12, !dbg !2169
  %14 = add nsw i64 %9, 2, !dbg !2171
  %15 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %14, !dbg !2171
  %16 = load i64, i64* %15, align 8, !tbaa !56, !alias.scope !2173, !noalias !2176
  %17 = load i64, i64* %13, align 8, !tbaa !56, !alias.scope !2173, !noalias !2176
  %18 = load i64, i64* %11, align 8, !tbaa !56, !alias.scope !2173, !noalias !2176
  br label %L108

L38:                                              ; preds = %top
  %19 = icmp ugt i64 %7, 1074, !dbg !2178
  br i1 %19, label %L41, label %L51, !dbg !2179

L41:                                              ; preds = %L38
  %20 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %9, !dbg !2180
  %21 = load i64, i64* %20, align 8, !dbg !2181, !tbaa !56, !alias.scope !2173, !noalias !2176
  %22 = shl i64 %21, %10, !dbg !2181
  br label %L51, !dbg !2183

L51:                                              ; preds = %L41, %L38
  %value_phi5 = phi i64 [ %22, %L41 ], [ 0, %L38 ]
  %23 = add nsw i64 %9, 1, !dbg !2180
  %24 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %23, !dbg !2180
  %25 = sub nuw nsw i64 64, %10, !dbg !2184
  %26 = load i64, i64* %24, align 8, !dbg !2185, !tbaa !56, !alias.scope !2173, !noalias !2176
  %27 = lshr i64 %26, %25, !dbg !2185
  %28 = or i64 %27, %value_phi5, !dbg !2187
  %29 = shl i64 %26, %10, !dbg !2188
  %30 = add nsw i64 %9, 2, !dbg !2191
  %31 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %30, !dbg !2191
  %32 = load i64, i64* %31, align 8, !dbg !2192, !tbaa !56, !alias.scope !2173, !noalias !2176
  %33 = lshr i64 %32, %25, !dbg !2192
  %34 = or i64 %33, %29, !dbg !2194
  %35 = shl i64 %32, %10, !dbg !2195
  %36 = add nsw i64 %9, 3, !dbg !2198
  %37 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %36, !dbg !2198
  %38 = load i64, i64* %37, align 8, !dbg !2199, !tbaa !56, !alias.scope !2173, !noalias !2176
  %39 = lshr i64 %38, %25, !dbg !2199
  %40 = or i64 %39, %35, !dbg !2201
  br label %L108, !dbg !2201

L108:                                             ; preds = %L51, %L28
  %value_phi = phi i64 [ %40, %L51 ], [ %16, %L28 ]
  %value_phi1 = phi i64 [ %34, %L51 ], [ %17, %L28 ]
  %value_phi2 = phi i64 [ %28, %L51 ], [ %18, %L28 ]
  %41 = mul i64 %value_phi2, %5, !dbg !2202
  %42 = zext i64 %41 to i128, !dbg !2204
  %43 = shl nuw i128 %42, 64, !dbg !2206
  %44 = zext i64 %5 to i128, !dbg !2208
  %45 = zext i64 %value_phi1 to i128, !dbg !2208
  %46 = mul nuw nsw i128 %45, %44, !dbg !2214
  %47 = zext i64 %value_phi to i128, !dbg !2215
  %48 = mul nuw nsw i128 %47, %44, !dbg !2221
  %49 = lshr i128 %48, 64, !dbg !2222
  %50 = add nuw nsw i128 %49, %46, !dbg !2224
  %51 = add i128 %50, %43, !dbg !2224
  %52 = sub i128 0, %51, !dbg !2227
  %53 = icmp slt i64 %3, 0, !dbg !2230
  %54 = select i1 %53, i128 %52, i128 %51, !dbg !2230
  %55 = shl i128 %54, 2, !dbg !2231
  %.not20 = icmp eq i128 %55, 0, !dbg !2234
  br i1 %.not20, label %L218, label %L150, !dbg !2236

L150:                                             ; preds = %L108
  %sh.diff = lshr i128 %55, 64, !dbg !2238
  %tr.sh.diff = trunc i128 %sh.diff to i64, !dbg !2238
  %56 = and i64 %tr.sh.diff, -9223372036854775808, !dbg !2238
  %57 = call i128 @llvm.abs.i128(i128 %55, i1 noundef false) #23, !dbg !2241
  %58 = call i128 @llvm.ctlz.i128(i128 %57, i1 noundef false) #23, !dbg !2244, !range !157
  %59 = trunc i128 %58 to i64, !dbg !2246
  %.neg = add nsw i64 %59, -102, !dbg !2247
  %60 = sub nsw i64 102, %59, !dbg !2247
  %61 = icmp ugt i64 %59, 102, !dbg !2249
  %62 = zext i64 %60 to i128, !dbg !2251
  %63 = lshr i128 %57, %62, !dbg !2251
  %64 = icmp ugt i64 %60, 127, !dbg !2251
  %65 = select i1 %64, i128 0, i128 %63, !dbg !2251
  %66 = zext i64 %.neg to i128, !dbg !2252
  %67 = shl i128 %57, %66, !dbg !2252
  %68 = icmp ugt i64 %.neg, 127, !dbg !2252
  %69 = select i1 %68, i128 0, i128 %67, !dbg !2252
  %70 = select i1 %61, i128 %69, i128 %65, !dbg !2253
  %71 = trunc i128 %70 to i64, !dbg !2254
  %72 = shl i64 %71, 27, !dbg !2255
  %.neg21 = mul nsw i64 %59, -4503599627370496, !dbg !2257
  %73 = add nsw i64 %.neg21, 4598175219545276416, !dbg !2257
  %74 = add i64 %73, %72, !dbg !2260
  %75 = or i64 %74, %56, !dbg !2262
  %76 = bitcast i64 %75 to double, !dbg !2263
  %77 = zext i64 %72 to i128, !dbg !2264
  %.neg22 = add nsw i64 %59, -75, !dbg !2267
  %78 = sub nsw i64 75, %59, !dbg !2267
  %79 = icmp ugt i64 %59, 75, !dbg !2268
  %80 = zext i64 %78 to i128, !dbg !2270
  %81 = shl i128 %77, %80, !dbg !2270
  %82 = icmp ugt i64 %78, 127, !dbg !2270
  %83 = select i1 %82, i128 0, i128 %81, !dbg !2270
  %84 = zext i64 %.neg22 to i128, !dbg !2271
  %85 = lshr i128 %77, %84, !dbg !2271
  %86 = icmp ugt i64 %.neg22, 127, !dbg !2271
  %87 = select i1 %86, i128 0, i128 %85, !dbg !2271
  %88 = select i1 %79, i128 %87, i128 %83, !dbg !2272
  %89 = sub i128 %57, %88, !dbg !2267
  %.not23 = icmp eq i128 %89, 0, !dbg !2273
  br i1 %.not23, label %L218, label %L196, !dbg !2276

L196:                                             ; preds = %L150
  %90 = call i128 @llvm.ctlz.i128(i128 %89, i1 noundef true) #23, !dbg !2277, !range !157
  %91 = trunc i128 %90 to i64, !dbg !2279
  %.neg24 = add nsw i64 %91, -75, !dbg !2280
  %92 = sub nsw i64 75, %91, !dbg !2280
  %93 = icmp ugt i64 %91, 75, !dbg !2282
  %94 = zext i64 %92 to i128, !dbg !2284
  %95 = lshr i128 %89, %94, !dbg !2284
  %96 = icmp ugt i64 %92, 127, !dbg !2284
  %97 = select i1 %96, i128 0, i128 %95, !dbg !2284
  %98 = zext i64 %.neg24 to i128, !dbg !2285
  %99 = shl i128 %89, %98, !dbg !2285
  %100 = icmp ugt i64 %.neg24, 127, !dbg !2285
  %101 = select i1 %100, i128 0, i128 %99, !dbg !2285
  %102 = select i1 %93, i128 %101, i128 %97, !dbg !2286
  %103 = trunc i128 %102 to i64, !dbg !2287
  %.neg25 = mul nsw i64 %91, -4503599627370496, !dbg !2288
  %104 = add nsw i64 %.neg25, 4598175219545276416, !dbg !2288
  %105 = add i64 %104, %103, !dbg !2291
  %106 = or i64 %105, %56, !dbg !2293
  %107 = bitcast i64 %106 to double, !dbg !2294
  br label %L218, !dbg !2295

L218:                                             ; preds = %L196, %L150, %L108
  %value_phi3 = phi double [ %76, %L196 ], [ 0.000000e+00, %L108 ], [ %76, %L150 ]
  %value_phi4 = phi double [ %107, %L196 ], [ 0.000000e+00, %L108 ], [ 0.000000e+00, %L150 ]
  %108 = lshr i128 %54, 125, !dbg !2296
  %109 = trunc i128 %108 to i64, !dbg !2299
  %110 = add nuw nsw i64 %109, 1, !dbg !2300
  %111 = lshr i64 %110, 1, !dbg !2301
  %112 = fadd double %value_phi3, %value_phi4, !dbg !2302
  %113 = fmul double %112, 0x3FF921FB54442D18, !dbg !2304
  %114 = fmul double %value_phi3, 0x3FF921FB58000000, !dbg !2305
  %115 = fsub double %114, %113, !dbg !2307
  %116 = fmul double %value_phi3, 0x3E4DDE973DCB3B3A, !dbg !2305
  %117 = fsub double %115, %116, !dbg !2308
  %118 = fmul double %value_phi4, 0x3FF921FB58000000, !dbg !2305
  %119 = fadd double %118, %117, !dbg !2308
  %120 = fmul double %value_phi4, 0x3E4DDE973DCB3B3A, !dbg !2305
  %121 = fsub double %119, %120, !dbg !2308
  %.sroa.0.0..sroa_idx = getelementptr inbounds { i64, [2 x double] }, { i64, [2 x double] }* %0, i64 0, i32 0, !dbg !2309
  store i64 %111, i64* %.sroa.0.0..sroa_idx, align 8, !dbg !2309, !noalias !2310
  %.sroa.2.0..sroa_idx18 = getelementptr inbounds { i64, [2 x double] }, { i64, [2 x double] }* %0, i64 0, i32 1, i64 0, !dbg !2309
  store double %113, double* %.sroa.2.0..sroa_idx18, align 8, !dbg !2309, !noalias !2310
  %.sroa.3.0..sroa_idx19 = getelementptr inbounds { i64, [2 x double] }, { i64, [2 x double] }* %0, i64 0, i32 1, i64 1, !dbg !2309
  store double %121, double* %.sroa.3.0..sroa_idx19, align 8, !dbg !2309, !noalias !2310
  ret { {} addrspace(10)* } undef, !dbg !2309

allocsForInversion:                               ; No predecessors!
}

<begin dump>
key=  %92 = sub nsw i64 75, %91, !dbg !189 val=  %92 = sub nsw i64 75, %91, !dbg !192
key=  %.neg24 = add nsw i64 %91, -75, !dbg !189 val=  %.neg24 = add nsw i64 %91, -75, !dbg !192
key=  %32 = load i64, i64* %31, align 8, !dbg !81, !tbaa !50, !alias.scope !56, !noalias !59 val=  %32 = load i64, i64* %31, align 8, !dbg !84, !tbaa !50, !alias.scope !56, !noalias !61
key=  %70 = select i1 %61, i128 %69, i128 %65, !dbg !161 val=  %70 = select i1 %61, i128 %69, i128 %65, !dbg !164
key=  %39 = lshr i64 %38, %25, !dbg !88 val=  %39 = lshr i64 %38, %25, !dbg !91
key=  %105 = add i64 %104, %103, !dbg !200 val=  %105 = add i64 %104, %103, !dbg !203
key=  %13 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %12, !dbg !46 val=  %13 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %12, !dbg !46
key=  %100 = icmp ugt i64 %.neg24, 127, !dbg !194 val=  %100 = icmp ugt i64 %.neg24, 127, !dbg !197
key=  %95 = lshr i128 %89, %94, !dbg !193 val=  %95 = lshr i128 %89, %94, !dbg !196
key=  %15 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %14, !dbg !48 val=  %15 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %14, !dbg !48
key=  %30 = add nsw i64 %9, 2, !dbg !80 val=  %30 = add nsw i64 %9, 2, !dbg !83
key=  %8 = add nsw i64 %7, -1075, !dbg !30 val=  %8 = add nsw i64 %7, -1075, !dbg !30
key=  %value_phi4 = phi double [ %107, %L196 ], [ 0.000000e+00, %L108 ], [ 0.000000e+00, %L150 ] val=  %value_phi4 = phi double [ %107, %L196 ], [ 0.000000e+00, %L108 ], [ 0.000000e+00, %L150 ]
key=  %85 = lshr i128 %77, %84, !dbg !179 val=  %85 = lshr i128 %77, %84, !dbg !182
key=  br label %L108, !dbg !90 val=  br label %L108, !dbg !93
key=  br i1 %.not, label %L28, label %L38, !dbg !41 val=  br i1 %.not, label %L28, label %L38, !dbg !41
key=  %44 = zext i64 %5 to i128, !dbg !101 val=  %44 = zext i64 %5 to i128, !dbg !104
key=  %6 = lshr i64 %3, 52, !dbg !26 val=  %6 = lshr i64 %3, 52, !dbg !26
key=  br label %L51, !dbg !71 val=  br label %L51, !dbg !74
key=  br label %L108 val=  br label %L108
key=  %.sroa.2.0..sroa_idx18 = getelementptr inbounds { i64, [2 x double] }, { i64, [2 x double] }* %0, i64 0, i32 1, i64 0, !dbg !222 val=  %.sroa.2.0..sroa_idx18 = getelementptr inbounds { i64, [2 x double] }, { i64, [2 x double] }* %0, i64 0, i32 1, i64 0, !dbg !225
key=  %43 = shl nuw i128 %42, 64, !dbg !99 val=  %43 = shl nuw i128 %42, 64, !dbg !102
key=  %26 = load i64, i64* %24, align 8, !dbg !74, !tbaa !50, !alias.scope !56, !noalias !59 val=  %26 = load i64, i64* %24, align 8, !dbg !77, !tbaa !50, !alias.scope !56, !noalias !61
key=  %110 = add nuw nsw i64 %109, 1, !dbg !209 val=  %110 = add nuw nsw i64 %109, 1, !dbg !212
key=  %25 = sub nuw nsw i64 64, %10, !dbg !73 val=  %25 = sub nuw nsw i64 64, %10, !dbg !76
key=  %value_phi1 = phi i64 [ %34, %L51 ], [ %17, %L28 ] val=  %value_phi1 = phi i64 [ %34, %L51 ], [ %17, %L28 ]
key=  %114 = fmul double %value_phi3, 0x3FF921FB58000000, !dbg !217 val=  %114 = fmul double %value_phi3, 0x3FF921FB58000000, !dbg !220
key=  %.neg21 = mul nsw i64 %59, -4503599627370496, !dbg !165 val=  %.neg21 = mul nsw i64 %59, -4503599627370496, !dbg !168
key=  %82 = icmp ugt i64 %78, 127, !dbg !178 val=  %82 = icmp ugt i64 %78, 127, !dbg !181
key=  %108 = lshr i128 %54, 125, !dbg !205 val=  %108 = lshr i128 %54, 125, !dbg !208
key=  %31 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %30, !dbg !80 val=  %31 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %30, !dbg !83
key=  %24 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %23, !dbg !67 val=  %24 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %23, !dbg !70
key=  %20 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %9, !dbg !67 val=  %20 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %9, !dbg !70
key=  %87 = select i1 %86, i128 0, i128 %85, !dbg !179 val=  %87 = select i1 %86, i128 0, i128 %85, !dbg !182
key=  %76 = bitcast i64 %75 to double, !dbg !171 val=  %76 = bitcast i64 %75 to double, !dbg !174
key=  %64 = icmp ugt i64 %60, 127, !dbg !159 val=  %64 = icmp ugt i64 %60, 127, !dbg !162
key=  %23 = add nsw i64 %9, 1, !dbg !67 val=  %23 = add nsw i64 %9, 1, !dbg !70
key=  %2 = call {}*** @julia.get_pgcstack() #23 val=  %2 = call {}*** @julia.get_pgcstack() #23
key=  %107 = bitcast i64 %106 to double, !dbg !203 val=  %107 = bitcast i64 %106 to double, !dbg !206
key=  %46 = mul nuw nsw i128 %45, %44, !dbg !112 val=  %46 = mul nuw nsw i128 %45, %44, !dbg !115
key=  %72 = shl i64 %71, 27, !dbg !163 val=  %72 = shl i64 %71, 27, !dbg !166
key=  %.not23 = icmp eq i128 %89, 0, !dbg !181 val=  %.not23 = icmp eq i128 %89, 0, !dbg !184
key=  %101 = select i1 %100, i128 0, i128 %99, !dbg !194 val=  %101 = select i1 %100, i128 0, i128 %99, !dbg !197
key=  %35 = shl i64 %32, %10, !dbg !84 val=  %35 = shl i64 %32, %10, !dbg !87
key=  %102 = select i1 %93, i128 %101, i128 %97, !dbg !195 val=  %102 = select i1 %93, i128 %101, i128 %97, !dbg !198
key=  %.sroa.0.0..sroa_idx = getelementptr inbounds { i64, [2 x double] }, { i64, [2 x double] }* %0, i64 0, i32 0, !dbg !222 val=  %.sroa.0.0..sroa_idx = getelementptr inbounds { i64, [2 x double] }, { i64, [2 x double] }* %0, i64 0, i32 0, !dbg !225
key=  br i1 %19, label %L41, label %L51, !dbg !66 val=  br i1 %19, label %L41, label %L51, !dbg !69
key=  store i64 %111, i64* %.sroa.0.0..sroa_idx, align 8, !dbg !222, !noalias !223 val=  store i64 %111, i64* %.sroa.0.0..sroa_idx, align 8, !dbg !225, !noalias !226
key=  %83 = select i1 %82, i128 0, i128 %81, !dbg !178 val=  %83 = select i1 %82, i128 0, i128 %81, !dbg !181
key=  %90 = call i128 @llvm.ctlz.i128(i128 %89, i1 noundef true) #23, !dbg !186, !range !151 val=  %90 = call i128 @llvm.ctlz.i128(i128 %89, i1 noundef true) #23, !dbg !189, !range !154
key=  %71 = trunc i128 %70 to i64, !dbg !162 val=  %71 = trunc i128 %70 to i64, !dbg !165
key=  %109 = trunc i128 %108 to i64, !dbg !208 val=  %109 = trunc i128 %108 to i64, !dbg !211
key=  %84 = zext i64 %.neg22 to i128, !dbg !179 val=  %84 = zext i64 %.neg22 to i128, !dbg !182
key=  %.neg22 = add nsw i64 %59, -75, !dbg !175 val=  %.neg22 = add nsw i64 %59, -75, !dbg !178
key=  %7 = and i64 %6, 2047, !dbg !26 val=  %7 = and i64 %6, 2047, !dbg !26
key=  %sh.diff = lshr i128 %55, 64, !dbg !140 val=  %sh.diff = lshr i128 %55, 64, !dbg !143
key=  %61 = icmp ugt i64 %59, 102, !dbg !156 val=  %61 = icmp ugt i64 %59, 102, !dbg !159
key=  %78 = sub nsw i64 75, %59, !dbg !175 val=  %78 = sub nsw i64 75, %59, !dbg !178
key=  %10 = and i64 %8, 63, !dbg !36 val=  %10 = and i64 %8, 63, !dbg !36
key=  %51 = add i128 %50, %43, !dbg !122 val=  %51 = add i128 %50, %43, !dbg !125
key=  %66 = zext i64 %.neg to i128, !dbg !160 val=  %66 = zext i64 %.neg to i128, !dbg !163
key=  %119 = fadd double %118, %117, !dbg !221 val=  %119 = fadd double %118, %117, !dbg !224
key=  store double %121, double* %.sroa.3.0..sroa_idx19, align 8, !dbg !222, !noalias !223 val=  store double %121, double* %.sroa.3.0..sroa_idx19, align 8, !dbg !225, !noalias !226
key=  %57 = call i128 @llvm.abs.i128(i128 %55, i1 noundef false) #23, !dbg !143 val=  %57 = call i128 @llvm.abs.i128(i128 %55, i1 noundef false) #23, !dbg !146
key=  br i1 %.not20, label %L218, label %L150, !dbg !137 val=  br i1 %.not20, label %L218, label %L150, !dbg !140
key=  %54 = select i1 %53, i128 %52, i128 %51, !dbg !131 val=  %54 = select i1 %53, i128 %52, i128 %51, !dbg !134
key=  %38 = load i64, i64* %37, align 8, !dbg !88, !tbaa !50, !alias.scope !56, !noalias !59 val=  %38 = load i64, i64* %37, align 8, !dbg !91, !tbaa !50, !alias.scope !56, !noalias !61
key=  %9 = ashr i64 %8, 6, !dbg !33 val=  %9 = ashr i64 %8, 6, !dbg !33
key=  %value_phi5 = phi i64 [ %22, %L41 ], [ 0, %L38 ] val=  %value_phi5 = phi i64 [ %22, %L41 ], [ 0, %L38 ]
key=  ret void, !dbg !222 val=  ret { {} addrspace(10)* } undef, !dbg !225
key=  %29 = shl i64 %26, %10, !dbg !77 val=  %29 = shl i64 %26, %10, !dbg !80
key=  %67 = shl i128 %57, %66, !dbg !160 val=  %67 = shl i128 %57, %66, !dbg !163
key=  %53 = icmp slt i64 %3, 0, !dbg !131 val=  %53 = icmp slt i64 %3, 0, !dbg !134
key=  %86 = icmp ugt i64 %.neg22, 127, !dbg !179 val=  %86 = icmp ugt i64 %.neg22, 127, !dbg !182
key=  %121 = fsub double %119, %120, !dbg !221 val=  %121 = fsub double %119, %120, !dbg !224
key=  %45 = zext i64 %value_phi1 to i128, !dbg !101 val=  %45 = zext i64 %value_phi1 to i128, !dbg !104
key=  %88 = select i1 %79, i128 %87, i128 %83, !dbg !180 val=  %88 = select i1 %79, i128 %87, i128 %83, !dbg !183
key=  %4 = and i64 %3, 4503599627370495, !dbg !20 val=  %4 = and i64 %3, 4503599627370495, !dbg !20
key=  %40 = or i64 %39, %35, !dbg !90 val=  %40 = or i64 %39, %35, !dbg !93
key=  %116 = fmul double %value_phi3, 0x3E4DDE973DCB3B3A, !dbg !217 val=  %116 = fmul double %value_phi3, 0x3E4DDE973DCB3B3A, !dbg !220
key=  br label %L218, !dbg !204 val=  br label %L218, !dbg !207
key=  %104 = add nsw i64 %.neg25, 4598175219545276416, !dbg !197 val=  %104 = add nsw i64 %.neg25, 4598175219545276416, !dbg !200
key=  %59 = trunc i128 %58 to i64, !dbg !152 val=  %59 = trunc i128 %58 to i64, !dbg !155
key=  store double %113, double* %.sroa.2.0..sroa_idx18, align 8, !dbg !222, !noalias !223 val=  store double %113, double* %.sroa.2.0..sroa_idx18, align 8, !dbg !225, !noalias !226
key=  %value_phi2 = phi i64 [ %28, %L51 ], [ %18, %L28 ] val=  %value_phi2 = phi i64 [ %28, %L51 ], [ %18, %L28 ]
key=  %99 = shl i128 %89, %98, !dbg !194 val=  %99 = shl i128 %89, %98, !dbg !197
key=  %27 = lshr i64 %26, %25, !dbg !74 val=  %27 = lshr i64 %26, %25, !dbg !77
key=  %77 = zext i64 %72 to i128, !dbg !172 val=  %77 = zext i64 %72 to i128, !dbg !175
key=  %81 = shl i128 %77, %80, !dbg !178 val=  %81 = shl i128 %77, %80, !dbg !181
key=  %.not20 = icmp eq i128 %55, 0, !dbg !135 val=  %.not20 = icmp eq i128 %55, 0, !dbg !138
key=  %21 = load i64, i64* %20, align 8, !dbg !68, !tbaa !50, !alias.scope !56, !noalias !59 val=  %21 = load i64, i64* %20, align 8, !dbg !71, !tbaa !50, !alias.scope !56, !noalias !61
key=  %96 = icmp ugt i64 %92, 127, !dbg !193 val=  %96 = icmp ugt i64 %92, 127, !dbg !196
key=  %91 = trunc i128 %90 to i64, !dbg !188 val=  %91 = trunc i128 %90 to i64, !dbg !191
key=  %79 = icmp ugt i64 %59, 75, !dbg !176 val=  %79 = icmp ugt i64 %59, 75, !dbg !179
key=  %75 = or i64 %74, %56, !dbg !170 val=  %75 = or i64 %74, %56, !dbg !173
key=  %97 = select i1 %96, i128 0, i128 %95, !dbg !193 val=  %97 = select i1 %96, i128 0, i128 %95, !dbg !196
key=  %111 = lshr i64 %110, 1, !dbg !210 val=  %111 = lshr i64 %110, 1, !dbg !213
key=  %118 = fmul double %value_phi4, 0x3FF921FB58000000, !dbg !217 val=  %118 = fmul double %value_phi4, 0x3FF921FB58000000, !dbg !220
key=  %tr.sh.diff = trunc i128 %sh.diff to i64, !dbg !140 val=  %tr.sh.diff = trunc i128 %sh.diff to i64, !dbg !143
key=  br i1 %.not23, label %L218, label %L196, !dbg !185 val=  br i1 %.not23, label %L218, label %L196, !dbg !188
key=  %22 = shl i64 %21, %10, !dbg !68 val=  %22 = shl i64 %21, %10, !dbg !71
key=  %.not = icmp eq i64 %10, 0, !dbg !38 val=  %.not = icmp eq i64 %10, 0, !dbg !38
key=  %103 = trunc i128 %102 to i64, !dbg !196 val=  %103 = trunc i128 %102 to i64, !dbg !199
key=  %68 = icmp ugt i64 %.neg, 127, !dbg !160 val=  %68 = icmp ugt i64 %.neg, 127, !dbg !163
key=  %11 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %9, !dbg !42 val=  %11 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %9, !dbg !42
key=  %112 = fadd double %value_phi3, %value_phi4, !dbg !211 val=  %112 = fadd double %value_phi3, %value_phi4, !dbg !214
key=  %28 = or i64 %27, %value_phi5, !dbg !76 val=  %28 = or i64 %27, %value_phi5, !dbg !79
key=  %73 = add nsw i64 %.neg21, 4598175219545276416, !dbg !165 val=  %73 = add nsw i64 %.neg21, 4598175219545276416, !dbg !168
key=  %120 = fmul double %value_phi4, 0x3E4DDE973DCB3B3A, !dbg !217 val=  %120 = fmul double %value_phi4, 0x3E4DDE973DCB3B3A, !dbg !220
key=  %65 = select i1 %64, i128 0, i128 %63, !dbg !159 val=  %65 = select i1 %64, i128 0, i128 %63, !dbg !162
key=  %80 = zext i64 %78 to i128, !dbg !178 val=  %80 = zext i64 %78 to i128, !dbg !181
key=  %18 = load i64, i64* %11, align 8, !tbaa !50, !alias.scope !56, !noalias !59 val=  %18 = load i64, i64* %11, align 8, !tbaa !50, !alias.scope !56, !noalias !61
key=  %74 = add i64 %73, %72, !dbg !168 val=  %74 = add i64 %73, %72, !dbg !171
key=  %42 = zext i64 %41 to i128, !dbg !94 val=  %42 = zext i64 %41 to i128, !dbg !97
key=  %47 = zext i64 %value_phi to i128, !dbg !113 val=  %47 = zext i64 %value_phi to i128, !dbg !116
key=  %33 = lshr i64 %32, %25, !dbg !81 val=  %33 = lshr i64 %32, %25, !dbg !84
key=  %36 = add nsw i64 %9, 3, !dbg !87 val=  %36 = add nsw i64 %9, 3, !dbg !90
key=  %60 = sub nsw i64 102, %59, !dbg !154 val=  %60 = sub nsw i64 102, %59, !dbg !157
key=  %55 = shl i128 %54, 2, !dbg !132 val=  %55 = shl i128 %54, 2, !dbg !135
key=  %value_phi = phi i64 [ %40, %L51 ], [ %16, %L28 ] val=  %value_phi = phi i64 [ %40, %L51 ], [ %16, %L28 ]
key=  %62 = zext i64 %60 to i128, !dbg !159 val=  %62 = zext i64 %60 to i128, !dbg !162
key=  %41 = mul i64 %value_phi2, %5, !dbg !91 val=  %41 = mul i64 %value_phi2, %5, !dbg !94
key=  %52 = sub i128 0, %51, !dbg !127 val=  %52 = sub i128 0, %51, !dbg !130
key=  %17 = load i64, i64* %13, align 8, !tbaa !50, !alias.scope !56, !noalias !59 val=  %17 = load i64, i64* %13, align 8, !tbaa !50, !alias.scope !56, !noalias !61
key=  %63 = lshr i128 %57, %62, !dbg !159 val=  %63 = lshr i128 %57, %62, !dbg !162
key=  %106 = or i64 %105, %56, !dbg !202 val=  %106 = or i64 %105, %56, !dbg !205
key=  %56 = and i64 %tr.sh.diff, -9223372036854775808, !dbg !140 val=  %56 = and i64 %tr.sh.diff, -9223372036854775808, !dbg !143
key=  %5 = or i64 %4, 4503599627370496, !dbg !24 val=  %5 = or i64 %4, 4503599627370496, !dbg !24
key=  %34 = or i64 %33, %29, !dbg !83 val=  %34 = or i64 %33, %29, !dbg !86
key=  %3 = bitcast double %1 to i64, !dbg !16 val=  %3 = bitcast double %1 to i64, !dbg !16
key=  %14 = add nsw i64 %9, 2, !dbg !48 val=  %14 = add nsw i64 %9, 2, !dbg !48
key=  %49 = lshr i128 %48, 64, !dbg !120 val=  %49 = lshr i128 %48, 64, !dbg !123
key=  %value_phi3 = phi double [ %76, %L196 ], [ 0.000000e+00, %L108 ], [ %76, %L150 ] val=  %value_phi3 = phi double [ %76, %L196 ], [ 0.000000e+00, %L108 ], [ %76, %L150 ]
key=  %115 = fsub double %114, %113, !dbg !219 val=  %115 = fsub double %114, %113, !dbg !222
key=  %37 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %36, !dbg !87 val=  %37 = getelementptr inbounds [19 x i64], [19 x i64]* @_j_const26, i64 0, i64 %36, !dbg !90
key=  %48 = mul nuw nsw i128 %47, %44, !dbg !119 val=  %48 = mul nuw nsw i128 %47, %44, !dbg !122
key=  %69 = select i1 %68, i128 0, i128 %67, !dbg !160 val=  %69 = select i1 %68, i128 0, i128 %67, !dbg !163
key=  %98 = zext i64 %.neg24 to i128, !dbg !194 val=  %98 = zext i64 %.neg24 to i128, !dbg !197
key=  %58 = call i128 @llvm.ctlz.i128(i128 %57, i1 noundef false) #23, !dbg !148, !range !151 val=  %58 = call i128 @llvm.ctlz.i128(i128 %57, i1 noundef false) #23, !dbg !151, !range !154
key=  %93 = icmp ugt i64 %91, 75, !dbg !191 val=  %93 = icmp ugt i64 %91, 75, !dbg !194
key=  %94 = zext i64 %92 to i128, !dbg !193 val=  %94 = zext i64 %92 to i128, !dbg !196
key=  %16 = load i64, i64* %15, align 8, !tbaa !50, !alias.scope !56, !noalias !59 val=  %16 = load i64, i64* %15, align 8, !tbaa !50, !alias.scope !56, !noalias !61
key=  %113 = fmul double %112, 0x3FF921FB54442D18, !dbg !215 val=  %113 = fmul double %112, 0x3FF921FB54442D18, !dbg !218
key=  %.sroa.3.0..sroa_idx19 = getelementptr inbounds { i64, [2 x double] }, { i64, [2 x double] }* %0, i64 0, i32 1, i64 1, !dbg !222 val=  %.sroa.3.0..sroa_idx19 = getelementptr inbounds { i64, [2 x double] }, { i64, [2 x double] }* %0, i64 0, i32 1, i64 1, !dbg !225
key=  %89 = sub i128 %57, %88, !dbg !175 val=  %89 = sub i128 %57, %88, !dbg !178
key=  %19 = icmp ugt i64 %7, 1074, !dbg !64 val=  %19 = icmp ugt i64 %7, 1074, !dbg !67
key=  %.neg = add nsw i64 %59, -102, !dbg !154 val=  %.neg = add nsw i64 %59, -102, !dbg !157
key=  %12 = add nsw i64 %9, 1, !dbg !46 val=  %12 = add nsw i64 %9, 1, !dbg !46
key=  %117 = fsub double %115, %116, !dbg !221 val=  %117 = fsub double %115, %116, !dbg !224
key=  %50 = add nuw nsw i128 %49, %46, !dbg !122 val=  %50 = add nuw nsw i128 %49, %46, !dbg !125
key=  %.neg25 = mul nsw i64 %91, -4503599627370496, !dbg !197 val=  %.neg25 = mul nsw i64 %91, -4503599627370496, !dbg !200
</end dump>

[2460041] signal (11.1): Segmentation fault
in expression starting at REPL[4]:1
_ZNK4llvm6Module14global_objectsEv at /local/home/lxvm/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/bin/../lib/julia/libLLVM-14jl.so (unknown line)
_ZN12_GLOBAL__N_114AssemblyWriterC1ERN4llvm21formatted_raw_ostreamERNS1_11SlotTrackerEPKNS1_6ModuleEPNS1_24AssemblyAnnotationWriterEbb at /local/home/lxvm/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/bin/../lib/julia/libLLVM-14jl.so (unknown line)
_ZNK4llvm5Value5printERNS_11raw_ostreamERNS_17ModuleSlotTrackerEb at /local/home/lxvm/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/bin/../lib/julia/libLLVM-14jl.so (unknown line)
_ZNK4llvm5Value5printERNS_11raw_ostreamEb at /local/home/lxvm/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/bin/../lib/julia/libLLVM-14jl.so (unknown line)
operator<< at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/Value.h:864 [inlined]
getNewFromOriginal at /workspace/srcdir/Enzyme/enzyme/Enzyme/GradientUtils.cpp:552
getNewFromOriginal at /workspace/srcdir/Enzyme/enzyme/Enzyme/GradientUtils.cpp:566
getForwardBuilder at /workspace/srcdir/Enzyme/enzyme/Enzyme/GradientUtils.cpp:4772
getForwardBuilder at /workspace/srcdir/Enzyme/enzyme/Enzyme/AdjointGenerator.h:1957 [inlined]
handleAdjointForIntrinsic at /workspace/srcdir/Enzyme/enzyme/Enzyme/AdjointGenerator.h:3543
visitIntrinsicInst at /workspace/srcdir/Enzyme/enzyme/Enzyme/AdjointGenerator.h:3441
visitDbgInfoIntrinsic at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:209 [inlined]
visitDbgVariableIntrinsic at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:207 [inlined]
visitDbgDeclareInst at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:204 [inlined]
delegateCallInst at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:290 [inlined]
visitCall at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/Instruction.def:209 [inlined]
visit at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/Instruction.def:209
visit at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:112 [inlined]
CreateAugmentedPrimal at /workspace/srcdir/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:2442
recursivelyHandleSubfunction at /workspace/srcdir/Enzyme/enzyme/Enzyme/AdjointGenerator.h:7356
visitCallInst at /workspace/srcdir/Enzyme/enzyme/Enzyme/AdjointGenerator.h:10287
delegateCallInst at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:302 [inlined]
visitCall at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/Instruction.def:209 [inlined]
visit at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/Instruction.def:209
visit at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:112 [inlined]
CreateAugmentedPrimal at /workspace/srcdir/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:2442
recursivelyHandleSubfunction at /workspace/srcdir/Enzyme/enzyme/Enzyme/AdjointGenerator.h:7356
visitCallInst at /workspace/srcdir/Enzyme/enzyme/Enzyme/AdjointGenerator.h:10287
delegateCallInst at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:302 [inlined]
visitCall at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/Instruction.def:209 [inlined]
visit at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/Instruction.def:209
visit at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:112 [inlined]
CreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:4185
recursivelyHandleSubfunction at /workspace/srcdir/Enzyme/enzyme/Enzyme/AdjointGenerator.h:7741
visitCallInst at /workspace/srcdir/Enzyme/enzyme/Enzyme/AdjointGenerator.h:10287
delegateCallInst at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:302 [inlined]
visitCall at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/Instruction.def:209 [inlined]
visit at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/Instruction.def:209
visit at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:112 [inlined]
CreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:4185
recursivelyHandleSubfunction at /workspace/srcdir/Enzyme/enzyme/Enzyme/AdjointGenerator.h:7741
visitCallInst at /workspace/srcdir/Enzyme/enzyme/Enzyme/AdjointGenerator.h:10287
delegateCallInst at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:302 [inlined]
visitCall at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/Instruction.def:209 [inlined]
visit at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/Instruction.def:209
visit at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:112 [inlined]
CreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:4185
EnzymeCreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme/CApi.cpp:582
EnzymeCreatePrimalAndGradient at /home/lxvm/.julia/packages/Enzyme/RiUxJ/src/api.jl:128
enzyme! at /home/lxvm/.julia/packages/Enzyme/RiUxJ/src/compiler.jl:7451
unknown function (ip: 0x7f0cfcd341c9)
_jl_invoke at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2940
#codegen#422 at /home/lxvm/.julia/packages/Enzyme/RiUxJ/src/compiler.jl:8984
codegen at /home/lxvm/.julia/packages/Enzyme/RiUxJ/src/compiler.jl:8592 [inlined]
_thunk at /home/lxvm/.julia/packages/Enzyme/RiUxJ/src/compiler.jl:9518
_thunk at /home/lxvm/.julia/packages/Enzyme/RiUxJ/src/compiler.jl:9515 [inlined]
cached_compilation at /home/lxvm/.julia/packages/Enzyme/RiUxJ/src/compiler.jl:9553 [inlined]
#s291#456 at /home/lxvm/.julia/packages/Enzyme/RiUxJ/src/compiler.jl:9615 [inlined]
#s291#456 at ./none:0
_jl_invoke at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2940
GeneratedFunctionStub at ./boot.jl:602
_jl_invoke at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2940
jl_apply at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/julia.h:1879 [inlined]
jl_call_staged at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/method.c:530
ijl_code_for_staged at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/method.c:581
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
jfptr_abstract_call_known_18397.clone_1 at /local/home/lxvm/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
tojlinvoke21255.clone_1 at /local/home/lxvm/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
j_abstract_call_known_16689.clone_1 at /local/home/lxvm/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
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_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_13198.clone_1 at /local/home/lxvm/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2940
jl_apply at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/julia.h:1879 [inlined]
jl_type_infer at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:320
jl_generate_fptr_impl at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/jitlayers.cpp:444
jl_compile_method_internal at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2348 [inlined]
jl_compile_method_internal at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2237
_jl_invoke at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2750 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2940
autodiff at /home/lxvm/.julia/packages/Enzyme/RiUxJ/src/Enzyme.jl:222
unknown function (ip: 0x7f0cfcd429d7)
_jl_invoke at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2940
jl_apply at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/julia.h:1879 [inlined]
do_call at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/interpreter.c:126
eval_value at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/interpreter.c:226
eval_stmt_value at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/interpreter.c:177 [inlined]
eval_body at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/interpreter.c:624
jl_interpret_toplevel_thunk at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/interpreter.c:762
jl_toplevel_eval_flex at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/toplevel.c:912
jl_toplevel_eval_flex at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/toplevel.c:856
jl_toplevel_eval_flex at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/toplevel.c:856
jl_toplevel_eval_flex at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/toplevel.c:856
ijl_toplevel_eval_in at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/toplevel.c:971
eval at ./boot.jl:370 [inlined]
eval_user_input at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/REPL/src/REPL.jl:153
repl_backend_loop at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/REPL/src/REPL.jl:249
#start_repl_backend#46 at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/REPL/src/REPL.jl:234
start_repl_backend at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/REPL/src/REPL.jl:231
_jl_invoke at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2940
#run_repl#59 at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/REPL/src/REPL.jl:379
run_repl at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/REPL/src/REPL.jl:365
jfptr_run_repl_59978.clone_1 at /local/home/lxvm/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2940
#1017 at ./client.jl:421
jfptr_YY.1017_37237.clone_1 at /local/home/lxvm/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2940
jl_apply at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/julia.h:1879 [inlined]
jl_f__call_latest at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/builtins.c:774
#invokelatest#2 at ./essentials.jl:816 [inlined]
invokelatest at ./essentials.jl:813 [inlined]
run_main_repl at ./client.jl:405
exec_options at ./client.jl:322
_start at ./client.jl:522
jfptr__start_43375.clone_1 at /local/home/lxvm/.julia/juliaup/julia-1.9.2+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/gf.c:2940
jl_apply at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/julia.h:1879 [inlined]
true_main at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/jlapi.c:573
jl_repl_entrypoint at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/src/jlapi.c:717
main at /cache/build/default-amdci5-2/julialang/julia-release-1-dot-9/cli/loader_exe.c:59
unknown function (ip: 0x7f0d42646189)
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x401098)
Allocations: 20493426 (Pool: 20467032; Big: 26394); GC: 28
Segmentation fault
wsmoses commented 1 year ago

Should now be fixed on main, please reopen if it persists.