Closed avik-pal closed 6 months ago
@avik-pal are you able to reduce out the Dense into more fundamental function calls and still get this to trigger?
using LuxLib, Enzyme
y = randn(Float32, 10, 10)
b = randn(Float32, 10)
act = gelu
function loss_function(act, y, b)
return sum(LuxLib.__apply_bias_activation!!(act, y, b, Val(false)))
end
loss_function(act, y, b)
begin
dy = Enzyme.make_zero(y)
db = Enzyme.make_zero(b)
Enzyme.autodiff(Enzyme.Reverse, loss_function, Active, Const(act),
Duplicated(y, dy), Duplicated(b, db))
end
Now I get
ERROR: LLVM error: function failed verification (4)
without the julia crash
For better or worse that's a different error, I'll try to repo the last one and see if it's a quick fix. For both errors can you include the full logs?
using Enzyme, Polyester
y = randn(Float32, 10, 10)
b = randn(Float32, 10)
act = x -> max(x, 0)
function __apply_bias_activation!!(σ::F, x, bias::Union{Nothing, AbstractArray}) where {F}
f_fused = σ ∘ +
if maximum(length, (x, bias)) > 100_000
bc = Broadcast.instantiate(Broadcast.broadcasted(f_fused, x, bias))
@batch for I in eachindex(bc)
@inbounds x[I] = bc[I]
end
else
@. x = f_fused(x, bias)
end
return x
# return LuxLib.__nonuniform_fast_broadcast!(σ ∘ +, x, bias)
end
function loss_function(act, y, b)
return sum(__apply_bias_activation!!(act, y, b))
end
loss_function(act, y, b)
begin
dy = Enzyme.make_zero(y)
db = Enzyme.make_zero(b)
Enzyme.autodiff(Enzyme.Reverse, loss_function, Active,
Const(act), Duplicated(y, dy), Duplicated(b, db))
end
A minimal version without Lux deps
@wsmoses added the crash logs. the one with LLVM error
seems to be too long and I can't seem to figure out how to redirect the logs when julia crashes.
@avik-pal I need to double check, but I think the latter one is actually a bug in Polyester. It emits a gc preserve begin without a gc preserve end.
I've also been warned that polyester messes with LLVM in ways that generates invalid code (which is indeed the case here).
cc @vchuravy
also @avik-pal
julia> act = gelu
ERROR: UndefVarError: `gelu` not defined
Stacktrace:
[1] top-level scope
@ REPL[4]:1
Okay I have confirmed the latter to unquestionably be a bug in polyester, not Enzyme.
Speciically I did
julia> @code_llvm optimize=false raw=true loss_function(act, y, b)
You will see that there is a gc preserve begin
%380 = call token (...) @llvm.julia.gc_preserve_begin({} addrspace(10)* %379, [2 x {} addrspace(10)*] %357), !dbg !473
which is never used and has no gc_preserve_end
@avik-pal given that this issue is premised on invalid LLVM to begin with, I'm going to close.
Please reopen if I'm mistaken and it can be reproduced without the invalid LLVM.
If
use_bias = true
, then we don't get a julia segfault but it still errors.If we don't specify an activation function, then it works fine
Crash Log
``` ; Function Attrs: mustprogress willreturn define internal fastcc void @preprocess_julia_fast_materialize_threaded__2755({} addrspace(10)* noundef nonnull align 16 dereferenceable(40) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@float, [-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"="125797725781712" "enzymejl_parmtype_ref"="2" %0, { [1 x {} addrspace(10)*] } addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(8) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@float, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,0,10]:Integer, [-1,0,11]:Integer, [-1,0,12]:Integer, [-1,0,13]:Integer, [-1,0,14]:Integer, [-1,0,15]:Integer, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,0,24]:Integer, [-1,0,25]:Integer, [-1,0,26]:Integer, [-1,0,27]:Integer, [-1,0,28]:Integer, [-1,0,29]:Integer, [-1,0,30]:Integer, [-1,0,31]:Integer, [-1,0,32]:Integer, [-1,0,33]:Integer, [-1,0,34]:Integer, [-1,0,35]:Integer, [-1,0,36]:Integer, [-1,0,37]:Integer, [-1,0,38]:Integer, [-1,0,39]:Integer}" "enzymejl_parmtype"="125797729165136" "enzymejl_parmtype_ref"="1" %1, [2 x [1 x i64]] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(16) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer}" "enzymejl_parmtype"="125797567845648" "enzymejl_parmtype_ref"="1" %2) unnamed_addr #88 !dbg !4085 { top: %3 = call noalias nonnull dereferenceable(56) dereferenceable_or_null(56) i8* @malloc(i64 56), !enzyme_fromstack !316 %4 = bitcast i8* %3 to { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }*, !enzyme_caststack !90 %.sub = bitcast { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }* %4 to i8* %5 = call noalias nonnull dereferenceable(24) dereferenceable_or_null(24) i8* @malloc(i64 24), !enzyme_fromstack !968 %newstruct13 = bitcast i8* %5 to { [1 x [1 x i64]], [2 x i64] }*, !enzyme_caststack !90 %6 = call noalias nonnull dereferenceable(24) dereferenceable_or_null(24) i8* @malloc(i64 24), !enzyme_fromstack !968 %newstruct30 = bitcast i8* %6 to { [1 x [1 x i64]], [2 x i64] }*, !enzyme_caststack !90 %7 = call {}*** @julia.get_pgcstack() #91 %ptls_field170 = getelementptr inbounds {}**, {}*** %7, i64 2 %8 = bitcast {}*** %ptls_field170 to i64*** %ptls_load171172 = load i64**, i64*** %8, align 8, !tbaa !91 %9 = getelementptr inbounds i64*, i64** %ptls_load171172, i64 2 %safepoint = load i64*, i64** %9, align 8, !tbaa !95 fence syncscope("singlethread") seq_cst call void @julia.safepoint(i64* %safepoint) #91, !dbg !4086 fence syncscope("singlethread") seq_cst %10 = getelementptr inbounds [2 x [1 x i64]], [2 x [1 x i64]] addrspace(11)* %2, i64 0, i64 1, i64 0, !dbg !4087 %11 = call i64 @julia_nthreads_2932() #92, !dbg !4089 %unbox = load i64, i64 addrspace(11)* %10, align 8, !dbg !4090, !tbaa !95, !alias.scope !313, !noalias !314 %12 = icmp slt i64 %unbox, 1, !dbg !4090 br i1 %12, label %L616, label %L6, !dbg !4092 L6: ; preds = %top %13 = call i64 @llvm.smin.i64(i64 %unbox, i64 %11) #91, !dbg !4094 %.not = icmp eq i64 %13, 0, !dbg !4095 br i1 %.not, label %L393, label %L14, !dbg !4096 L14: ; preds = %L6 %14 = trunc i64 %13 to i32, !dbg !4097 %15 = add i32 %14, -1, !dbg !4097 %16 = call nonnull "enzyme_inactive" {}* @julia.pointer_from_objref({} addrspace(11)* noundef addrspacecast ({}* inttoptr (i64 125797279085328 to {}*) to {} addrspace(11)*)) #93, !dbg !4101 %17 = icmp sgt i32 %15, 0, !dbg !4103 br i1 %17, label %L24, label %L393, !dbg !4104 L24: ; preds = %L14 %p.i = bitcast {}* %16 to i64*, !dbg !4106 %v.i = atomicrmw xchg i64* %p.i, i64 0 acq_rel, align 8, !dbg !4106 %18 = call i64 @llvm.ctpop.i64(i64 %v.i) #91, !dbg !4109, !range !1713 %19 = trunc i64 %18 to i32, !dbg !4111 %20 = sub nsw i32 %15, %19, !dbg !4112 %21 = icmp slt i32 %20, 0, !dbg !4114 br i1 %21, label %L37, label %L72, !dbg !4117 L37: ; preds = %L24 %22 = call i64 @llvm.ctlz.i64(i64 %v.i, i1 noundef false) #91, !dbg !4118, !range !1713 %23 = trunc i64 %22 to i32, !dbg !4120 br label %L40, !dbg !4120 L40: ; preds = %L40, %L37 %iv = phi i64 [ %iv.next, %L40 ], [ 0, %L37 ] %value_phi119 = phi i32 [ %23, %L37 ], [ %24, %L40 ] %value_phi120 = phi i32 [ %20, %L37 ], [ %33, %L40 ] %value_phi121 = phi i64 [ %v.i, %L37 ], [ %29, %L40 ] %iv.next = add nuw nsw i64 %iv, 1, !dbg !4121 %24 = sub i32 %value_phi119, %value_phi120, !dbg !4121 %25 = sub i32 64, %24, !dbg !4123 %26 = zext i32 %25 to i64, !dbg !4125 %27 = icmp ugt i32 %25, 63, !dbg !4125 %notmask = shl nsw i64 -1, %26, !dbg !4123 %.op = xor i64 %notmask, -1, !dbg !4123 %28 = select i1 %27, i64 -1, i64 %.op, !dbg !4123 %29 = and i64 %28, %value_phi121, !dbg !4126 %30 = xor i64 %29, %value_phi121, !dbg !4128 %31 = call i64 @llvm.ctpop.i64(i64 %30) #91, !dbg !4129, !range !1713 %32 = trunc i64 %31 to i32, !dbg !4131 %33 = add i32 %value_phi120, %32, !dbg !4132 %.not185 = icmp eq i32 %33, 0, !dbg !4133 br i1 %.not185, label %L61, label %L40, !dbg !4134 L61: ; preds = %L40 %34 = xor i64 %29, -1, !dbg !4135 %35 = and i64 %v.i, %34, !dbg !4137 store atomic i64 %35, i64* %p.i release, align 16, !dbg !4138, !noalias !4139 br label %L72, !dbg !4142 L72: ; preds = %L61, %L24 %value_phi60 = phi i32 [ %15, %L61 ], [ %19, %L24 ] %value_phi61 = phi i64 [ %29, %L61 ], [ %v.i, %L24 ] %36 = icmp sgt i32 %value_phi60, 0, !dbg !4143 br i1 %36, label %L133.lr.ph, label %L393, !dbg !4144 L133.lr.ph: ; preds = %L72 %37 = zext i32 %value_phi60 to i64, !dbg !4145 %38 = add nuw nsw i64 %37, 1, !dbg !4162 %39 = udiv i64 %unbox, %38, !dbg !4164 %40 = mul i64 %39, %38, !dbg !4165 %41 = sub i64 %unbox, %40, !dbg !4167 %42 = addrspacecast {} addrspace(10)* %0 to {} addrspace(11)*, !dbg !4168 %43 = call nonnull {}* @julia.pointer_from_objref({} addrspace(11)* noundef %42) #93, !dbg !4168 %44 = bitcast {}* %43 to i8**, !dbg !4168 %arrayptr64 = load i8*, i8** %44, align 8, !dbg !4168, !tbaa !95, !alias.scope !313, !noalias !314, !nonnull !90 %45 = ptrtoint i8* %arrayptr64 to i64, !dbg !4168 %46 = addrspacecast {} addrspace(10)* %0 to {} addrspace(10)* addrspace(11)*, !dbg !4178 %arraysize_ptr65 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %46, i64 3, !dbg !4178 %47 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr65 to i64 addrspace(11)*, !dbg !4178 %arraysize66 = load i64, i64 addrspace(11)* %47, align 8, !dbg !4178, !tbaa !95, !range !131, !alias.scope !313, !noalias !314 %arraysize_ptr67 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %46, i64 4, !dbg !4178 %48 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr67 to i64 addrspace(11)*, !dbg !4178 %arraysize68 = load i64, i64 addrspace(11)* %48, align 16, !dbg !4178, !tbaa !95, !range !131, !alias.scope !313, !noalias !314 %getfield_addr73 = getelementptr inbounds { [1 x {} addrspace(10)*] }, { [1 x {} addrspace(10)*] } addrspace(11)* %1, i64 0, i32 0, i64 0, !dbg !4184 %getfield74 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %getfield_addr73 unordered, align 8, !dbg !4184, !tbaa !95, !alias.scope !313, !noalias !314, !nonnull !90, !dereferenceable !315, !align !316 %49 = addrspacecast {} addrspace(10)* %getfield74 to {} addrspace(11)*, !dbg !4188 %50 = call nonnull {}* @julia.pointer_from_objref({} addrspace(11)* noundef %49) #93, !dbg !4188 %51 = bitcast {}* %50 to i8**, !dbg !4188 %arrayptr76 = load i8*, i8** %51, align 8, !dbg !4188, !tbaa !95, !alias.scope !313, !noalias !314, !nonnull !90 %52 = ptrtoint i8* %arrayptr76 to i64, !dbg !4188 %53 = addrspacecast {} addrspace(10)* %getfield74 to {} addrspace(10)* addrspace(11)*, !dbg !4195 %arraysize_ptr77 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %53, i64 3, !dbg !4195 %54 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr77 to i64 addrspace(11)*, !dbg !4195 %arraysize78 = load i64, i64 addrspace(11)* %54, align 8, !dbg !4195, !tbaa !95, !range !131, !alias.scope !313, !noalias !314 %arraysize_ptr79 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %53, i64 4, !dbg !4195 %55 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr79 to i64 addrspace(11)*, !dbg !4195 %arraysize80 = load i64, i64 addrspace(11)* %55, align 16, !dbg !4195, !tbaa !95, !range !131, !alias.scope !313, !noalias !314 %56 = insertvalue [1 x {} addrspace(10)*] zeroinitializer, {} addrspace(10)* %getfield74, 0, !dbg !4201 %57 = load i64, i64 addrspace(11)* %10, align 8, !dbg !4202, !tbaa !95, !alias.scope !313, !noalias !314 %newstruct87.sroa.0.0..sroa_idx = getelementptr inbounds { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }, { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }* %4, i64 0, i32 0, i32 0, !dbg !4203 store i64 %45, i64* %newstruct87.sroa.0.0..sroa_idx, align 16, !dbg !4203, !tbaa !340, !alias.scope !1043, !noalias !4204 %newstruct87.sroa.2.0..sroa_idx134 = getelementptr inbounds { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }, { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }* %4, i64 0, i32 0, i32 1, i64 0, !dbg !4203 store i64 %arraysize66, i64* %newstruct87.sroa.2.0..sroa_idx134, align 8, !dbg !4203, !tbaa !340, !alias.scope !1043, !noalias !4204 %newstruct87.sroa.3.0..sroa_idx135 = getelementptr inbounds { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }, { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }* %4, i64 0, i32 0, i32 1, i64 1, !dbg !4203 store i64 %arraysize68, i64* %newstruct87.sroa.3.0..sroa_idx135, align 16, !dbg !4203, !tbaa !340, !alias.scope !1043, !noalias !4204 %newstruct87.sroa.4.0..sroa_idx136 = getelementptr inbounds { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }, { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }* %4, i64 0, i32 1, i64 0, !dbg !4203 store i64 %57, i64* %newstruct87.sroa.4.0..sroa_idx136, align 8, !dbg !4203, !tbaa !340, !alias.scope !1043, !noalias !4204 %newstruct87.sroa.5.0..sroa_idx137 = getelementptr inbounds { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }, { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }* %4, i64 0, i32 2, i32 0, i64 0, i32 0, !dbg !4203 store i64 %52, i64* %newstruct87.sroa.5.0..sroa_idx137, align 16, !dbg !4203, !tbaa !340, !alias.scope !1043, !noalias !4204 %newstruct87.sroa.6.0..sroa_idx138 = getelementptr inbounds { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }, { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }* %4, i64 0, i32 2, i32 0, i64 0, i32 1, i64 0, !dbg !4203 store i64 %arraysize78, i64* %newstruct87.sroa.6.0..sroa_idx138, align 8, !dbg !4203, !tbaa !340, !alias.scope !1043, !noalias !4204 %newstruct87.sroa.7.0..sroa_idx139 = getelementptr inbounds { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }, { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }* %4, i64 0, i32 2, i32 0, i64 0, i32 1, i64 1, !dbg !4203 store i64 %arraysize80, i64* %newstruct87.sroa.7.0..sroa_idx139, align 16, !dbg !4203, !tbaa !340, !alias.scope !1043, !noalias !4204 %58 = call token (...) @llvm.julia.gc_preserve_begin({} addrspace(10)* nonnull %0, [1 x {} addrspace(10)*] %56) #91, !dbg !4175 %59 = icmp sgt i64 %41, -1 br label %L133, !dbg !4205 L133: ; preds = %L187, %L133.lr.ph %iv1 = phi i64 [ %iv.next2, %L187 ], [ 0, %L133.lr.ph ] %value_phi95200 = phi i64 [ %value_phi61, %L133.lr.ph ], [ %72, %L187 ] %value_phi93198 = phi i64 [ 0, %L133.lr.ph ], [ %66, %L187 ] %value_phi92197 = phi i32 [ 0, %L133.lr.ph ], [ %68, %L187 ] %iv.next2 = add nuw nsw i64 %iv1, 1, !dbg !4206 %60 = icmp ne i64 %value_phi95200, 0, !dbg !4206 call void @llvm.assume(i1 noundef %60) #91, !dbg !4209 %61 = call i64 @llvm.cttz.i64(i64 %value_phi95200, i1 noundef true) #91, !dbg !4210, !range !1713 %62 = trunc i64 %61 to i32, !dbg !4212 %63 = icmp ugt i64 %41, %iv1, !dbg !4213 %not.ifelse_cond96 = and i1 %59, %63, !dbg !4217 %64 = zext i1 %not.ifelse_cond96 to i64, !dbg !4217 %65 = add i64 %value_phi93198, %39, !dbg !4217 %66 = add i64 %65, %64, !dbg !4218 %67 = add nuw nsw i32 %62, 1, !dbg !4219 %68 = add i32 %67, %value_phi92197, !dbg !4221 %69 = zext i32 %67 to i64, !dbg !4223 %70 = lshr i64 %value_phi95200, %69, !dbg !4223 %71 = icmp eq i32 %62, 63, !dbg !4223 %72 = select i1 %71, i64 0, i64 %70, !dbg !4223 %73 = load i64, i64* inttoptr (i64 125797243527104 to i64*), align 64, !dbg !4225, !tbaa !247, !alias.scope !117, !noalias !120 %74 = shl i32 %68, 9, !dbg !4231 %75 = zext i32 %74 to i64, !dbg !4232 %76 = inttoptr i64 %73 to i8*, !dbg !4236 %77 = getelementptr i8, i8* %76, i64 %75, !dbg !4236 %78 = getelementptr i8, i8* %77, i64 8, !dbg !4237 %coercion = bitcast i8* %78 to i64*, !dbg !4243 store i64 ptrtoint (void (i64)* @jlcapi_BatchClosure_2763 to i64), i64* %coercion, align 1, !dbg !4243, !tbaa !331, !alias.scope !117, !noalias !4247 %79 = getelementptr i8, i8* %77, i64 16, !dbg !4248 %80 = bitcast i8* %79 to { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }**, !dbg !4252 store { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }* %4, { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }** %80, align 1, !dbg !4252, !tbaa !331, !alias.scope !117, !noalias !4247 %81 = getelementptr i8, i8* %77, i64 24, !dbg !4256 %coercion98 = bitcast i8* %81 to i64*, !dbg !4260 store i64 %value_phi93198, i64* %coercion98, align 1, !dbg !4260, !tbaa !331, !alias.scope !117, !noalias !4247 %82 = getelementptr i8, i8* %77, i64 32, !dbg !4264 %coercion99 = bitcast i8* %82 to i64*, !dbg !4268 store i64 %66, i64* %coercion99, align 1, !dbg !4268, !tbaa !331, !alias.scope !117, !noalias !4247 %p.i128 = bitcast i8* %77 to i32*, !dbg !4272 %v.i129 = atomicrmw xchg i32* %p.i128, i32 0 acq_rel, align 4, !dbg !4272 %.not178 = icmp eq i32 %v.i129, 1, !dbg !4275 br i1 %.not178, label %L184, label %L187, !dbg !4276 L184: ; preds = %L133 call fastcc void @julia_wake_thread__2921(i32 zeroext %68) #91, !dbg !4276 br label %L187, !dbg !4276 L187: ; preds = %L184, %L133 %83 = icmp eq i64 %iv.next2, %37, !dbg !4277 br i1 %83, label %L189, label %L133, !dbg !4205 L189: ; preds = %L187 %84 = add i64 %66, 1, !dbg !4279 %.not179 = icmp sgt i64 %84, %unbox, !dbg !4281 %value_phi101 = select i1 %.not179, i64 %66, i64 %unbox, !dbg !4283 %.not180 = icmp sgt i64 %84, %value_phi101, !dbg !4287 %85 = shl i64 %arraysize66, 2, !dbg !4297 %86 = mul i64 %85, %66, !dbg !4307 %87 = getelementptr i8, i8* %arrayptr64, i64 %86, !dbg !4309 %88 = sub i64 %value_phi101, %66, !dbg !4310 %89 = select i1 %.not180, i64 0, i64 %88, !dbg !4310 %90 = shl i64 %arraysize78, 2, !dbg !4318 %91 = mul i64 %90, %66, !dbg !4329 %92 = getelementptr i8, i8* %arrayptr76, i64 %91, !dbg !4331 %93 = mul i64 %89, %arraysize66, !dbg !4332 %94 = call i64 @llvm.smax.i64(i64 %93, i64 noundef 0) #91, !dbg !4341 %.not181 = icmp slt i64 %93, 1, !dbg !4346 br i1 %.not181, label %L349, label %L301.preheader, !dbg !4347 L301.preheader: ; preds = %L189 br label %L301, !dbg !4348 L301: ; preds = %L301.preheader, %L301 %iv3 = phi i64 [ 0, %L301.preheader ], [ %iv.next4, %L301 ] %iv.next4 = add nuw nsw i64 %iv3, 1, !dbg !4349 %95 = shl i64 %iv3, 2, !dbg !4352 %96 = getelementptr i8, i8* %92, i64 %95, !dbg !4357 %coercion111 = bitcast i8* %96 to float*, !dbg !4358 %pointerref = load float, float* %coercion111, align 1, !dbg !4358, !tbaa !331, !alias.scope !117, !noalias !120 call void @llvm.lifetime.end.p0i8(i64 noundef 56, i8* noundef nonnull %.sub) #91 %97 = call fastcc float @julia_gelu_2739(float %pointerref) #91, !dbg !4355 %98 = getelementptr i8, i8* %87, i64 %95, !dbg !4362 %coercion112 = bitcast i8* %98 to float*, !dbg !4364 store float %97, float* %coercion112, align 1, !dbg !4364, !tbaa !331, !alias.scope !117, !noalias !4247 %exitcond202.not = icmp eq i64 %iv.next4, %94, !dbg !4368 br i1 %exitcond202.not, label %L349.loopexit, label %L301, !dbg !4348, !llvm.loop !4369 L349.loopexit: ; preds = %L301 br label %L349, !dbg !4370 L349: ; preds = %L349.loopexit, %L189 %99 = icmp eq i64 %value_phi61, 0, !dbg !4370 br i1 %99, label %L387, label %L355.preheader, !dbg !4372 L355.preheader: ; preds = %L349 br label %L355, !dbg !4373 L355: ; preds = %L355.preheader, %L385 %iv5 = phi i64 [ 0, %L355.preheader ], [ %iv.next6, %L385 ] %value_phi115194 = phi i64 [ %104, %L385 ], [ %value_phi61, %L355.preheader ] %value_phi114193 = phi i32 [ %106, %L385 ], [ 0, %L355.preheader ] %iv.next6 = add nuw nsw i64 %iv5, 1, !dbg !4376 %100 = call i64 @llvm.cttz.i64(i64 %value_phi115194, i1 noundef true) #91, !dbg !4376, !range !1713 %101 = trunc i64 %100 to i32, !dbg !4378 %102 = add nuw nsw i32 %101, 1, !dbg !4379 %103 = zext i32 %102 to i64, !dbg !4381 %104 = lshr i64 %value_phi115194, %103, !dbg !4381 %105 = icmp eq i32 %101, 63, !dbg !4381 %106 = add i32 %102, %value_phi114193, !dbg !4383 %107 = load i64, i64* inttoptr (i64 125797243527104 to i64*), align 64, !dbg !4385, !tbaa !247, !alias.scope !117, !noalias !120 %108 = shl i32 %106, 9, !dbg !4388 %109 = zext i32 %108 to i64, !dbg !4389 %110 = inttoptr i64 %107 to i8*, !dbg !4393 %111 = getelementptr i8, i8* %110, i64 %109, !dbg !4393 %p.i130 = bitcast i8* %111 to i32*, !dbg !4394 %v.i131190 = load atomic i32, i32* %p.i130 acquire, align 16, !dbg !4394 %.not183191 = icmp eq i32 %v.i131190, 0, !dbg !4396 br i1 %.not183191, label %L375.preheader, label %L385, !dbg !4373 L375.preheader: ; preds = %L355 br label %L375, !dbg !4397 L375: ; preds = %L375.preheader, %L382 %iv7 = phi i64 [ 0, %L375.preheader ], [ %iv.next8, %L382 ] %112 = trunc i64 %iv7 to i32 %iv.next8 = add nuw nsw i64 %iv7, 1 call void @llvm.lifetime.end.p0i8(i64 noundef 56, i8* noundef nonnull %.sub) #91 call void asm sideeffect "pause", "~{memory}"() #94, !dbg !4398 %113 = add i32 %112, 1, !dbg !4400 %114 = icmp ult i32 %113, 65537, !dbg !4401 br i1 %114, label %L382, label %L379, !dbg !4397 L379: ; preds = %L375 %115 = call fastcc i8 @julia_checktask_2772(i32 zeroext %106) #91, !dbg !4403 %116 = and i8 %115, 1, !dbg !4403 %.not184 = icmp eq i8 %116, 0, !dbg !4403 br i1 %.not184, label %L382, label %L385.loopexit, !dbg !4403 L382: ; preds = %L379, %L375 %v.i131 = load atomic i32, i32* %p.i130 acquire, align 16, !dbg !4394 %.not183 = icmp eq i32 %v.i131, 0, !dbg !4396 br i1 %.not183, label %L375, label %L385.loopexit, !dbg !4373 L385.loopexit: ; preds = %L379, %L382 br label %L385, !dbg !4370 L385: ; preds = %L385.loopexit, %L355 %117 = icmp eq i64 %104, 0, !dbg !4370 %118 = select i1 %105, i1 true, i1 %117, !dbg !4370 br i1 %118, label %L387.loopexit, label %L355, !dbg !4372 L387.loopexit: ; preds = %L385 br label %L387, !dbg !4404 L387: ; preds = %L387.loopexit, %L349 %v.i133 = atomicrmw or i64* %p.i, i64 %value_phi61 acq_rel, align 8, !dbg !4404 br label %L616, !dbg !4407 L393: ; preds = %L72, %L14, %L6 %119 = call i64 @llvm.smax.i64(i64 %unbox, i64 noundef 0) #91, !dbg !4408 %.not173.inv = icmp sgt i64 %unbox, 0, !dbg !4411 %value_phi7 = select i1 %.not173.inv, i64 %119, i64 0, !dbg !4411 %120 = addrspacecast {} addrspace(10)* %0 to {} addrspace(10)* addrspace(11)*, !dbg !4419 %arraysize_ptr = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %120, i64 3, !dbg !4419 %121 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr to i64 addrspace(11)*, !dbg !4419 %arraysize = load i64, i64 addrspace(11)* %121, align 8, !dbg !4419, !tbaa !95, !range !131, !alias.scope !313, !noalias !314 %memcpy_refined_dst14 = getelementptr inbounds { [1 x [1 x i64]], [2 x i64] }, { [1 x [1 x i64]], [2 x i64] }* %newstruct13, i64 0, i32 0, i64 0, i64 0, !dbg !4425 store i64 %arraysize, i64* %memcpy_refined_dst14, align 8, !dbg !4425, !tbaa !397, !alias.scope !399, !noalias !4427 %newstruct8.sroa.0.0..sroa_idx = getelementptr inbounds { [1 x [1 x i64]], [2 x i64] }, { [1 x [1 x i64]], [2 x i64] }* %newstruct13, i64 0, i32 1, i64 0, !dbg !4425 store i64 1, i64* %newstruct8.sroa.0.0..sroa_idx, align 8, !dbg !4425, !tbaa !397, !alias.scope !399, !noalias !4427 %newstruct8.sroa.5.0..sroa_idx146 = getelementptr inbounds { [1 x [1 x i64]], [2 x i64] }, { [1 x [1 x i64]], [2 x i64] }* %newstruct13, i64 0, i32 1, i64 1, !dbg !4425 store i64 %value_phi7, i64* %newstruct8.sroa.5.0..sroa_idx146, align 8, !dbg !4425, !tbaa !397, !alias.scope !399, !noalias !4427 %arraysize_ptr15 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %120, i64 4, !dbg !4428 %122 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr15 to i64 addrspace(11)*, !dbg !4428 %arraysize16 = load i64, i64 addrspace(11)* %122, align 16, !dbg !4428, !tbaa !95, !range !131, !alias.scope !313, !noalias !314 %123 = icmp eq i64 %value_phi7, 0, !dbg !4432 %124 = add nsw i64 %value_phi7, -1, !dbg !4438 %125 = icmp ult i64 %124, %arraysize16, !dbg !4440 %126 = or i1 %123, %125, !dbg !4441 br i1 %126, label %L464, label %L461, !dbg !4431 L461: ; preds = %L393 %127 = addrspacecast { [1 x [1 x i64]], [2 x i64] }* %newstruct13 to { [1 x [1 x i64]], [2 x i64] } addrspace(11)*, !dbg !4431 call fastcc void @julia_throw_boundserror_2928({} addrspace(10)* nofree noundef nonnull align 16 dereferenceable(40) %0, { [1 x [1 x i64]], [2 x i64] } addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(24) %127) #95, !dbg !4431 unreachable, !dbg !4431 L464: ; preds = %L393 %getfield_addr = getelementptr inbounds { [1 x {} addrspace(10)*] }, { [1 x {} addrspace(10)*] } addrspace(11)* %1, i64 0, i32 0, i64 0, !dbg !4442 %getfield = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %getfield_addr unordered, align 8, !dbg !4442, !tbaa !95, !alias.scope !313, !noalias !314, !nonnull !90, !dereferenceable !315, !align !316 %128 = addrspacecast {} addrspace(10)* %getfield to {} addrspace(10)* addrspace(11)*, !dbg !4446 %arraysize_ptr25 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %128, i64 3, !dbg !4446 %129 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr25 to i64 addrspace(11)*, !dbg !4446 %arraysize26 = load i64, i64 addrspace(11)* %129, align 8, !dbg !4446, !tbaa !95, !range !131, !alias.scope !313, !noalias !314 %memcpy_refined_dst32 = getelementptr inbounds { [1 x [1 x i64]], [2 x i64] }, { [1 x [1 x i64]], [2 x i64] }* %newstruct30, i64 0, i32 0, i64 0, i64 0, !dbg !4451 store i64 %arraysize26, i64* %memcpy_refined_dst32, align 8, !dbg !4451, !tbaa !397, !alias.scope !399, !noalias !4427 %newstruct8.sroa.0.0..sroa_idx142 = getelementptr inbounds { [1 x [1 x i64]], [2 x i64] }, { [1 x [1 x i64]], [2 x i64] }* %newstruct30, i64 0, i32 1, i64 0, !dbg !4451 store i64 1, i64* %newstruct8.sroa.0.0..sroa_idx142, align 8, !dbg !4451, !tbaa !397, !alias.scope !399, !noalias !4427 %newstruct8.sroa.5.0..sroa_idx147 = getelementptr inbounds { [1 x [1 x i64]], [2 x i64] }, { [1 x [1 x i64]], [2 x i64] }* %newstruct30, i64 0, i32 1, i64 1, !dbg !4451 store i64 %value_phi7, i64* %newstruct8.sroa.5.0..sroa_idx147, align 8, !dbg !4451, !tbaa !397, !alias.scope !399, !noalias !4427 %arraysize_ptr33 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %128, i64 4, !dbg !4453 %130 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr33 to i64 addrspace(11)*, !dbg !4453 %arraysize34 = load i64, i64 addrspace(11)* %130, align 16, !dbg !4453, !tbaa !95, !range !131, !alias.scope !313, !noalias !314 %131 = icmp ult i64 %124, %arraysize34, !dbg !4457 %132 = or i1 %123, %131, !dbg !4462 br i1 %132, label %L503, label %L500, !dbg !4456 L500: ; preds = %L464 %133 = addrspacecast { [1 x [1 x i64]], [2 x i64] }* %newstruct30 to { [1 x [1 x i64]], [2 x i64] } addrspace(11)*, !dbg !4456 call fastcc void @julia_throw_boundserror_2928({} addrspace(10)* nofree noundef nonnull align 16 dereferenceable(40) %getfield, { [1 x [1 x i64]], [2 x i64] } addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(24) %133) #95, !dbg !4456 unreachable, !dbg !4456 L503: ; preds = %L464 %134 = mul i64 %arraysize, %value_phi7, !dbg !4463 %135 = call i64 @llvm.smax.i64(i64 %134, i64 noundef 0) #91, !dbg !4472 %.not174 = icmp slt i64 %134, 1, !dbg !4477 br i1 %.not174, label %L616, label %L552.lr.ph, !dbg !4478 L552.lr.ph: ; preds = %L503 %136 = addrspacecast {} addrspace(10)* %getfield to float addrspace(13)* addrspace(11)* %137 = addrspacecast {} addrspace(10)* %0 to float addrspace(13)* addrspace(11)* br label %L552, !dbg !4479 L552: ; preds = %L552, %L552.lr.ph %iv9 = phi i64 [ %iv.next10, %L552 ], [ 0, %L552.lr.ph ] %iv.next10 = add nuw nsw i64 %iv9, 1, !dbg !4480 %arrayptr176 = load float addrspace(13)*, float addrspace(13)* addrspace(11)* %136, align 16, !dbg !4483, !tbaa !95, !alias.scope !4487, !noalias !314, !llvm.mem.parallel_loop_access !4488, !nonnull !90 %138 = getelementptr inbounds float, float addrspace(13)* %arrayptr176, i64 %iv9, !dbg !4483 %arrayref = load float, float addrspace(13)* %138, align 4, !dbg !4483, !tbaa !177, !alias.scope !117, !noalias !120, !llvm.mem.parallel_loop_access !4488 %139 = call fastcc float @julia_gelu_2739(float %arrayref) #91, !dbg !4485, !llvm.mem.parallel_loop_access !4488 %arrayptr54177 = load float addrspace(13)*, float addrspace(13)* addrspace(11)* %137, align 16, !dbg !4490, !tbaa !95, !alias.scope !4487, !noalias !314, !llvm.mem.parallel_loop_access !4488, !nonnull !90 %140 = getelementptr inbounds float, float addrspace(13)* %arrayptr54177, i64 %iv9, !dbg !4490 store float %139, float addrspace(13)* %140, align 4, !dbg !4490, !tbaa !177, !alias.scope !117, !noalias !4247, !llvm.mem.parallel_loop_access !4488 %exitcond.not = icmp eq i64 %iv.next10, %135, !dbg !4492 br i1 %exitcond.not, label %L616.loopexit, label %L552, !dbg !4479, !llvm.loop !4489 L616.loopexit: ; preds = %L552 br label %L616 L616: ; preds = %L616.loopexit, %L503, %L387, %top call void @llvm.lifetime.end.p0i8(i64 noundef 56, i8* noundef nonnull %.sub) #91 ret void, !dbg !4493 } ; Function Attrs: mustprogress willreturn define internal fastcc void @diffejulia_fast_materialize_threaded__2755({} addrspace(10)* align 16 dereferenceable(40) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@float, [-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"="125797725781712" "enzymejl_parmtype_ref"="2" %0, {} addrspace(10)* align 16 "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@float, [-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"="125797725781712" "enzymejl_parmtype_ref"="2" %"'", { [1 x {} addrspace(10)*] } addrspace(11)* nocapture nofree readonly align 8 dereferenceable(8) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@float, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,0,10]:Integer, [-1,0,11]:Integer, [-1,0,12]:Integer, [-1,0,13]:Integer, [-1,0,14]:Integer, [-1,0,15]:Integer, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,0,24]:Integer, [-1,0,25]:Integer, [-1,0,26]:Integer, [-1,0,27]:Integer, [-1,0,28]:Integer, [-1,0,29]:Integer, [-1,0,30]:Integer, [-1,0,31]:Integer, [-1,0,32]:Integer, [-1,0,33]:Integer, [-1,0,34]:Integer, [-1,0,35]:Integer, [-1,0,36]:Integer, [-1,0,37]:Integer, [-1,0,38]:Integer, [-1,0,39]:Integer}" "enzymejl_parmtype"="125797729165136" "enzymejl_parmtype_ref"="1" %1, { [1 x {} addrspace(10)*] } addrspace(11)* nocapture nofree align 8 "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@float, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,0,10]:Integer, [-1,0,11]:Integer, [-1,0,12]:Integer, [-1,0,13]:Integer, [-1,0,14]:Integer, [-1,0,15]:Integer, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,0,24]:Integer, [-1,0,25]:Integer, [-1,0,26]:Integer, [-1,0,27]:Integer, [-1,0,28]:Integer, [-1,0,29]:Integer, [-1,0,30]:Integer, [-1,0,31]:Integer, [-1,0,32]:Integer, [-1,0,33]:Integer, [-1,0,34]:Integer, [-1,0,35]:Integer, [-1,0,36]:Integer, [-1,0,37]:Integer, [-1,0,38]:Integer, [-1,0,39]:Integer}" "enzymejl_parmtype"="125797729165136" "enzymejl_parmtype_ref"="1" %"'1", [2 x [1 x i64]] addrspace(11)* nocapture nofree readonly align 8 dereferenceable(16) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer}" "enzymejl_parmtype"="125797567845648" "enzymejl_parmtype_ref"="1" %2, { i8*, {} addrspace(10)*, i8*, {} addrspace(10)*, i64, i64, i32*, i64, i64, {} addrspace(10)*, i64*, i1*, i64, float*, i64*, i1*, i1**, i1**, i64, float* } %tapeArg) unnamed_addr #88 !dbg !5064 { top: %_replacementA9 = phi i8* %_replacementA8 = phi { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }* %.sub_replacementA = phi i8* %_replacementA7 = phi i8* %newstruct13_replacementA = phi { [1 x [1 x i64]], [2 x i64] }* %_replacementA6 = phi i8* %newstruct30_replacementA = phi { [1 x [1 x i64]], [2 x i64] }* %3 = call {}*** @julia.get_pgcstack() #91 %ptls_field170_replacementA = phi {}*** %_replacementA5 = phi i64*** %ptls_load171172_replacementA = phi i64** %_replacementA4 = phi i64** %safepoint_replacementA = phi i64* %_replacementA = phi i64 addrspace(11)* , !dbg !5065 %4 = call i64 @julia_nthreads_2932() #92, !dbg !5067 %unbox = load i64, i64 addrspace(11)* %_replacementA, align 8, !dbg !5068, !tbaa !95, !alias.scope !5072, !noalias !5075 %5 = icmp slt i64 %unbox, 1, !dbg !5068 br i1 %5, label %L616, label %L6, !dbg !5070 L6: ; preds = %top %6 = call i64 @llvm.smin.i64(i64 %unbox, i64 %4) #91, !dbg !5077 %.not = icmp eq i64 %6, 0, !dbg !5078 br i1 %.not, label %L393, label %L14, !dbg !5079 L14: ; preds = %L6 %7 = trunc i64 %6 to i32, !dbg !5080 %8 = add i32 %7, -1, !dbg !5080 %_replacementA10 = phi {}* , !dbg !5084 %9 = icmp sgt i32 %8, 0, !dbg !5086 br i1 %9, label %L24, label %L393, !dbg !5087 L24: ; preds = %L14 %p.i_replacementA = phi i64* , !dbg !5089 %v.i_replacementA = phi i64 , !dbg !5089 %10 = call i64 @llvm.ctpop.i64(i64 %v.i_replacementA) #91, !dbg !5092, !range !1713 %11 = trunc i64 %10 to i32, !dbg !5094 %12 = sub nsw i32 %8, %11, !dbg !5095 %13 = icmp slt i32 %12, 0, !dbg !5097 br i1 %13, label %L37, label %L72, !dbg !5100 L37: ; preds = %L24 %_replacementA12 = phi i64 , !dbg !5101 %_replacementA11 = phi i32 , !dbg !5103 br label %L40, !dbg !5103 L40: ; preds = %L40, %L37 %iv = phi i64 [ %iv.next, %L40 ], [ 0, %L37 ] %value_phi119_replacementA = phi i32 %value_phi120_replacementA = phi i32 %value_phi121_replacementA = phi i64 %iv.next = add nuw nsw i64 %iv, 1, !dbg !5104 %_replacementA21 = phi i32 , !dbg !5104 %_replacementA20 = phi i32 , !dbg !5106 %_replacementA19 = phi i64 , !dbg !5108 %_replacementA18 = phi i1 , !dbg !5108 %notmask_replacementA = phi i64 , !dbg !5106 %.op_replacementA = phi i64 , !dbg !5106 %_replacementA17 = phi i64 , !dbg !5106 %_replacementA16 = phi i64 , !dbg !5109 %_replacementA15 = phi i64 , !dbg !5111 %_replacementA14 = phi i64 , !dbg !5112 %_replacementA13 = phi i32 , !dbg !5114 %14 = add i32 %value_phi120_replacementA, %_replacementA13, !dbg !5115 %.not185 = icmp eq i32 %14, 0, !dbg !5116 br i1 %.not185, label %L61, label %L40, !dbg !5117 L61: ; preds = %L40 %_replacementA23 = phi i64 , !dbg !5118 %_replacementA22 = phi i64 , !dbg !5120 br label %L72, !dbg !5121 L72: ; preds = %L61, %L24 %value_phi60 = phi i32 [ %8, %L61 ], [ %11, %L24 ] %value_phi61 = phi i64 [ %_replacementA16, %L61 ], [ %v.i_replacementA, %L24 ] %15 = icmp sgt i32 %value_phi60, 0, !dbg !5122 br i1 %15, label %L133.lr.ph, label %L393, !dbg !5123 L133.lr.ph: ; preds = %L72 %16 = zext i32 %value_phi60 to i64, !dbg !5124 %17 = add nuw nsw i64 %16, 1, !dbg !5141 %18 = udiv i64 %unbox, %17, !dbg !5143 %19 = mul i64 %18, %17, !dbg !5144 %20 = sub i64 %unbox, %19, !dbg !5146 %21 = addrspacecast {} addrspace(10)* %0 to {} addrspace(11)*, !dbg !5147 %22 = call nonnull {}* @julia.pointer_from_objref({} addrspace(11)* noundef %21) #93, !dbg !5147 %"'ip_phi" = phi {}* , !dbg !5147 %23 = bitcast {}* %22 to i8**, !dbg !5147 %arrayptr64 = load i8*, i8** %23, align 8, !dbg !5147, !tbaa !95, !alias.scope !313, !noalias !314, !nonnull !90 %"arrayptr64'il_phi" = phi i8* , !dbg !5147 %24 = ptrtoint i8* %arrayptr64 to i64, !dbg !5147 %25 = addrspacecast {} addrspace(10)* %0 to {} addrspace(10)* addrspace(11)*, !dbg !5157 %arraysize_ptr65 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %25, i64 3, !dbg !5157 %26 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr65 to i64 addrspace(11)*, !dbg !5157 %arraysize66 = load i64, i64 addrspace(11)* %26, align 8, !dbg !5157, !tbaa !95, !range !131, !alias.scope !313, !noalias !314 %arraysize_ptr67 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %25, i64 4, !dbg !5157 %27 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr67 to i64 addrspace(11)*, !dbg !5157 %arraysize68 = load i64, i64 addrspace(11)* %27, align 16, !dbg !5157, !tbaa !95, !range !131, !alias.scope !313, !noalias !314 %getfield_addr73 = getelementptr inbounds { [1 x {} addrspace(10)*] }, { [1 x {} addrspace(10)*] } addrspace(11)* %1, i64 0, i32 0, i64 0, !dbg !5163 %getfield74 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %getfield_addr73 unordered, align 8, !dbg !5163, !tbaa !95, !alias.scope !313, !noalias !314, !nonnull !90, !dereferenceable !315, !align !316 %"getfield74'il_phi" = phi {} addrspace(10)* , !dbg !5167 %28 = addrspacecast {} addrspace(10)* %getfield74 to {} addrspace(11)*, !dbg !5167 %29 = call nonnull {}* @julia.pointer_from_objref({} addrspace(11)* noundef %28) #93, !dbg !5167 %"'ip_phi2" = phi {}* , !dbg !5167 %30 = bitcast {}* %29 to i8**, !dbg !5167 %arrayptr76 = load i8*, i8** %30, align 8, !dbg !5167, !tbaa !95, !alias.scope !313, !noalias !314, !nonnull !90 %"arrayptr76'il_phi" = phi i8* , !dbg !5167 %31 = ptrtoint i8* %arrayptr76 to i64, !dbg !5167 %32 = addrspacecast {} addrspace(10)* %getfield74 to {} addrspace(10)* addrspace(11)*, !dbg !5174 %arraysize_ptr77 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %32, i64 3, !dbg !5174 %33 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr77 to i64 addrspace(11)*, !dbg !5174 %arraysize78 = load i64, i64 addrspace(11)* %33, align 8, !dbg !5174, !tbaa !95, !range !131, !alias.scope !313, !noalias !314 %arraysize_ptr79 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %32, i64 4, !dbg !5174 %34 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr79 to i64 addrspace(11)*, !dbg !5174 %arraysize80 = load i64, i64 addrspace(11)* %34, align 16, !dbg !5174, !tbaa !95, !range !131, !alias.scope !313, !noalias !314 %35 = insertvalue [1 x {} addrspace(10)*] zeroinitializer, {} addrspace(10)* %getfield74, 0, !dbg !5180 %36 = load i64, i64 addrspace(11)* %_replacementA, align 8, !dbg !5181, !tbaa !95, !alias.scope !313, !noalias !314 %newstruct87.sroa.0.0..sroa_idx = getelementptr inbounds { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }, { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }* %_replacementA8, i64 0, i32 0, i32 0, !dbg !5182 store i64 %24, i64* %newstruct87.sroa.0.0..sroa_idx, align 16, !dbg !5182, !tbaa !340, !alias.scope !1043, !noalias !5183 %newstruct87.sroa.2.0..sroa_idx134 = getelementptr inbounds { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }, { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }* %_replacementA8, i64 0, i32 0, i32 1, i64 0, !dbg !5182 store i64 %arraysize66, i64* %newstruct87.sroa.2.0..sroa_idx134, align 8, !dbg !5182, !tbaa !340, !alias.scope !1043, !noalias !5183 %newstruct87.sroa.3.0..sroa_idx135 = getelementptr inbounds { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }, { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }* %_replacementA8, i64 0, i32 0, i32 1, i64 1, !dbg !5182 store i64 %arraysize68, i64* %newstruct87.sroa.3.0..sroa_idx135, align 16, !dbg !5182, !tbaa !340, !alias.scope !1043, !noalias !5183 %newstruct87.sroa.4.0..sroa_idx136 = getelementptr inbounds { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }, { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }* %_replacementA8, i64 0, i32 1, i64 0, !dbg !5182 store i64 %36, i64* %newstruct87.sroa.4.0..sroa_idx136, align 8, !dbg !5182, !tbaa !340, !alias.scope !1043, !noalias !5183 %newstruct87.sroa.5.0..sroa_idx137 = getelementptr inbounds { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }, { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }* %_replacementA8, i64 0, i32 2, i32 0, i64 0, i32 0, !dbg !5182 store i64 %31, i64* %newstruct87.sroa.5.0..sroa_idx137, align 16, !dbg !5182, !tbaa !340, !alias.scope !1043, !noalias !5183 %newstruct87.sroa.6.0..sroa_idx138 = getelementptr inbounds { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }, { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }* %_replacementA8, i64 0, i32 2, i32 0, i64 0, i32 1, i64 0, !dbg !5182 store i64 %arraysize78, i64* %newstruct87.sroa.6.0..sroa_idx138, align 8, !dbg !5182, !tbaa !340, !alias.scope !1043, !noalias !5183 %newstruct87.sroa.7.0..sroa_idx139 = getelementptr inbounds { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }, { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }* %_replacementA8, i64 0, i32 2, i32 0, i64 0, i32 1, i64 1, !dbg !5182 store i64 %arraysize80, i64* %newstruct87.sroa.7.0..sroa_idx139, align 16, !dbg !5182, !tbaa !340, !alias.scope !1043, !noalias !5183 %37 = call token (...) @llvm.julia.gc_preserve_begin({} addrspace(10)* nonnull %0, [1 x {} addrspace(10)*] %35) #91, !dbg !5154 %"'ip" = call token (...) @llvm.julia.gc_preserve_begin(), !dbg !5154 %38 = icmp sgt i64 %20, -1 %39 = add nsw i64 %16, -1, !dbg !5186 br label %L133, !dbg !5186 L133: ; preds = %L187, %L133.lr.ph %iv1 = phi i64 [ %iv.next2, %L187 ], [ 0, %L133.lr.ph ] %value_phi95200 = phi i64 [ %value_phi61, %L133.lr.ph ], [ %52, %L187 ] %value_phi93198 = phi i64 [ 0, %L133.lr.ph ], [ %46, %L187 ] %value_phi92197 = phi i32 [ 0, %L133.lr.ph ], [ %48, %L187 ] %iv.next2 = add nuw nsw i64 %iv1, 1, !dbg !5187 %40 = icmp ne i64 %value_phi95200, 0, !dbg !5187 call void @llvm.assume(i1 noundef %40) #91, !dbg !5190 %41 = call i64 @llvm.cttz.i64(i64 %value_phi95200, i1 noundef true) #91, !dbg !5191, !range !1713 %42 = trunc i64 %41 to i32, !dbg !5193 %43 = icmp ugt i64 %20, %iv1, !dbg !5194 %not.ifelse_cond96 = and i1 %38, %43, !dbg !5198 %44 = zext i1 %not.ifelse_cond96 to i64, !dbg !5198 %45 = add i64 %value_phi93198, %18, !dbg !5198 %46 = add i64 %45, %44, !dbg !5199 %47 = add nuw nsw i32 %42, 1, !dbg !5200 %48 = add i32 %47, %value_phi92197, !dbg !5202 %49 = zext i32 %47 to i64, !dbg !5204 %50 = lshr i64 %value_phi95200, %49, !dbg !5204 %51 = icmp eq i32 %42, 63, !dbg !5204 %52 = select i1 %51, i64 0, i64 %50, !dbg !5204 %53 = load i64, i64* inttoptr (i64 125797243527104 to i64*), align 64, !dbg !5206, !tbaa !247, !alias.scope !117, !noalias !120 %"'il_phi" = phi i64 , !dbg !5212 %54 = shl i32 %48, 9, !dbg !5212 %55 = zext i32 %54 to i64, !dbg !5213 %56 = inttoptr i64 %53 to i8*, !dbg !5217 %57 = getelementptr i8, i8* %56, i64 %55, !dbg !5217 %58 = getelementptr i8, i8* %57, i64 8, !dbg !5218 %coercion = bitcast i8* %58 to i64*, !dbg !5224 store i64 ptrtoint (void (i64)* @jlcapi_BatchClosure_2763 to i64), i64* %coercion, align 1, !dbg !5224, !tbaa !331, !alias.scope !117, !noalias !5228 %59 = getelementptr i8, i8* %57, i64 16, !dbg !5229 %60 = bitcast i8* %59 to { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }**, !dbg !5233 store { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }* %_replacementA8, { { i64, [2 x i64] }, [1 x i64], { [1 x { i64, [2 x i64] }] } }** %60, align 1, !dbg !5233, !tbaa !331, !alias.scope !117, !noalias !5228 %61 = getelementptr i8, i8* %57, i64 24, !dbg !5237 %coercion98 = bitcast i8* %61 to i64*, !dbg !5241 store i64 %value_phi93198, i64* %coercion98, align 1, !dbg !5241, !tbaa !331, !alias.scope !117, !noalias !5228 %62 = getelementptr i8, i8* %57, i64 32, !dbg !5245 %coercion99 = bitcast i8* %62 to i64*, !dbg !5249 store i64 %46, i64* %coercion99, align 1, !dbg !5249, !tbaa !331, !alias.scope !117, !noalias !5228 %p.i128 = bitcast i8* %57 to i32*, !dbg !5253 %v.i129 = atomicrmw xchg i32* %p.i128, i32 0 acq_rel, align 4, !dbg !5253 %.not178 = icmp eq i32 %v.i129, 1, !dbg !5256 br i1 %.not178, label %L184, label %L187, !dbg !5257 L184: ; preds = %L133 call fastcc void @julia_wake_thread__2921(i32 zeroext %48) #91, !dbg !5257 br label %L187, !dbg !5257 L187: ; preds = %L184, %L133 %63 = icmp eq i64 %iv.next2, %16, !dbg !5258 br i1 %63, label %L189, label %L133, !dbg !5186 L189: ; preds = %L187 %64 = add i64 %46, 1, !dbg !5260 %.not179 = icmp sgt i64 %64, %unbox, !dbg !5262 %value_phi101 = select i1 %.not179, i64 %46, i64 %unbox, !dbg !5264 %.not180 = icmp sgt i64 %64, %value_phi101, !dbg !5268 %65 = shl i64 %arraysize66, 2, !dbg !5278 %66 = mul i64 %65, %46, !dbg !5288 %67 = getelementptr i8, i8* %arrayptr64, i64 %66, !dbg !5290 %68 = sub i64 %value_phi101, %46, !dbg !5291 %69 = select i1 %.not180, i64 0, i64 %68, !dbg !5291 %70 = shl i64 %arraysize78, 2, !dbg !5299 %71 = mul i64 %70, %46, !dbg !5310 %72 = getelementptr i8, i8* %arrayptr76, i64 %71, !dbg !5312 %73 = mul i64 %69, %arraysize66, !dbg !5313 %74 = call i64 @llvm.smax.i64(i64 %73, i64 noundef 0) #91, !dbg !5322 %.not181 = icmp slt i64 %73, 1, !dbg !5327 br i1 %.not181, label %L349, label %L301.preheader, !dbg !5328 L301.preheader: ; preds = %L189 %75 = add nsw i64 %74, -1, !dbg !5329 br label %L301, !dbg !5329 L301: ; preds = %L301, %L301.preheader %iv3 = phi i64 [ 0, %L301.preheader ], [ %iv.next4, %L301 ] %iv.next4 = add nuw nsw i64 %iv3, 1, !dbg !5330 %76 = shl i64 %iv3, 2, !dbg !5333 %77 = getelementptr i8, i8* %72, i64 %76, !dbg !5338 %coercion111 = bitcast i8* %77 to float*, !dbg !5339 %pointerref = load float, float* %coercion111, align 1, !dbg !5339, !tbaa !331, !alias.scope !117, !noalias !120 call void @llvm.lifetime.end.p0i8(i64 noundef 56, i8* noundef nonnull %.sub_replacementA) #91 %78 = call fastcc float @julia_gelu_2739(float %pointerref) #91, !dbg !5336 %79 = getelementptr i8, i8* %67, i64 %76, !dbg !5343 %coercion112 = bitcast i8* %79 to float*, !dbg !5345 store float %78, float* %coercion112, align 1, !dbg !5345, !tbaa !331, !alias.scope !117, !noalias !5228 %exitcond202.not = icmp eq i64 %iv.next4, %74, !dbg !5349 br i1 %exitcond202.not, label %L349.loopexit, label %L301, !dbg !5329, !llvm.loop !5350 L349.loopexit: ; preds = %L301 br label %L349, !dbg !5351 L349: ; preds = %L349.loopexit, %L189 %80 = icmp eq i64 %value_phi61, 0, !dbg !5351 br i1 %80, label %L387, label %L355.preheader, !dbg !5353 L355.preheader: ; preds = %L349 br label %L355, !dbg !5354 L355: ; preds = %L385, %L355.preheader %iv5 = phi i64 [ 0, %L355.preheader ], [ %iv.next6, %L385 ] %value_phi115194 = phi i64 [ %85, %L385 ], [ %value_phi61, %L355.preheader ] %value_phi114193 = phi i32 [ %87, %L385 ], [ 0, %L355.preheader ] %iv.next6 = add nuw nsw i64 %iv5, 1, !dbg !5357 %81 = call i64 @llvm.cttz.i64(i64 %value_phi115194, i1 noundef true) #91, !dbg !5357, !range !1713 %82 = trunc i64 %81 to i32, !dbg !5359 %83 = add nuw nsw i32 %82, 1, !dbg !5360 %84 = zext i32 %83 to i64, !dbg !5362 %85 = lshr i64 %value_phi115194, %84, !dbg !5362 %86 = icmp eq i32 %82, 63, !dbg !5362 %87 = add i32 %83, %value_phi114193, !dbg !5364 %88 = load i64, i64* inttoptr (i64 125797243527104 to i64*), align 64, !dbg !5366, !tbaa !247, !alias.scope !117, !noalias !120 %"'il_phi3" = phi i64 , !dbg !5369 %89 = shl i32 %87, 9, !dbg !5369 %90 = zext i32 %89 to i64, !dbg !5370 %91 = inttoptr i64 %88 to i8*, !dbg !5374 %92 = getelementptr i8, i8* %91, i64 %90, !dbg !5374 %p.i130 = bitcast i8* %92 to i32*, !dbg !5375 %v.i131190 = load atomic i32, i32* %p.i130 acquire, align 16, !dbg !5375 %"v.i131190'il_phi" = phi i32 , !dbg !5377 %.not183191 = icmp eq i32 %v.i131190, 0, !dbg !5377 br i1 %.not183191, label %L375.preheader, label %L385, !dbg !5354 L375.preheader: ; preds = %L355 br label %L375, !dbg !5378 L375: ; preds = %L382, %L375.preheader %iv7 = phi i64 [ 0, %L375.preheader ], [ %iv.next8, %L382 ] %iv.next8 = add nuw nsw i64 %iv7, 1 %93 = trunc i64 %iv7 to i32 call void @llvm.lifetime.end.p0i8(i64 noundef 56, i8* noundef nonnull %.sub_replacementA) #91 call void asm sideeffect "pause", "~{memory}"() #94, !dbg !5379 %94 = add i32 %93, 1, !dbg !5381 %95 = icmp ult i32 %94, 65537, !dbg !5382 br i1 %95, label %L382, label %L379, !dbg !5378 L379: ; preds = %L375 %96 = call fastcc i8 @julia_checktask_2772(i32 zeroext %87) #91, !dbg !5384 %97 = and i8 %96, 1, !dbg !5384 %.not184 = icmp eq i8 %97, 0, !dbg !5384 br i1 %.not184, label %L382, label %L385.loopexit, !dbg !5384 L382: ; preds = %L379, %L375 %v.i131 = load atomic i32, i32* %p.i130 acquire, align 16, !dbg !5375 %"v.i131'il_phi" = phi i32 , !dbg !5377 %.not183 = icmp eq i32 %v.i131, 0, !dbg !5377 br i1 %.not183, label %L375, label %L385.loopexit, !dbg !5354 L385.loopexit: ; preds = %L382, %L379 br label %L385, !dbg !5351 L385: ; preds = %L385.loopexit, %L355 %98 = icmp eq i64 %85, 0, !dbg !5351 %99 = select i1 %86, i1 true, i1 %98, !dbg !5351 br i1 %99, label %L387.loopexit, label %L355, !dbg !5353 L387.loopexit: ; preds = %L385 br label %L387, !dbg !5385 L387: ; preds = %L387.loopexit, %L349 %v.i133 = atomicrmw or i64* %p.i_replacementA, i64 %value_phi61 acq_rel, align 8, !dbg !5385 br label %L616, !dbg !5388 L393: ; preds = %L72, %L14, %L6 %100 = call i64 @llvm.smax.i64(i64 %unbox, i64 noundef 0) #91, !dbg !5389 %.not173.inv = icmp sgt i64 %unbox, 0, !dbg !5392 %value_phi7 = select i1 %.not173.inv, i64 %100, i64 0, !dbg !5392 %101 = addrspacecast {} addrspace(10)* %0 to {} addrspace(10)* addrspace(11)*, !dbg !5400 %arraysize_ptr = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %101, i64 3, !dbg !5400 %102 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr to i64 addrspace(11)*, !dbg !5400 %arraysize = load i64, i64 addrspace(11)* %102, align 8, !dbg !5400, !tbaa !95, !range !131, !alias.scope !313, !noalias !314 %memcpy_refined_dst14 = getelementptr inbounds { [1 x [1 x i64]], [2 x i64] }, { [1 x [1 x i64]], [2 x i64] }* %newstruct13_replacementA, i64 0, i32 0, i64 0, i64 0, !dbg !5406 store i64 %arraysize, i64* %memcpy_refined_dst14, align 8, !dbg !5406, !tbaa !397, !alias.scope !399, !noalias !5408 %newstruct8.sroa.0.0..sroa_idx = getelementptr inbounds { [1 x [1 x i64]], [2 x i64] }, { [1 x [1 x i64]], [2 x i64] }* %newstruct13_replacementA, i64 0, i32 1, i64 0, !dbg !5406 store i64 1, i64* %newstruct8.sroa.0.0..sroa_idx, align 8, !dbg !5406, !tbaa !397, !alias.scope !399, !noalias !5408 %newstruct8.sroa.5.0..sroa_idx146 = getelementptr inbounds { [1 x [1 x i64]], [2 x i64] }, { [1 x [1 x i64]], [2 x i64] }* %newstruct13_replacementA, i64 0, i32 1, i64 1, !dbg !5406 store i64 %value_phi7, i64* %newstruct8.sroa.5.0..sroa_idx146, align 8, !dbg !5406, !tbaa !397, !alias.scope !399, !noalias !5408 %arraysize_ptr15 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %101, i64 4, !dbg !5409 %103 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr15 to i64 addrspace(11)*, !dbg !5409 %arraysize16 = load i64, i64 addrspace(11)* %103, align 16, !dbg !5409, !tbaa !95, !range !131, !alias.scope !313, !noalias !314 %104 = icmp eq i64 %value_phi7, 0, !dbg !5413 %105 = add nsw i64 %value_phi7, -1, !dbg !5419 %106 = icmp ult i64 %105, %arraysize16, !dbg !5421 %107 = or i1 %104, %106, !dbg !5422 br i1 %107, label %L464, label %L461, !dbg !5412 L461: ; preds = %L393 %108 = addrspacecast { [1 x [1 x i64]], [2 x i64] }* %newstruct13_replacementA to { [1 x [1 x i64]], [2 x i64] } addrspace(11)*, !dbg !5412 call fastcc void @julia_throw_boundserror_2928({} addrspace(10)* nofree noundef nonnull align 16 dereferenceable(40) %0, { [1 x [1 x i64]], [2 x i64] } addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(24) %108) #95, !dbg !5412 unreachable, !dbg !5412 L464: ; preds = %L393 %getfield_addr = getelementptr inbounds { [1 x {} addrspace(10)*] }, { [1 x {} addrspace(10)*] } addrspace(11)* %1, i64 0, i32 0, i64 0, !dbg !5423 %getfield = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %getfield_addr unordered, align 8, !dbg !5423, !tbaa !95, !alias.scope !313, !noalias !314, !nonnull !90, !dereferenceable !315, !align !316 %"getfield'il_phi" = phi {} addrspace(10)* , !dbg !5427 %109 = addrspacecast {} addrspace(10)* %getfield to {} addrspace(10)* addrspace(11)*, !dbg !5427 %arraysize_ptr25 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %109, i64 3, !dbg !5427 %110 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr25 to i64 addrspace(11)*, !dbg !5427 %arraysize26 = load i64, i64 addrspace(11)* %110, align 8, !dbg !5427, !tbaa !95, !range !131, !alias.scope !313, !noalias !314 %memcpy_refined_dst32 = getelementptr inbounds { [1 x [1 x i64]], [2 x i64] }, { [1 x [1 x i64]], [2 x i64] }* %newstruct30_replacementA, i64 0, i32 0, i64 0, i64 0, !dbg !5432 store i64 %arraysize26, i64* %memcpy_refined_dst32, align 8, !dbg !5432, !tbaa !397, !alias.scope !399, !noalias !5408 %newstruct8.sroa.0.0..sroa_idx142 = getelementptr inbounds { [1 x [1 x i64]], [2 x i64] }, { [1 x [1 x i64]], [2 x i64] }* %newstruct30_replacementA, i64 0, i32 1, i64 0, !dbg !5432 store i64 1, i64* %newstruct8.sroa.0.0..sroa_idx142, align 8, !dbg !5432, !tbaa !397, !alias.scope !399, !noalias !5408 %newstruct8.sroa.5.0..sroa_idx147 = getelementptr inbounds { [1 x [1 x i64]], [2 x i64] }, { [1 x [1 x i64]], [2 x i64] }* %newstruct30_replacementA, i64 0, i32 1, i64 1, !dbg !5432 store i64 %value_phi7, i64* %newstruct8.sroa.5.0..sroa_idx147, align 8, !dbg !5432, !tbaa !397, !alias.scope !399, !noalias !5408 %arraysize_ptr33 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %109, i64 4, !dbg !5434 %111 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr33 to i64 addrspace(11)*, !dbg !5434 %arraysize34 = load i64, i64 addrspace(11)* %111, align 16, !dbg !5434, !tbaa !95, !range !131, !alias.scope !313, !noalias !314 %112 = icmp ult i64 %105, %arraysize34, !dbg !5438 %113 = or i1 %104, %112, !dbg !5443 br i1 %113, label %L503, label %L500, !dbg !5437 L500: ; preds = %L464 %114 = addrspacecast { [1 x [1 x i64]], [2 x i64] }* %newstruct30_replacementA to { [1 x [1 x i64]], [2 x i64] } addrspace(11)*, !dbg !5437 call fastcc void @julia_throw_boundserror_2928({} addrspace(10)* nofree noundef nonnull align 16 dereferenceable(40) %getfield, { [1 x [1 x i64]], [2 x i64] } addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(24) %114) #95, !dbg !5437 unreachable, !dbg !5437 L503: ; preds = %L464 %115 = mul i64 %arraysize, %value_phi7, !dbg !5444 %116 = call i64 @llvm.smax.i64(i64 %115, i64 noundef 0) #91, !dbg !5453 %.not174 = icmp slt i64 %115, 1, !dbg !5458 br i1 %.not174, label %L616, label %L552.lr.ph, !dbg !5459 L552.lr.ph: ; preds = %L503 %117 = addrspacecast {} addrspace(10)* %getfield to float addrspace(13)* addrspace(11)* %118 = addrspacecast {} addrspace(10)* %0 to float addrspace(13)* addrspace(11)* %119 = add nsw i64 %116, -1, !dbg !5460 br label %L552, !dbg !5460 L552: ; preds = %L552, %L552.lr.ph %iv9 = phi i64 [ %iv.next10, %L552 ], [ 0, %L552.lr.ph ] %iv.next10 = add nuw nsw i64 %iv9, 1, !dbg !5461 %arrayptr176 = load float addrspace(13)*, float addrspace(13)* addrspace(11)* %117, align 16, !dbg !5464, !tbaa !95, !alias.scope !5468, !noalias !314, !llvm.mem.parallel_loop_access !5469, !nonnull !90 %"arrayptr176'il_phi" = phi float addrspace(13)* , !dbg !5464 %120 = getelementptr inbounds float, float addrspace(13)* %arrayptr176, i64 %iv9, !dbg !5464 %arrayref = load float, float addrspace(13)* %120, align 4, !dbg !5464, !tbaa !177, !alias.scope !117, !noalias !120, !llvm.mem.parallel_loop_access !5469 %121 = call fastcc float @julia_gelu_2739(float %arrayref) #91, !dbg !5466, !llvm.mem.parallel_loop_access !5469 %arrayptr54177 = load float addrspace(13)*, float addrspace(13)* addrspace(11)* %118, align 16, !dbg !5471, !tbaa !95, !alias.scope !5468, !noalias !314, !llvm.mem.parallel_loop_access !5469, !nonnull !90 %"arrayptr54177'il_phi" = phi float addrspace(13)* , !dbg !5471 %122 = getelementptr inbounds float, float addrspace(13)* %arrayptr54177, i64 %iv9, !dbg !5471 store float %121, float addrspace(13)* %122, align 4, !dbg !5471, !tbaa !177, !alias.scope !117, !noalias !5228, !llvm.mem.parallel_loop_access !5469 %exitcond.not = icmp eq i64 %iv.next10, %116, !dbg !5473 br i1 %exitcond.not, label %L616.loopexit, label %L552, !dbg !5460, !llvm.loop !5470 L616.loopexit: ; preds = %L552 br label %L616 L616: ; preds = %L616.loopexit, %L503, %L387, %top call void @llvm.lifetime.end.p0i8(i64 noundef 56, i8* noundef nonnull %.sub_replacementA) #91 br label %invertL616, !dbg !5474 allocsForInversion: ; No predecessors! %"iv'ac" = alloca i64, align 8 %"iv1'ac" = alloca i64, align 8 %"iv3'ac" = alloca i64, align 8 %"iv5'ac" = alloca i64, align 8 %"iv7'ac" = alloca i64, align 8 %"iv9'ac" = alloca i64, align 8 inverttop: ; preds = %invertL6 fence syncscope("singlethread") seq_cst fence syncscope("singlethread") seq_cst ret void invertL6: ; preds = %invertL14 br label %inverttop invertL14: ; preds = %invertL24 br label %invertL6 invertL24: ; preds = %invertL37 br label %invertL14 invertL37: ; preds = %invertL40 br label %invertL24 invertL40: ; preds = %mergeinvertL40_L61, %incinvertL40 %123 = load i64, i64* %"iv'ac", align 8 %124 = icmp eq i64 %123, 0 %125 = xor i1 %124, true br i1 %124, label %invertL37, label %incinvertL40 incinvertL40: ; preds = %invertL40 %126 = load i64, i64* %"iv'ac", align 8 %127 = add nsw i64 %126, -1 store i64 %127, i64* %"iv'ac", align 8 br label %invertL40 invertL61: ; No predecessors! br label %mergeinvertL40_L61 mergeinvertL40_L61: ; preds = %invertL61 store i64 0, i64* %"iv'ac", align 8 br label %invertL40 invertL72: ; No predecessors! %128 = call i64 @llvm.smin.i64(i64 %unbox, i64 %4) #91, !dbg !5077 %_unwrap = trunc i64 %128 to i32 %_unwrap24 = add i32 %_unwrap, -1 invertL133.lr.ph: ; No predecessors! invertL133: ; No predecessors! invertL184: ; No predecessors! invertL187: ; No predecessors! invertL189: ; No predecessors! invertL301.preheader: ; No predecessors! invertL301: ; No predecessors! invertL349.loopexit: ; No predecessors! invertL349: ; No predecessors! invertL355.preheader: ; No predecessors! invertL355: ; No predecessors! invertL375.preheader: ; No predecessors! invertL375: ; No predecessors! invertL379: ; No predecessors! invertL382: ; No predecessors! invertL385.loopexit: ; No predecessors! invertL385: ; No predecessors! invertL387.loopexit: ; No predecessors! invertL387: ; No predecessors! invertL393: ; No predecessors! invertL461: ; No predecessors! invertL464: ; No predecessors! invertL500: ; No predecessors! invertL503: ; No predecessors! invertL552.lr.ph: ; No predecessors! invertL552: ; No predecessors! invertL616.loopexit: ; No predecessors! invertL616: ; preds = %L616 } %v.i_replacementA = phi i64 , !dbg !146 julia: /workspace/srcdir/Enzyme/enzyme/Enzyme/GradientUtils.cpp:3791: bool GradientUtils::legalRecompute(const llvm::Value*, const ValueToValueMapTy&, llvm::IRBuilder<>*, bool, bool) const: Assertion `phi->getNumIncomingValues() != 0' failed. [840325] signal (6.-6): Aborted in expression starting at REPL[10]:1 unknown function (ip: 0x72699a25b32c) gsignal at /usr/lib/libc.so.6 (unknown line) abort at /usr/lib/libc.so.6 (unknown line) unknown function (ip: 0x72699a1f23db) __assert_fail at /usr/lib/libc.so.6 (unknown line) legalRecompute at /workspace/srcdir/Enzyme/enzyme/Enzyme/GradientUtils.cpp:3791 lookupM at /workspace/srcdir/Enzyme/enzyme/Enzyme/GradientUtils.cpp:6535 unwrapM at /workspace/srcdir/Enzyme/enzyme/Enzyme/GradientUtils.cpp:1327 lookupM at /workspace/srcdir/Enzyme/enzyme/Enzyme/GradientUtils.cpp:6537 unwrapM at /workspace/srcdir/Enzyme/enzyme/Enzyme/GradientUtils.cpp:930 lookupM at /workspace/srcdir/Enzyme/enzyme/Enzyme/GradientUtils.cpp:6537 unwrapM at /workspace/srcdir/Enzyme/enzyme/Enzyme/GradientUtils.cpp:1066 lookupM at /workspace/srcdir/Enzyme/enzyme/Enzyme/GradientUtils.cpp:6537 unwrapM at /workspace/srcdir/Enzyme/enzyme/Enzyme/GradientUtils.cpp:1088 lookupM at /workspace/srcdir/Enzyme/enzyme/Enzyme/GradientUtils.cpp:6537 branchToCorrespondingTarget at /workspace/srcdir/Enzyme/enzyme/Enzyme/GradientUtils.cpp:7738 createInvertedTerminator at /workspace/srcdir/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:3611 CreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:4382 recursivelyHandleSubfunction at /workspace/srcdir/Enzyme/enzyme/Enzyme/AdjointGenerator.h:5744 visitCallInst at /workspace/srcdir/Enzyme/enzyme/Enzyme/AdjointGenerator.h:6611 visit at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:111 [inlined] CreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:4378 EnzymeCreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme/CApi.cpp:615 EnzymeCreatePrimalAndGradient at /home/avikpal/.julia/packages/Enzyme/wOi4l/src/api.jl:154 unknown function (ip: 0x72696410805b) _jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined] ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077 enzyme! at /home/avikpal/.julia/packages/Enzyme/wOi4l/src/compiler.jl:3147 unknown function (ip: 0x726964103918) _jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined] ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077 #codegen#487 at /home/avikpal/.julia/packages/Enzyme/wOi4l/src/compiler.jl:5022 codegen at /home/avikpal/.julia/packages/Enzyme/wOi4l/src/compiler.jl:4444 [inlined] _thunk at /home/avikpal/.julia/packages/Enzyme/wOi4l/src/compiler.jl:5707 _thunk at /home/avikpal/.julia/packages/Enzyme/wOi4l/src/compiler.jl:5707 [inlined] cached_compilation at /home/avikpal/.julia/packages/Enzyme/wOi4l/src/compiler.jl:5741 [inlined] #532 at /home/avikpal/.julia/packages/Enzyme/wOi4l/src/compiler.jl:5807 #JuliaContext#149 at /home/avikpal/.julia/packages/GPUCompiler/kqxyC/src/driver.jl:52 unknown function (ip: 0x726964d58b36) _jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined] ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077 JuliaContext at /home/avikpal/.julia/packages/GPUCompiler/kqxyC/src/driver.jl:42 #s1946#531 at /home/avikpal/.julia/packages/Enzyme/wOi4l/src/compiler.jl:5759 [inlined] #s1946#531 at ./none:0 _jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined] ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077 GeneratedFunctionStub at ./boot.jl:602 _jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined] ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077 jl_call_staged at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/method.c:540 ijl_code_for_staged at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/method.c:593 get_staged at ./compiler/utilities.jl:123 retrieve_code_info at ./compiler/utilities.jl:135 [inlined] InferenceState at ./compiler/inferencestate.jl:430 typeinf_edge at ./compiler/typeinfer.jl:920 abstract_call_method at ./compiler/abstractinterpretation.jl:629 abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:95 abstract_call_known at ./compiler/abstractinterpretation.jl:2087 abstract_call at ./compiler/abstractinterpretation.jl:2169 abstract_call at ./compiler/abstractinterpretation.jl:2162 abstract_call at ./compiler/abstractinterpretation.jl:2354 abstract_eval_call at ./compiler/abstractinterpretation.jl:2370 abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2380 abstract_eval_statement at ./compiler/abstractinterpretation.jl:2624 abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:2889 typeinf_local at ./compiler/abstractinterpretation.jl:3098 typeinf_nocycle at ./compiler/abstractinterpretation.jl:3186 _typeinf at ./compiler/typeinfer.jl:247 typeinf at ./compiler/typeinfer.jl:216 typeinf_edge at ./compiler/typeinfer.jl:930 abstract_call_method at ./compiler/abstractinterpretation.jl:629 abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:95 abstract_call_known at ./compiler/abstractinterpretation.jl:2087 abstract_call at ./compiler/abstractinterpretation.jl:2169 abstract_apply at ./compiler/abstractinterpretation.jl:1612 abstract_call_known at ./compiler/abstractinterpretation.jl:2004 abstract_call at ./compiler/abstractinterpretation.jl:2169 abstract_call at ./compiler/abstractinterpretation.jl:2162 abstract_call at ./compiler/abstractinterpretation.jl:2354 abstract_eval_call at ./compiler/abstractinterpretation.jl:2370 abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2380 abstract_eval_statement at ./compiler/abstractinterpretation.jl:2624 abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:2913 typeinf_local at ./compiler/abstractinterpretation.jl:3098 typeinf_nocycle at ./compiler/abstractinterpretation.jl:3186 _typeinf at ./compiler/typeinfer.jl:247 typeinf at ./compiler/typeinfer.jl:216 typeinf_ext at ./compiler/typeinfer.jl:1051 typeinf_ext_toplevel at ./compiler/typeinfer.jl:1082 typeinf_ext_toplevel at ./compiler/typeinfer.jl:1078 jfptr_typeinf_ext_toplevel_35682.1 at /home/avikpal/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/lib/julia/sys.so (unknown line) _jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined] ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077 jl_apply at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/julia.h:1982 [inlined] jl_type_infer at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:394 jl_generate_fptr_impl at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/jitlayers.cpp:504 jl_compile_method_internal at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2481 [inlined] jl_compile_method_internal at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2368 _jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2887 [inlined] ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077 jl_apply at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/julia.h:1982 [inlined] do_call at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:126 eval_value at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:223 eval_stmt_value at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:174 [inlined] eval_body at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:617 jl_interpret_toplevel_thunk at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:775 jl_toplevel_eval_flex at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/toplevel.c:934 jl_toplevel_eval_flex at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/toplevel.c:877 eval_body at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:579 eval_body at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:544 jl_interpret_toplevel_thunk at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/interpreter.c:775 jl_toplevel_eval_flex at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/toplevel.c:934 jl_toplevel_eval_flex at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/toplevel.c:877 jl_toplevel_eval_flex at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/toplevel.c:877 ijl_toplevel_eval_in at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/toplevel.c:985 eval at ./boot.jl:385 [inlined] eval_user_input at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/usr/share/julia/stdlib/v1.10/REPL/src/REPL.jl:150 repl_backend_loop at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/usr/share/julia/stdlib/v1.10/REPL/src/REPL.jl:246 #start_repl_backend#46 at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/usr/share/julia/stdlib/v1.10/REPL/src/REPL.jl:231 start_repl_backend at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/usr/share/julia/stdlib/v1.10/REPL/src/REPL.jl:228 _jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined] ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077 #run_repl#59 at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/usr/share/julia/stdlib/v1.10/REPL/src/REPL.jl:389 run_repl at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/usr/share/julia/stdlib/v1.10/REPL/src/REPL.jl:375 jfptr_run_repl_91734.1 at /home/avikpal/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/lib/julia/sys.so (unknown line) _jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined] ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077 #1013 at ./client.jl:432 jfptr_YY.1013_82700.1 at /home/avikpal/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/lib/julia/sys.so (unknown line) _jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined] ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077 jl_apply at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/julia.h:1982 [inlined] jl_f__call_latest at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/builtins.c:812 #invokelatest#2 at ./essentials.jl:892 [inlined] invokelatest at ./essentials.jl:889 [inlined] run_main_repl at ./client.jl:416 exec_options at ./client.jl:333 _start at ./client.jl:552 jfptr__start_82726.1 at /home/avikpal/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/lib/julia/sys.so (unknown line) _jl_invoke at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:2895 [inlined] ijl_apply_generic at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/gf.c:3077 jl_apply at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/julia.h:1982 [inlined] true_main at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/jlapi.c:582 jl_repl_entrypoint at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/src/jlapi.c:731 main at /cache/build/builder-amdci4-2/julialang/julia-release-1-dot-10/cli/loader_exe.c:58 unknown function (ip: 0x72699a1f3ccf) __libc_start_main at /usr/lib/libc.so.6 (unknown line) unknown function (ip: 0x4010b8) Allocations: 60085108 (Pool: 60011990; Big: 73118); GC: 58 [1] + 840325 IOT instruction (core dumped) julia --threads=auto --project=. ```