EnzymeAD / Enzyme.jl

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

Enzyme crashes with MeasureTheory.logdensity #126

Closed sethaxen closed 3 years ago

sethaxen commented 3 years ago

Calling autodiff on MeasureTheory.logdensity for a multivariate distribution causes Enzyme (and Julia) to crash. Here is a MWE (open details to see the huge stacktrace):

julia> using MeasureTheory, Enzyme

julia> d = Normal()^5
Normal() ^ 5

julia> x = rand(d)
5-element Vector{Float64}:
 -0.714839309237649
 -0.11854994590939029
  0.4096756581544794
 -0.8549528606231284
 -1.8390113461805115

julia> logdensity(d, x)
-2.402895298929556

julia> ∂x = zero(x);

julia> Enzyme.autodiff(logdensity, Active, Const(d), Duplicated(x, ∂x))
```julia ┌ Warning: ("primal differentiating jl_invoke call without split mode", Base.var"#mapreduce#673", MethodInstance for var"#mapreduce#673"(::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, ::typeof(mapreduce), ::Function, ::Function, ::MappedArrays.ReadonlyMappedArray{Normal{(), Tuple{}}, 1, FillArrays.Fill{Normal{(), Tuple{}}, 1, Tuple{Base.OneTo{Int64}}}, typeof(identity)}, ::Vararg{Union{Base.AbstractBroadcasted, AbstractArray}, N} where N), Any[Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}(), mapreduce, MeasureBase.logdensity, +, [Normal(), Normal(), Normal(), Normal(), Normal()], [-0.714839309237649, -0.11854994590939029, 0.4096756581544794, -0.8549528606231284, -1.8390113461805115]]) └ @ Enzyme.Compiler ~/.julia/packages/Enzyme/afnXq/src/compiler.jl:353 ┌ Warning: ("done primal differentiating jl_invoke call without split mode", Base.var"#mapreduce#673", MethodInstance for var"#mapreduce#673"(::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, ::typeof(mapreduce), ::Function, ::Function, ::MappedArrays.ReadonlyMappedArray{Normal{(), Tuple{}}, 1, FillArrays.Fill{Normal{(), Tuple{}}, 1, Tuple{Base.OneTo{Int64}}}, typeof(identity)}, ::Vararg{Union{Base.AbstractBroadcasted, AbstractArray}, N} where N), Any[Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}(), mapreduce, MeasureBase.logdensity, +, [Normal(), Normal(), Normal(), Normal(), Normal()], [-0.714839309237649, -0.11854994590939029, 0.4096756581544794, -0.8549528606231284, -1.8390113461805115]], -2.402895298929556) └ @ Enzyme.Compiler ~/.julia/packages/Enzyme/afnXq/src/compiler.jl:375 ┌ Warning: ("reverse differentiating jl_invoke call without split mode", Base.var"#mapreduce#673", MethodInstance for var"#mapreduce#673"(::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, ::typeof(mapreduce), ::Function, ::Function, ::MappedArrays.ReadonlyMappedArray{Normal{(), Tuple{}}, 1, FillArrays.Fill{Normal{(), Tuple{}}, 1, Tuple{Base.OneTo{Int64}}}, typeof(identity)}, ::Vararg{Union{Base.AbstractBroadcasted, AbstractArray}, N} where N)) └ @ Enzyme.Compiler ~/.julia/packages/Enzyme/afnXq/src/compiler.jl:404 ; ModuleID = 'text' source_filename = "text" target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128-ni:10:11:12:13" target triple = "x86_64-apple-darwin18.7.0" @exception.4 = private unnamed_addr constant [10 x i8] c"exception\00", align 1 @exception.7 = private unnamed_addr constant [13 x i8] c"bounds error\00", align 1 ; Function Attrs: noinline noreturn define internal fastcc noalias nonnull align 536870912 dereferenceable(4294967295) {} addrspace(10)* @julia_throw_overflowerr_binaryop_3602({} addrspace(10)* nonnull align 8 %0, i64 signext %1, i64 signext %2) unnamed_addr #0 !dbg !46 { top: %3 = call {}*** @julia.ptls_states() %4 = call nonnull {} addrspace(10)* bitcast ({}* (i64)* @jl_box_int64 to {} addrspace(10)* (i64)*)(i64 signext %1), !dbg !48 %5 = call nonnull {} addrspace(10)* bitcast ({}* (i64)* @jl_box_int64 to {} addrspace(10)* (i64)*)(i64 signext %2), !dbg !48 %6 = call cc37 nonnull {} addrspace(10)* bitcast ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @jl_f__call_latest to {} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*)*)({} addrspace(10)* null, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4602690880 to {}*) to {} addrspace(10)*), {} addrspace(10)* nonnull %4, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4640869200 to {}*) to {} addrspace(10)*), {} addrspace(10)* nonnull %0, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4640869200 to {}*) to {} addrspace(10)*), {} addrspace(10)* nonnull %5, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4640869232 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4594847088 to {}*) to {} addrspace(10)*)), !dbg !48 call void @llvm.trap() #10, !dbg !53 unreachable, !dbg !53 } ; Function Attrs: readnone declare {}*** @julia.ptls_states() local_unnamed_addr #1 declare nonnull {} addrspace(10)* @jl_f__call_latest({} addrspace(10)*, {} addrspace(10)**, i32) local_unnamed_addr #2 ; Function Attrs: cold noreturn nounwind declare void @llvm.trap() #3 ; Function Attrs: noinline noreturn define internal fastcc noalias nonnull align 536870912 dereferenceable(4294967295) {} addrspace(10)* @julia_throw_boundserror_3608() unnamed_addr #0 !dbg !54 { top: %0 = call {}*** @julia.ptls_states() call void @llvm.trap() #10, !dbg !55 unreachable, !dbg !55 } ; Function Attrs: allocsize(1) declare noalias nonnull {} addrspace(10)* @julia.gc_alloc_obj(i8*, i64, {} addrspace(10)*) local_unnamed_addr #4 ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.memcpy.p10i8.p11i8.i64(i8 addrspace(10)* noalias nocapture writeonly, i8 addrspace(11)* noalias nocapture readonly, i64, i1 immarg) #5 define internal fastcc nonnull align 16 dereferenceable(40) {} addrspace(10)* @julia_collect_to__3610({} addrspace(10)* nonnull readonly returned align 16 dereferenceable(40) %0, { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] } addrspace(11)* nocapture nonnull readonly align 8 dereferenceable(16) %1, { { [1 x i64], i64 }, i64 } addrspace(11)* nocapture nonnull readonly align 8 dereferenceable(24) %2) unnamed_addr !dbg !56 { top: %3 = alloca [1 x i64], align 8 %4 = call {}*** @julia.ptls_states() %.sroa.0104.0..sroa_idx = getelementptr inbounds { { [1 x i64], i64 }, i64 }, { { [1 x i64], i64 }, i64 } addrspace(11)* %2, i64 0, i32 0, i32 0, i64 0, !dbg !57 %.sroa.0104.0.copyload = load i64, i64 addrspace(11)* %.sroa.0104.0..sroa_idx, align 8, !dbg !57 %.sroa.6.0..sroa_idx107 = getelementptr inbounds { { [1 x i64], i64 }, i64 }, { { [1 x i64], i64 }, i64 } addrspace(11)* %2, i64 0, i32 0, i32 1, !dbg !57 %.sroa.6.0.copyload = load i64, i64 addrspace(11)* %.sroa.6.0..sroa_idx107, align 8, !dbg !57 %.not.not217 = icmp eq i64 %.sroa.6.0.copyload, %.sroa.0104.0.copyload, !dbg !58 br i1 %.not.not217, label %L100, label %L23.lr.ph, !dbg !77 L23.lr.ph: ; preds = %top %.sroa.8.0..sroa_idx110 = getelementptr inbounds { { [1 x i64], i64 }, i64 }, { { [1 x i64], i64 }, i64 } addrspace(11)* %2, i64 0, i32 1, !dbg !57 %.sroa.8.0.copyload = load i64, i64 addrspace(11)* %.sroa.8.0..sroa_idx110, align 8, !dbg !57 %5 = getelementptr inbounds [1 x i64], [1 x i64]* %3, i64 0, i64 0, !dbg !78 %6 = getelementptr inbounds { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] } addrspace(11)* %1, i64 0, i32 0, i64 0, i32 0, i32 0, i32 0, i64 0, i64 0, !dbg !87 %7 = load i64, i64 addrspace(11)* %6, align 8, !dbg !98, !tbaa !101, !invariant.load !4 %8 = getelementptr inbounds { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] } addrspace(11)* %1, i64 0, i32 0, i64 0, i32 1, !dbg !105 %9 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %8 unordered, align 8, !dbg !105 %10 = bitcast {} addrspace(10)* %9 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(10)*, !dbg !108 %11 = addrspacecast { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(10)* %10 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !108 %12 = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %11, i64 0, i32 1, !dbg !108 %13 = bitcast {} addrspace(10)* %9 to double addrspace(13)* addrspace(10)*, !dbg !113 %14 = addrspacecast double addrspace(13)* addrspace(10)* %13 to double addrspace(13)* addrspace(11)*, !dbg !113 %15 = bitcast {} addrspace(10)* %0 to double addrspace(13)* addrspace(10)*, !dbg !115 %16 = addrspacecast double addrspace(13)* addrspace(10)* %15 to double addrspace(13)* addrspace(11)*, !dbg !115 %17 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %16, align 16, !dbg !115 br label %L23, !dbg !77 L23: ; preds = %L23.lr.ph, %L96 %.in = phi i64 [ %.sroa.6.0.copyload, %L23.lr.ph ], [ %18, %L96 ] %value_phi219 = phi i64 [ 2, %L23.lr.ph ], [ %34, %L96 ] %.sroa.8.0218 = phi i64 [ %.sroa.8.0.copyload, %L23.lr.ph ], [ %28, %L96 ] %18 = add i64 %.in, 1, !dbg !61 %19 = icmp slt i64 %18, 1, !dbg !118 %20 = icmp sgt i64 %18, %7, !dbg !118 %21 = or i1 %19, %20, !dbg !96 br i1 %21, label %L34, label %L47, !dbg !96 L34: ; preds = %L23 store i64 %18, i64* %5, align 8, !dbg !97, !tbaa !119 %22 = call fastcc nonnull {} addrspace(10)* @julia_throw_boundserror_3608() #10, !dbg !96 unreachable, !dbg !96 L47: ; preds = %L23 %23 = add i64 %.sroa.8.0218, -1, !dbg !121 %24 = load i64, i64 addrspace(11)* %12, align 8, !dbg !124, !tbaa !125, !range !128 %.not = icmp ult i64 %23, %24, !dbg !129 br i1 %.not, label %L96, label %L47.L100_crit_edge, !dbg !110 L96: ; preds = %L47 %25 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %14, align 8, !dbg !132, !tbaa !133, !nonnull !4 %26 = getelementptr inbounds double, double addrspace(13)* %25, i64 %23, !dbg !132 %27 = load double, double addrspace(13)* %26, align 8, !dbg !132, !tbaa !135 %28 = add i64 %.sroa.8.0218, 1, !dbg !138 %29 = fneg double %27, !dbg !140 %30 = fmul double %27, %29, !dbg !140 %31 = fmul double %30, 5.000000e-01, !dbg !149 %32 = add i64 %value_phi219, -1, !dbg !153 %33 = getelementptr inbounds double, double addrspace(13)* %17, i64 %32, !dbg !153 store double %31, double addrspace(13)* %33, align 8, !dbg !153, !tbaa !135 %34 = add i64 %value_phi219, 1, !dbg !154 %.not.not = icmp eq i64 %18, %.sroa.0104.0.copyload, !dbg !58 br i1 %.not.not, label %L2.L100_crit_edge, label %L23, !dbg !77 L2.L100_crit_edge: ; preds = %L96 store i64 %.sroa.0104.0.copyload, i64* %5, align 8, !dbg !97, !tbaa !119 br label %L100, !dbg !77 L47.L100_crit_edge: ; preds = %L47 store i64 %18, i64* %5, align 8, !dbg !97, !tbaa !119 br label %L100, !dbg !110 L100: ; preds = %L47.L100_crit_edge, %L2.L100_crit_edge, %top ret {} addrspace(10)* %0, !dbg !156 } ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #5 ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #5 ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #5 ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.memcpy.p0i8.p11i8.i64(i8* noalias nocapture writeonly, i8 addrspace(11)* noalias nocapture readonly, i64, i1 immarg) #5 define internal fastcc nonnull {} addrspace(10)* @julia_collect_3604({ [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] } addrspace(11)* nocapture nonnull readonly align 8 dereferenceable(16) %0) unnamed_addr !dbg !157 { top: %1 = alloca { { [1 x i64], i64 }, i64 }, align 8 %2 = call {}*** @julia.ptls_states() %3 = load i64*, i64* addrspace(11)* bitcast ({}* addrspace(11)* getelementptr inbounds ({}*, {}* addrspace(11)* addrspacecast ({}** inttoptr (i64 5607029968 to {}**) to {}* addrspace(11)*), i64 3) to i64* addrspace(11)*), align 8, !dbg !158, !tbaa !101, !invariant.load !4 %4 = load i64, i64* %3, align 8, !dbg !158, !tbaa !101, !invariant.load !4 %.not = icmp eq i64 %4, 0, !dbg !158 br i1 %.not, label %fail, label %pass, !dbg !158 L8: ; preds = %pass call void @llvm.trap() #10, !dbg !158 unreachable, !dbg !158 L11: ; preds = %pass %5 = icmp ugt i64 %4, 1, !dbg !158 br i1 %5, label %pass2, label %fail1, !dbg !158 L18: ; preds = %pass2 call void @llvm.trap() #10, !dbg !158 unreachable, !dbg !158 L26: ; preds = %pass2 %6 = getelementptr inbounds { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] } addrspace(11)* %0, i64 0, i32 0, i64 0, i32 0, i32 0, i32 0, i64 0, i64 0, !dbg !168 %7 = load i64, i64 addrspace(11)* %6, align 8, !dbg !188, !tbaa !101, !invariant.load !4 %8 = icmp sgt i64 %7, 0, !dbg !188 %9 = getelementptr inbounds { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] } addrspace(11)* %0, i64 0, i32 0, i64 0, i32 1, !dbg !193 br i1 %8, label %L67, label %L26.L94_crit_edge, !dbg !194 L26.L94_crit_edge: ; preds = %L26 %.phi.trans.insert108 = bitcast {} addrspace(10)* addrspace(11)* %9 to {} addrspace(10)* addrspace(10)* addrspace(11)*, !dbg !193 %.pre = load atomic {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)* addrspace(11)* %.phi.trans.insert108 unordered, align 8, !dbg !193, !tbaa !101, !invariant.load !4 br label %L94, !dbg !194 L67: ; preds = %L26 %10 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %9 unordered, align 8, !dbg !195, !tbaa !101, !invariant.load !4, !nonnull !4, !dereferenceable !198, !align !199 %11 = bitcast {} addrspace(10)* %10 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(10)*, !dbg !200 %12 = addrspacecast { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(10)* %11 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !200 %13 = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %12, i64 0, i32 1, !dbg !200 %14 = load i64, i64 addrspace(11)* %13, align 8, !dbg !200, !tbaa !125, !range !128 %.not99 = icmp eq i64 %14, 0, !dbg !206 %15 = bitcast {} addrspace(10)* %10 to {} addrspace(10)* addrspace(10)*, !dbg !202 br i1 %.not99, label %L94, label %L77, !dbg !202 L77: ; preds = %L67 %16 = bitcast {} addrspace(10)* %10 to double addrspace(13)* addrspace(10)*, !dbg !208 %17 = addrspacecast double addrspace(13)* addrspace(10)* %16 to double addrspace(13)* addrspace(11)*, !dbg !208 %18 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %17, align 16, !dbg !208, !tbaa !133, !nonnull !4 %19 = load double, double addrspace(13)* %18, align 8, !dbg !208, !tbaa !135 br label %L94, !dbg !174 L94: ; preds = %L26.L94_crit_edge, %L67, %L77 %20 = phi {} addrspace(10)* addrspace(10)* [ %.pre, %L26.L94_crit_edge ], [ %15, %L77 ], [ %15, %L67 ], !dbg !193 %value_phi6 = phi i1 [ false, %L26.L94_crit_edge ], [ true, %L77 ], [ false, %L67 ] %value_phi7 = phi double [ undef, %L26.L94_crit_edge ], [ %19, %L77 ], [ undef, %L67 ] %.sroa.049.sroa.0.0..sroa.049.0..sroa_cast.sroa_idx = getelementptr inbounds { { [1 x i64], i64 }, i64 }, { { [1 x i64], i64 }, i64 }* %1, i64 0, i32 0, i32 0, i64 0, !dbg !187 store i64 %7, i64* %.sroa.049.sroa.0.0..sroa.049.0..sroa_cast.sroa_idx, align 8, !dbg !187 %.sroa.049.sroa.5.0..sroa.049.0..sroa_cast.sroa_idx92 = getelementptr inbounds { { [1 x i64], i64 }, i64 }, { { [1 x i64], i64 }, i64 }* %1, i64 0, i32 0, i32 1, !dbg !187 store i64 1, i64* %.sroa.049.sroa.5.0..sroa.049.0..sroa_cast.sroa_idx92, align 8, !dbg !187 %.sroa.554.0..sroa_idx55 = getelementptr inbounds { { [1 x i64], i64 }, i64 }, { { [1 x i64], i64 }, i64 }* %1, i64 0, i32 1, !dbg !187 store i64 2, i64* %.sroa.554.0..sroa_idx55, align 8, !dbg !187 %21 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %20, i64 3, !dbg !193 %22 = bitcast {} addrspace(10)* addrspace(10)* %21 to i64 addrspace(10)*, !dbg !193 %23 = addrspacecast i64 addrspace(10)* %22 to i64 addrspace(11)*, !dbg !193 %24 = load i64, i64 addrspace(11)* %23, align 8, !dbg !193, !tbaa !210, !range !128 %.not97 = icmp slt i64 %24, %7, !dbg !193 %25 = select i1 %.not97, i64 %24, i64 %7, !dbg !193 %26 = icmp sgt i64 %25, 0, !dbg !193 %27 = select i1 %26, i64 %25, i64 0, !dbg !193 %28 = call nonnull {} addrspace(10)* @jl_alloc_array_1d({} addrspace(10)* addrspacecast ({}* inttoptr (i64 4598053344 to {}*) to {} addrspace(10)*), i64 %27), !dbg !193 br i1 %value_phi6, label %L133, label %L116, !dbg !212 L116: ; preds = %L94 ret {} addrspace(10)* %28, !dbg !213 L133: ; preds = %L94 %29 = bitcast {} addrspace(10)* %28 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(10)*, !dbg !214 %30 = addrspacecast { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(10)* %29 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !214 %31 = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %30, i64 0, i32 1, !dbg !214 %32 = load i64, i64 addrspace(11)* %31, align 8, !dbg !214, !tbaa !125, !range !128 %.not98 = icmp eq i64 %32, 0, !dbg !214 br i1 %.not98, label %oob, label %idxend, !dbg !214 fail: ; preds = %top call void @llvm.trap() #10, !dbg !158 unreachable, !dbg !158 pass: ; preds = %top %33 = getelementptr inbounds i64, i64* %3, i64 1, !dbg !158 %34 = bitcast i64* %33 to {} addrspace(10)**, !dbg !158 %35 = addrspacecast {} addrspace(10)** %34 to {} addrspace(10)* addrspace(11)*, !dbg !158 %36 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %35, align 8, !dbg !158, !tbaa !101, !invariant.load !4 %.not95 = icmp eq {} addrspace(10)* %36, addrspacecast ({}* inttoptr (i64 4598053344 to {}*) to {} addrspace(10)*), !dbg !158 %.not101 = icmp eq {} addrspace(10)* %36, addrspacecast ({}* inttoptr (i64 6410786256 to {}*) to {} addrspace(10)*) %or.cond = or i1 %.not95, %.not101, !dbg !158 br i1 %or.cond, label %L11, label %L8, !dbg !158 fail1: ; preds = %L11 call void @llvm.trap() #10, !dbg !158 unreachable, !dbg !158 pass2: ; preds = %L11 %37 = getelementptr inbounds i64, i64* %3, i64 2, !dbg !158 %38 = bitcast i64* %37 to {} addrspace(10)**, !dbg !158 %39 = addrspacecast {} addrspace(10)** %38 to {} addrspace(10)* addrspace(11)*, !dbg !158 %40 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %39, align 8, !dbg !158, !tbaa !101, !invariant.load !4 %.not96 = icmp eq {} addrspace(10)* %40, addrspacecast ({}* inttoptr (i64 4598053344 to {}*) to {} addrspace(10)*), !dbg !158 %.not100 = icmp eq {} addrspace(10)* %40, addrspacecast ({}* inttoptr (i64 6410786256 to {}*) to {} addrspace(10)*) %or.cond102 = or i1 %.not96, %.not100, !dbg !158 br i1 %or.cond102, label %L26, label %L18, !dbg !158 oob: ; preds = %L133 call void @llvm.trap() #10, !dbg !214 unreachable, !dbg !214 idxend: ; preds = %L133 %41 = fneg double %value_phi7, !dbg !219 %42 = fmul double %value_phi7, %41, !dbg !219 %43 = fmul double %42, 5.000000e-01, !dbg !219 %44 = bitcast {} addrspace(10)* %28 to double addrspace(13)* addrspace(10)*, !dbg !214 %45 = addrspacecast double addrspace(13)* addrspace(10)* %44 to double addrspace(13)* addrspace(11)*, !dbg !214 %46 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %45, align 8, !dbg !214, !tbaa !133, !nonnull !4 store double %43, double addrspace(13)* %46, align 8, !dbg !214, !tbaa !135 %47 = addrspacecast { { [1 x i64], i64 }, i64 }* %1 to { { [1 x i64], i64 }, i64 } addrspace(11)*, !dbg !220 %48 = call fastcc nonnull {} addrspace(10)* @julia_collect_to__3610({} addrspace(10)* nonnull readonly align 16 dereferenceable(40) %28, { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] } addrspace(11)* nocapture nonnull readonly align 8 dereferenceable(16) %0, { { [1 x i64], i64 }, i64 } addrspace(11)* nocapture nonnull readonly align 8 dereferenceable(24) %47), !dbg !220 ret {} addrspace(10)* %48, !dbg !218 } ; Function Attrs: noinline define internal fastcc double @julia_mapreduce_impl_3595({} addrspace(10)* nocapture nonnull readonly align 16 dereferenceable(40) %0, i64 signext %1, i64 signext %2) unnamed_addr #6 !dbg !221 { top: %3 = call {}*** @julia.ptls_states() %.not = icmp eq i64 %1, %2, !dbg !222 br i1 %.not, label %L3, label %L5, !dbg !224 L3: ; preds = %top %4 = add i64 %1, -1, !dbg !225 %5 = bitcast {} addrspace(10)* %0 to double addrspace(13)* addrspace(10)*, !dbg !225 %6 = addrspacecast double addrspace(13)* addrspace(10)* %5 to double addrspace(13)* addrspace(11)*, !dbg !225 %7 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %6, align 16, !dbg !225, !tbaa !133, !nonnull !4 %8 = getelementptr inbounds double, double addrspace(13)* %7, i64 %4, !dbg !225 %9 = load double, double addrspace(13)* %8, align 8, !dbg !225, !tbaa !135 ret double %9, !dbg !228 L5: ; preds = %top %10 = add i64 1024, %1, !dbg !229 %.not19 = icmp sgt i64 %10, %2, !dbg !232 br i1 %.not19, label %L8, label %L68, !dbg !231 L8: ; preds = %L5 %11 = add i64 %1, -1, !dbg !236 %12 = bitcast {} addrspace(10)* %0 to double addrspace(13)* addrspace(10)*, !dbg !236 %13 = addrspacecast double addrspace(13)* addrspace(10)* %12 to double addrspace(13)* addrspace(11)*, !dbg !236 %14 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %13, align 16, !dbg !236, !tbaa !133, !nonnull !4 %15 = getelementptr inbounds double, double addrspace(13)* %14, i64 %11, !dbg !236 %16 = load double, double addrspace(13)* %15, align 8, !dbg !236, !tbaa !135 %17 = getelementptr inbounds double, double addrspace(13)* %14, i64 %1, !dbg !238 %18 = load double, double addrspace(13)* %17, align 8, !dbg !238, !tbaa !135 %19 = fadd double %16, %18, !dbg !240 %20 = add i64 %1, 2, !dbg !243 %.not20 = icmp sgt i64 %20, %2, !dbg !248 %21 = add i64 %1, 1, !dbg !258 %22 = select i1 %.not20, i64 %21, i64 %2, !dbg !252 %23 = call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 %22, i64 %20), !dbg !260 %24 = extractvalue { i64, i1 } %23, 0, !dbg !260 %25 = extractvalue { i64, i1 } %23, 1, !dbg !260 br i1 %25, label %L22, label %L25, !dbg !269 L22: ; preds = %L8 %26 = call fastcc nonnull {} addrspace(10)* @julia_throw_overflowerr_binaryop_3602({} addrspace(10)* nonnull align 8 addrspacecast ({}* inttoptr (i64 4735650344 to {}*) to {} addrspace(10)*), i64 signext %22, i64 signext %20) #10, !dbg !269 unreachable, !dbg !269 L25: ; preds = %L8 %27 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %24, i64 1), !dbg !270 %28 = extractvalue { i64, i1 } %27, 0, !dbg !270 %29 = extractvalue { i64, i1 } %27, 1, !dbg !270 br i1 %29, label %L29, label %L34, !dbg !274 L29: ; preds = %L25 %30 = call fastcc nonnull {} addrspace(10)* @julia_throw_overflowerr_binaryop_3602({} addrspace(10)* nonnull align 16 addrspacecast ({}* inttoptr (i64 4735454672 to {}*) to {} addrspace(10)*), i64 signext %24, i64 signext 1) #10, !dbg !274 unreachable, !dbg !274 L34: ; preds = %L25 %31 = icmp slt i64 %28, 1, !dbg !275 br i1 %31, label %L66, label %L41, !dbg !276 L41: ; preds = %L34, %L41 %value_phi224 = phi i64 [ %36, %L41 ], [ 0, %L34 ] %value_phi23 = phi double [ %35, %L41 ], [ %19, %L34 ] %32 = add i64 %21, %value_phi224, !dbg !277 %33 = getelementptr inbounds double, double addrspace(13)* %14, i64 %32, !dbg !277 %34 = load double, double addrspace(13)* %33, align 8, !dbg !277, !tbaa !135 %35 = fadd fast double %value_phi23, %34, !dbg !281 %36 = add nuw nsw i64 %value_phi224, 1, !dbg !283 %exitcond.not = icmp eq i64 %36, %28, !dbg !285 br i1 %exitcond.not, label %L66, label %L41, !dbg !286, !llvm.loop !287 L66: ; preds = %L41, %L34 %value_phi5 = phi double [ %19, %L34 ], [ %35, %L41 ] ret double %value_phi5, !dbg !288 L68: ; preds = %L5 %37 = add i64 %2, %1, !dbg !289 %38 = ashr i64 %37, 1, !dbg !291 %39 = call fastcc double @julia_mapreduce_impl_3595({} addrspace(10)* nocapture nonnull readonly align 16 dereferenceable(40) %0, i64 signext %1, i64 signext %38) #6, !dbg !294 %40 = add nsw i64 %38, 1, !dbg !295 %41 = call fastcc double @julia_mapreduce_impl_3595({} addrspace(10)* nocapture nonnull readonly align 16 dereferenceable(40) %0, i64 signext %40, i64 signext %2) #6, !dbg !296 %42 = fadd double %39, %41, !dbg !297 ret double %42, !dbg !298 } ; Function Attrs: nounwind readnone speculatable willreturn declare { i64, i1 } @llvm.ssub.with.overflow.i64(i64, i64) #7 ; Function Attrs: nounwind readnone speculatable willreturn declare { i64, i1 } @llvm.sadd.with.overflow.i64(i64, i64) #7 ; Function Attrs: inaccessiblememonly define internal noalias nonnull align 8 dereferenceable(8) {}* @jl_box_int64(i64 signext %0) unnamed_addr #8 !dbg !299 { top: %1 = call dereferenceable_or_null(16) i8* @malloc(i64 16), !dbg !300 %2 = load i64, i64* bitcast ({}* ()* @jl_int64_type to i64*), align 4, !dbg !307 %3 = or i64 %2, 3, !dbg !314 %4 = bitcast i8* %1 to i64*, !dbg !313 store i64 %3, i64* %4, align 8, !dbg !313, !tbaa !317 %5 = getelementptr i8, i8* %1, i64 8, !dbg !318 %6 = bitcast i8* %5 to i64*, !dbg !322 store i64 %0, i64* %6, align 8, !dbg !322, !tbaa !317 %7 = bitcast i8* %5 to {}*, !dbg !323 ret {}* %7, !dbg !306 } declare {}* @jl_int64_type() local_unnamed_addr declare i8* @malloc(i64) local_unnamed_addr declare {} addrspace(10)* @jl_alloc_array_1d({} addrspace(10)*, i64) local_unnamed_addr define double @julia__mapreduce_673_3591({ { [1 x [1 x i64]] } } %0, {} addrspace(10)* nonnull align 16 dereferenceable(40) %1) local_unnamed_addr !dbg !326 { entry: %2 = alloca { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, align 8 %.fca.0.0.0.0.extract = extractvalue { { [1 x [1 x i64]] } } %0, 0, 0, 0, 0 %3 = bitcast { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull align 8 dereferenceable(16) %3) %4 = call {}*** @julia.ptls_states() #11 %.fca.0.0.0.0.0.0.0.gep = getelementptr inbounds { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2, i64 0, i32 0, i64 0, i32 0, i32 0, i32 0, i64 0, i64 0, !dbg !327 store i64 %.fca.0.0.0.0.extract, i64* %.fca.0.0.0.0.0.0.0.gep, align 8, !dbg !327 %.fca.0.0.1.gep = getelementptr inbounds { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2, i64 0, i32 0, i64 0, i32 1, !dbg !327 store {} addrspace(10)* %1, {} addrspace(10)** %.fca.0.0.1.gep, align 8, !dbg !327 %5 = addrspacecast { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2 to { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] } addrspace(11)*, !dbg !327 %6 = call fastcc nonnull {} addrspace(10)* @julia_collect_3604({ [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] } addrspace(11)* nocapture nonnull readonly align 8 dereferenceable(16) %5), !dbg !327 %7 = bitcast {} addrspace(10)* %6 to {} addrspace(10)* addrspace(10)*, !dbg !330 %8 = addrspacecast {} addrspace(10)* addrspace(10)* %7 to {} addrspace(10)* addrspace(11)*, !dbg !330 %9 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %8, i64 3, !dbg !330 %10 = bitcast {} addrspace(10)* addrspace(11)* %9 to i64 addrspace(11)*, !dbg !330 %11 = load i64, i64 addrspace(11)* %10, align 8, !dbg !330, !tbaa !210, !range !128 switch i64 %11, label %L19.i [ i64 0, label %julia__mapreduce_673_3591.inner.exit i64 1, label %L17.i ], !dbg !349 L17.i: ; preds = %entry %12 = bitcast {} addrspace(10)* %6 to double addrspace(13)* addrspace(10)*, !dbg !350 %13 = addrspacecast double addrspace(13)* addrspace(10)* %12 to double addrspace(13)* addrspace(11)*, !dbg !350 %14 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %13, align 8, !dbg !350, !tbaa !133, !nonnull !4 %15 = load double, double addrspace(13)* %14, align 8, !dbg !350, !tbaa !135 br label %julia__mapreduce_673_3591.inner.exit, !dbg !353 L19.i: ; preds = %entry %16 = icmp ugt i64 %11, 15, !dbg !354 br i1 %16, label %L35.i, label %L21.i, !dbg !356 L21.i: ; preds = %L19.i %17 = bitcast {} addrspace(10)* %6 to double addrspace(13)* addrspace(10)*, !dbg !357 %18 = addrspacecast double addrspace(13)* addrspace(10)* %17 to double addrspace(13)* addrspace(11)*, !dbg !357 %19 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %18, align 8, !dbg !357, !tbaa !133, !nonnull !4 %20 = load double, double addrspace(13)* %19, align 8, !dbg !357, !tbaa !135 %21 = getelementptr inbounds double, double addrspace(13)* %19, i64 1, !dbg !359 %22 = load double, double addrspace(13)* %21, align 8, !dbg !359, !tbaa !135 %23 = fadd double %20, %22, !dbg !361 %.not67 = icmp ugt i64 %11, 2, !dbg !364 br i1 %.not67, label %L30.i, label %julia__mapreduce_673_3591.inner.exit, !dbg !365 L30.i: ; preds = %L21.i, %L30.i %value_phi2.i9 = phi i64 [ %24, %L30.i ], [ 2, %L21.i ] %value_phi1.i8 = phi double [ %27, %L30.i ], [ %23, %L21.i ] %24 = add nuw nsw i64 %value_phi2.i9, 1, !dbg !366 %25 = getelementptr inbounds double, double addrspace(13)* %19, i64 %value_phi2.i9, !dbg !369 %26 = load double, double addrspace(13)* %25, align 8, !dbg !369, !tbaa !135 %27 = fadd double %value_phi1.i8, %26, !dbg !370 %exitcond.not = icmp eq i64 %24, %11, !dbg !364 br i1 %exitcond.not, label %julia__mapreduce_673_3591.inner.exit, label %L30.i, !dbg !365 L35.i: ; preds = %L19.i %28 = call fastcc double @julia_mapreduce_impl_3595({} addrspace(10)* nocapture nonnull readonly align 16 dereferenceable(40) %6, i64 signext 1, i64 signext %11), !dbg !372 br label %julia__mapreduce_673_3591.inner.exit, !dbg !374 julia__mapreduce_673_3591.inner.exit: ; preds = %L30.i, %L21.i, %entry, %L17.i, %L35.i %value_phi.i = phi double [ %15, %L17.i ], [ %28, %L35.i ], [ 0.000000e+00, %entry ], [ %23, %L21.i ], [ %27, %L30.i ] call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %3), !dbg !329 ret double %value_phi.i } ; Function Attrs: nounwind willreturn declare void @llvm.assume(i1) #9 define double @preprocess_julia__mapreduce_673_3591({ { [1 x [1 x i64]] } } %0, {} addrspace(10)* nonnull align 16 dereferenceable(40) %1) local_unnamed_addr !dbg !375 { entry: %2 = alloca { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, align 8 %.fca.0.0.0.0.extract = extractvalue { { [1 x [1 x i64]] } } %0, 0, 0, 0, 0 %3 = bitcast { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull align 8 dereferenceable(16) %3) %4 = call {}*** @julia.ptls_states() #11 %.fca.0.0.0.0.0.0.0.gep = getelementptr inbounds { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2, i64 0, i32 0, i64 0, i32 0, i32 0, i32 0, i64 0, i64 0, !dbg !376 store i64 %.fca.0.0.0.0.extract, i64* %.fca.0.0.0.0.0.0.0.gep, align 8, !dbg !376 %.fca.0.0.1.gep = getelementptr inbounds { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2, i64 0, i32 0, i64 0, i32 1, !dbg !376 store {} addrspace(10)* %1, {} addrspace(10)** %.fca.0.0.1.gep, align 8, !dbg !376 %5 = addrspacecast { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2 to { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] } addrspace(11)*, !dbg !376 %6 = call fastcc nonnull {} addrspace(10)* @julia_collect_3604({ [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] } addrspace(11)* nocapture nonnull readonly align 8 dereferenceable(16) %5), !dbg !376 %7 = bitcast {} addrspace(10)* %6 to {} addrspace(10)* addrspace(10)*, !dbg !378 %8 = addrspacecast {} addrspace(10)* addrspace(10)* %7 to {} addrspace(10)* addrspace(11)*, !dbg !378 %9 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %8, i64 3, !dbg !378 %10 = bitcast {} addrspace(10)* addrspace(11)* %9 to i64 addrspace(11)*, !dbg !378 %11 = load i64, i64 addrspace(11)* %10, align 8, !dbg !378, !tbaa !210, !range !128 switch i64 %11, label %L19.i [ i64 0, label %julia__mapreduce_673_3591.inner.exit i64 1, label %L17.i ], !dbg !387 L17.i: ; preds = %entry %12 = bitcast {} addrspace(10)* %6 to double addrspace(13)* addrspace(10)*, !dbg !388 %13 = addrspacecast double addrspace(13)* addrspace(10)* %12 to double addrspace(13)* addrspace(11)*, !dbg !388 %14 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %13, align 8, !dbg !388, !tbaa !133, !nonnull !4 %15 = load double, double addrspace(13)* %14, align 8, !dbg !388, !tbaa !135 br label %julia__mapreduce_673_3591.inner.exit, !dbg !390 L19.i: ; preds = %entry %16 = icmp ugt i64 %11, 15, !dbg !391 br i1 %16, label %L35.i, label %L21.i, !dbg !392 L21.i: ; preds = %L19.i %17 = bitcast {} addrspace(10)* %6 to double addrspace(13)* addrspace(10)*, !dbg !393 %18 = addrspacecast double addrspace(13)* addrspace(10)* %17 to double addrspace(13)* addrspace(11)*, !dbg !393 %19 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %18, align 8, !dbg !393, !tbaa !133, !nonnull !4 %20 = load double, double addrspace(13)* %19, align 8, !dbg !393, !tbaa !135 %21 = getelementptr inbounds double, double addrspace(13)* %19, i64 1, !dbg !395 %22 = load double, double addrspace(13)* %21, align 8, !dbg !395, !tbaa !135 %23 = fadd double %20, %22, !dbg !397 %.not67 = icmp ugt i64 %11, 2, !dbg !399 br i1 %.not67, label %L30.i.preheader, label %julia__mapreduce_673_3591.inner.exit, !dbg !400 L30.i.preheader: ; preds = %L21.i br label %L30.i, !dbg !400 L30.i: ; preds = %L30.i.preheader, %L30.i %tiv = phi i64 [ 0, %L30.i.preheader ], [ %tiv.next, %L30.i ] %value_phi1.i8 = phi double [ %28, %L30.i ], [ %23, %L30.i.preheader ] %24 = add i64 %tiv, 2, !dbg !401 %tiv.next = add nuw nsw i64 %tiv, 1, !dbg !401 %25 = add nuw nsw i64 %24, 1, !dbg !401 %26 = getelementptr inbounds double, double addrspace(13)* %19, i64 %24, !dbg !403 %27 = load double, double addrspace(13)* %26, align 8, !dbg !403, !tbaa !135 %28 = fadd double %value_phi1.i8, %27, !dbg !404 %exitcond.not = icmp eq i64 %25, %11, !dbg !399 br i1 %exitcond.not, label %julia__mapreduce_673_3591.inner.exit.loopexit, label %L30.i, !dbg !400 L35.i: ; preds = %L19.i %29 = call fastcc double @julia_mapreduce_impl_3595({} addrspace(10)* nocapture nonnull readonly align 16 dereferenceable(40) %6, i64 signext 1, i64 signext %11), !dbg !406 br label %julia__mapreduce_673_3591.inner.exit, !dbg !407 julia__mapreduce_673_3591.inner.exit.loopexit: ; preds = %L30.i br label %julia__mapreduce_673_3591.inner.exit, !dbg !377 julia__mapreduce_673_3591.inner.exit: ; preds = %julia__mapreduce_673_3591.inner.exit.loopexit, %L35.i, %L21.i, %L17.i, %entry %value_phi.i = phi double [ %15, %L17.i ], [ %29, %L35.i ], [ 0.000000e+00, %entry ], [ %23, %L21.i ], [ %28, %julia__mapreduce_673_3591.inner.exit.loopexit ] call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %3), !dbg !377 ret double %value_phi.i } define internal void @diffejulia__mapreduce_673_3591({ { [1 x [1 x i64]] } } %0, { { [1 x [1 x i64]] } } %"'", {} addrspace(10)* nonnull align 16 dereferenceable(40) %1, {} addrspace(10)* %"'1") local_unnamed_addr !dbg !408 { entry: %2 = alloca { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, align 8 %.fca.0.0.0.0.extract = extractvalue { { [1 x [1 x i64]] } } %0, 0, 0, 0, 0 %3 = bitcast { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull align 8 dereferenceable(16) %3) %4 = call {}*** @julia.ptls_states() #11 %.fca.0.0.0.0.0.0.0.gep = getelementptr inbounds { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2, i64 0, i32 0, i64 0, i32 0, i32 0, i32 0, i64 0, i64 0, !dbg !409 store i64 %.fca.0.0.0.0.extract, i64* %.fca.0.0.0.0.0.0.0.gep, align 8, !dbg !409 %.fca.0.0.1.gep = getelementptr inbounds { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2, i64 0, i32 0, i64 0, i32 1, !dbg !409 store {} addrspace(10)* %1, {} addrspace(10)** %.fca.0.0.1.gep, align 8, !dbg !409 %5 = addrspacecast { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2 to { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] } addrspace(11)*, !dbg !409 %6 = call fastcc nonnull {} addrspace(10)* @julia_collect_3604({ [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] } addrspace(11)* nocapture nonnull readonly align 8 dereferenceable(16) %5), !dbg !409 %7 = bitcast {} addrspace(10)* %6 to {} addrspace(10)* addrspace(10)*, !dbg !411 %8 = addrspacecast {} addrspace(10)* addrspace(10)* %7 to {} addrspace(10)* addrspace(11)*, !dbg !411 %9 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %8, i64 3, !dbg !411 %10 = bitcast {} addrspace(10)* addrspace(11)* %9 to i64 addrspace(11)*, !dbg !411 %11 = load i64, i64 addrspace(11)* %10, align 8, !dbg !411, !tbaa !210, !range !128 switch i64 %11, label %L19.i [ i64 0, label %julia__mapreduce_673_3591.inner.exit i64 1, label %L17.i ], !dbg !420 L17.i: ; preds = %entry %12 = bitcast {} addrspace(10)* %6 to double addrspace(13)* addrspace(10)*, !dbg !421 %13 = addrspacecast double addrspace(13)* addrspace(10)* %12 to double addrspace(13)* addrspace(11)*, !dbg !421 %14 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %13, align 8, !dbg !421, !tbaa !133, !nonnull !4 %15 = load double, double addrspace(13)* %14, align 8, !dbg !421, !tbaa !135 br label %julia__mapreduce_673_3591.inner.exit, !dbg !423 L19.i: ; preds = %entry %16 = icmp ugt i64 %11, 15, !dbg !424 br i1 %16, label %L35.i, label %L21.i, !dbg !425 L21.i: ; preds = %L19.i %17 = bitcast {} addrspace(10)* %6 to double addrspace(13)* addrspace(10)*, !dbg !426 %18 = addrspacecast double addrspace(13)* addrspace(10)* %17 to double addrspace(13)* addrspace(11)*, !dbg !426 %19 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %18, align 8, !dbg !426, !tbaa !133, !nonnull !4 %20 = load double, double addrspace(13)* %19, align 8, !dbg !426, !tbaa !135 %21 = getelementptr inbounds double, double addrspace(13)* %19, i64 1, !dbg !428 %22 = load double, double addrspace(13)* %21, align 8, !dbg !428, !tbaa !135 %23 = fadd double %20, %22, !dbg !430 %.not67 = icmp ugt i64 %11, 2, !dbg !432 br i1 %.not67, label %L30.i.preheader, label %julia__mapreduce_673_3591.inner.exit, !dbg !433 L30.i.preheader: ; preds = %L21.i br label %L30.i, !dbg !433 L30.i: ; preds = %L30.i, %L30.i.preheader %tiv = phi i64 [ 0, %L30.i.preheader ], [ %tiv.next, %L30.i ] %value_phi1.i8 = phi double [ %28, %L30.i ], [ %23, %L30.i.preheader ] %24 = add i64 %tiv, 2, !dbg !434 %tiv.next = add nuw nsw i64 %tiv, 1, !dbg !434 %25 = add nuw nsw i64 %24, 1, !dbg !434 %26 = getelementptr inbounds double, double addrspace(13)* %19, i64 %24, !dbg !436 %27 = load double, double addrspace(13)* %26, align 8, !dbg !436, !tbaa !135 %28 = fadd double %value_phi1.i8, %27, !dbg !437 %exitcond.not = icmp eq i64 %25, %11, !dbg !432 br i1 %exitcond.not, label %julia__mapreduce_673_3591.inner.exit.loopexit, label %L30.i, !dbg !433 L35.i: ; preds = %L19.i %29 = call fastcc double @julia_mapreduce_impl_3595({} addrspace(10)* nocapture nonnull readonly align 16 dereferenceable(40) %6, i64 signext 1, i64 signext %11), !dbg !439 br label %julia__mapreduce_673_3591.inner.exit, !dbg !440 julia__mapreduce_673_3591.inner.exit.loopexit: ; preds = %L30.i br label %julia__mapreduce_673_3591.inner.exit, !dbg !410 julia__mapreduce_673_3591.inner.exit: ; preds = %julia__mapreduce_673_3591.inner.exit.loopexit, %L35.i, %L21.i, %L17.i, %entry %value_phi.i = phi double [ %15, %L17.i ], [ %29, %L35.i ], [ 0.000000e+00, %entry ], [ %23, %L21.i ], [ %28, %julia__mapreduce_673_3591.inner.exit.loopexit ] call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %3), !dbg !410 ret double %value_phi.i allocsForInversion: ; No predecessors! invertentry: ; No predecessors! invertL17.i: ; No predecessors! invertL19.i: ; No predecessors! invertL21.i: ; No predecessors! invertL30.i.preheader: ; No predecessors! invertL30.i: ; No predecessors! invertL35.i: ; No predecessors! invertjulia__mapreduce_673_3591.inner.exit.loopexit: ; No predecessors! invertjulia__mapreduce_673_3591.inner.exit: ; No predecessors! } attributes #0 = { noinline noreturn } attributes #1 = { readnone "enzyme_inactive" } attributes #2 = { "thunk" } attributes #3 = { cold noreturn nounwind } attributes #4 = { allocsize(1) } attributes #5 = { argmemonly nounwind willreturn } attributes #6 = { noinline } attributes #7 = { nounwind readnone speculatable willreturn } attributes #8 = { inaccessiblememonly "enzyme_inactive" } attributes #9 = { nounwind willreturn } attributes #10 = { noreturn } attributes #11 = { readnone } !llvm.module.flags = !{!0, !1} !llvm.dbg.cu = !{!2, !5, !7, !9, !10, !11, !13, !15, !17, !18, !19, !21, !22, !23, !24, !25, !26, !27, !28, !29, !30, !31, !32, !33, !34, !35, !36, !37, !38, !39, !40, !41, !42, !43, !44, !45} !0 = !{i32 2, !"Dwarf Version", i32 4} !1 = !{i32 2, !"Debug Info Version", i32 3} !2 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !3, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !3 = !DIFile(filename: "checked.jl", directory: ".") !4 = !{} !5 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !6, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !6 = !DIFile(filename: "abstractarray.jl", directory: ".") !7 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !8 = !DIFile(filename: "array.jl", directory: ".") !9 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !8, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !10 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !6, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !11 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !12, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !12 = !DIFile(filename: "reduce.jl", directory: ".") !13 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !14, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !14 = !DIFile(filename: "reducedim.jl", directory: ".") !15 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !16 = !DIFile(filename: "/Users/sethaxen/.julia/packages/GPUCompiler/fG3xK/src/runtime.jl", directory: ".") !17 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !18 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !19 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !20, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !20 = !DIFile(filename: "/Users/sethaxen/.julia/packages/Enzyme/afnXq/src/compiler.jl", directory: ".") !21 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !22 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !23 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !20, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !24 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !25 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !26 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !20, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !27 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !28 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !20, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !29 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !30 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !31 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !32 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !33 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !34 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !35 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !36 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !37 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !38 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !39 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !40 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !41 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !42 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !43 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !16, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !44 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !20, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !45 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !20, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !4, nameTableKind: None) !46 = distinct !DISubprogram(name: "throw_overflowerr_binaryop", linkageName: "julia_throw_overflowerr_binaryop_3602", scope: null, file: !3, line: 153, type: !47, scopeLine: 153, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !4) !47 = !DISubroutineType(types: !4) !48 = !DILocation(line: 708, scope: !49, inlinedAt: !51) !49 = distinct !DISubprogram(name: "#invokelatest#2;", linkageName: "#invokelatest#2", scope: !50, file: !50, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !4) !50 = !DIFile(filename: "essentials.jl", directory: ".") !51 = !DILocation(line: 706, scope: !52, inlinedAt: !53) !52 = distinct !DISubprogram(name: "invokelatest;", linkageName: "invokelatest", scope: !50, file: !50, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, retainedNodes: !4) !53 = !DILocation(line: 154, scope: !46) !54 = distinct !DISubprogram(name: "throw_boundserror", linkageName: "julia_throw_boundserror_3608", scope: null, file: !6, line: 651, type: !47, scopeLine: 651, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !5, retainedNodes: !4) !55 = !DILocation(line: 651, scope: !54) !56 = distinct !DISubprogram(name: "collect_to!", linkageName: "julia_collect_to!_3610", scope: null, file: !8, line: 719, type: !47, scopeLine: 719, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !57 = !DILocation(line: 719, scope: !56) !58 = !DILocation(line: 410, scope: !59, inlinedAt: !61) !59 = distinct !DISubprogram(name: "==;", linkageName: "==", scope: !60, file: !60, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !60 = !DIFile(filename: "promotion.jl", directory: ".") !61 = !DILocation(line: 674, scope: !62, inlinedAt: !64) !62 = distinct !DISubprogram(name: "iterate;", linkageName: "iterate", scope: !63, file: !63, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !63 = !DIFile(filename: "range.jl", directory: ".") !64 = !DILocation(line: 1094, scope: !65, inlinedAt: !66) !65 = distinct !DISubprogram(name: "iterate;", linkageName: "iterate", scope: !6, file: !6, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !66 = !DILocation(line: 368, scope: !67, inlinedAt: !69) !67 = distinct !DISubprogram(name: "_zip_iterate_some;", linkageName: "_zip_iterate_some", scope: !68, file: !68, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !68 = !DIFile(filename: "iterators.jl", directory: ".") !69 = !DILocation(line: 360, scope: !70, inlinedAt: !71) !70 = distinct !DISubprogram(name: "_zip_iterate_all;", linkageName: "_zip_iterate_all", scope: !68, file: !68, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !71 = !DILocation(line: 351, scope: !72, inlinedAt: !73) !72 = distinct !DISubprogram(name: "iterate;", linkageName: "iterate", scope: !68, file: !68, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !73 = !DILocation(line: 44, scope: !74, inlinedAt: !76) !74 = distinct !DISubprogram(name: "iterate;", linkageName: "iterate", scope: !75, file: !75, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !75 = !DIFile(filename: "generator.jl", directory: ".") !76 = !DILocation(line: 724, scope: !56) !77 = !DILocation(line: 1095, scope: !65, inlinedAt: !66) !78 = !DILocation(line: 0, scope: !79, inlinedAt: !81) !79 = distinct !DISubprogram(name: "_fill_getindex;", linkageName: "_fill_getindex", scope: !80, file: !80, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !80 = !DIFile(filename: "/Users/sethaxen/.julia/packages/FillArrays/NBUnJ/src/FillArrays.jl", directory: ".") !81 = !DILocation(line: 43, scope: !82, inlinedAt: !83) !82 = distinct !DISubprogram(name: "getindex;", linkageName: "getindex", scope: !80, file: !80, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !83 = !DILocation(line: 166, scope: !84, inlinedAt: !86) !84 = distinct !DISubprogram(name: "getindex;", linkageName: "getindex", scope: !85, file: !85, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !85 = !DIFile(filename: "/Users/sethaxen/.julia/packages/MappedArrays/bS6Yp/src/MappedArrays.jl", directory: ".") !86 = !DILocation(line: 1096, scope: !65, inlinedAt: !66) !87 = !DILocation(line: 0, scope: !88, inlinedAt: !90) !88 = distinct !DISubprogram(name: "getproperty;", linkageName: "getproperty", scope: !89, file: !89, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !89 = !DIFile(filename: "Base.jl", directory: ".") !90 = !DILocation(line: 613, scope: !91, inlinedAt: !92) !91 = distinct !DISubprogram(name: "last;", linkageName: "last", scope: !63, file: !63, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !92 = !DILocation(line: 673, scope: !93, inlinedAt: !94) !93 = distinct !DISubprogram(name: "checkindex;", linkageName: "checkindex", scope: !6, file: !6, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !94 = !DILocation(line: 601, scope: !95, inlinedAt: !96) !95 = distinct !DISubprogram(name: "checkbounds;", linkageName: "checkbounds", scope: !6, file: !6, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !96 = !DILocation(line: 616, scope: !95, inlinedAt: !97) !97 = !DILocation(line: 38, scope: !79, inlinedAt: !81) !98 = !DILocation(line: 0, scope: !99, inlinedAt: !92) !99 = distinct !DISubprogram(name: "<=;", linkageName: "<=", scope: !100, file: !100, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !100 = !DIFile(filename: "int.jl", directory: ".") !101 = !{!102, !102, i64 0, i64 1} !102 = !{!"jtbaa_const", !103, i64 0} !103 = !{!"jtbaa", !104, i64 0} !104 = !{!"jtbaa"} !105 = !DILocation(line: 0, scope: !106, inlinedAt: !107) !106 = distinct !DISubprogram(name: "tail;", linkageName: "tail", scope: !50, file: !50, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !107 = !DILocation(line: 370, scope: !67, inlinedAt: !69) !108 = !DILocation(line: 0, scope: !109, inlinedAt: !110) !109 = distinct !DISubprogram(name: "length;", linkageName: "length", scope: !8, file: !8, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !110 = !DILocation(line: 777, scope: !111, inlinedAt: !112) !111 = distinct !DISubprogram(name: "iterate;", linkageName: "iterate", scope: !8, file: !8, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !112 = !DILocation(line: 368, scope: !67, inlinedAt: !107) !113 = !DILocation(line: 0, scope: !114, inlinedAt: !110) !114 = distinct !DISubprogram(name: "getindex;", linkageName: "getindex", scope: !8, file: !8, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !115 = !DILocation(line: 0, scope: !116, inlinedAt: !117) !116 = distinct !DISubprogram(name: "setindex!;", linkageName: "setindex!", scope: !8, file: !8, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !117 = !DILocation(line: 728, scope: !56) !118 = !DILocation(line: 442, scope: !99, inlinedAt: !92) !119 = !{!120, !120, i64 0} !120 = !{!"jtbaa_stack", !103, i64 0} !121 = !DILocation(line: 86, scope: !122, inlinedAt: !123) !122 = distinct !DISubprogram(name: "-;", linkageName: "-", scope: !100, file: !100, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !123 = !DILocation(line: 923, scope: !122, inlinedAt: !110) !124 = !DILocation(line: 197, scope: !109, inlinedAt: !110) !125 = !{!126, !126, i64 0} !126 = !{!"jtbaa_arraylen", !127, i64 0} !127 = !{!"jtbaa_array", !103, i64 0} !128 = !{i64 0, i64 9223372036854775807} !129 = !DILocation(line: 441, scope: !130, inlinedAt: !131) !130 = distinct !DISubprogram(name: "<;", linkageName: "<", scope: !100, file: !100, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !131 = !DILocation(line: 448, scope: !130, inlinedAt: !110) !132 = !DILocation(line: 801, scope: !114, inlinedAt: !110) !133 = !{!134, !134, i64 0} !134 = !{!"jtbaa_arrayptr", !127, i64 0} !135 = !{!136, !136, i64 0} !136 = !{!"jtbaa_arraybuf", !137, i64 0} !137 = !{!"jtbaa_data", !103, i64 0} !138 = !DILocation(line: 87, scope: !139, inlinedAt: !110) !139 = distinct !DISubprogram(name: "+;", linkageName: "+", scope: !100, file: !100, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !140 = !DILocation(line: 320, scope: !141, inlinedAt: !143) !141 = distinct !DISubprogram(name: "-;", linkageName: "-", scope: !142, file: !142, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !142 = !DIFile(filename: "float.jl", directory: ".") !143 = !DILocation(line: 94, scope: !144, inlinedAt: !146) !144 = distinct !DISubprogram(name: "logdensity;", linkageName: "logdensity", scope: !145, file: !145, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !145 = !DIFile(filename: "/Users/sethaxen/.julia/packages/MeasureTheory/B9E1T/src/parameterized/normal.jl", directory: ".") !146 = !DILocation(line: 36, scope: !147, inlinedAt: !148) !147 = distinct !DISubprogram(name: "#4;", linkageName: "#4", scope: !75, file: !75, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !148 = !DILocation(line: 47, scope: !74, inlinedAt: !76) !149 = !DILocation(line: 335, scope: !150, inlinedAt: !151) !150 = distinct !DISubprogram(name: "/;", linkageName: "/", scope: !142, file: !142, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !151 = !DILocation(line: 324, scope: !152, inlinedAt: !143) !152 = distinct !DISubprogram(name: "/;", linkageName: "/", scope: !60, file: !60, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !7, retainedNodes: !4) !153 = !DILocation(line: 839, scope: !116, inlinedAt: !117) !154 = !DILocation(line: 87, scope: !139, inlinedAt: !155) !155 = !DILocation(line: 729, scope: !56) !156 = !DILocation(line: 735, scope: !56) !157 = distinct !DISubprogram(name: "collect", linkageName: "julia_collect_3604", scope: null, file: !8, line: 672, type: !47, scopeLine: 672, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !158 = !DILocation(line: 395, scope: !159, inlinedAt: !160) !159 = distinct !DISubprogram(name: "#7;", linkageName: "#7", scope: !68, file: !68, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !160 = !DILocation(line: 19, scope: !161, inlinedAt: !163) !161 = distinct !DISubprogram(name: "ntuple;", linkageName: "ntuple", scope: !162, file: !162, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !162 = !DIFile(filename: "ntuple.jl", directory: ".") !163 = !DILocation(line: 395, scope: !164, inlinedAt: !165) !164 = distinct !DISubprogram(name: "IteratorSize;", linkageName: "IteratorSize", scope: !68, file: !68, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !165 = !DILocation(line: 90, scope: !166, inlinedAt: !167) !166 = distinct !DISubprogram(name: "IteratorSize;", linkageName: "IteratorSize", scope: !75, file: !75, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !167 = !DILocation(line: 673, scope: !157) !168 = !DILocation(line: 33, scope: !169, inlinedAt: !170) !169 = distinct !DISubprogram(name: "getproperty;", linkageName: "getproperty", scope: !89, file: !89, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !170 = !DILocation(line: 613, scope: !171, inlinedAt: !172) !171 = distinct !DISubprogram(name: "last;", linkageName: "last", scope: !63, file: !63, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !172 = !DILocation(line: 519, scope: !173, inlinedAt: !174) !173 = distinct !DISubprogram(name: "isempty;", linkageName: "isempty", scope: !63, file: !63, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !174 = !DILocation(line: 670, scope: !175, inlinedAt: !176) !175 = distinct !DISubprogram(name: "iterate;", linkageName: "iterate", scope: !63, file: !63, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !176 = !DILocation(line: 1094, scope: !177, inlinedAt: !178) !177 = distinct !DISubprogram(name: "iterate;", linkageName: "iterate", scope: !6, file: !6, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !178 = !DILocation(line: 1094, scope: !177, inlinedAt: !179) !179 = !DILocation(line: 368, scope: !180, inlinedAt: !181) !180 = distinct !DISubprogram(name: "_zip_iterate_some;", linkageName: "_zip_iterate_some", scope: !68, file: !68, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !181 = !DILocation(line: 360, scope: !182, inlinedAt: !183) !182 = distinct !DISubprogram(name: "_zip_iterate_all;", linkageName: "_zip_iterate_all", scope: !68, file: !68, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !183 = !DILocation(line: 350, scope: !184, inlinedAt: !185) !184 = distinct !DISubprogram(name: "iterate;", linkageName: "iterate", scope: !68, file: !68, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !185 = !DILocation(line: 44, scope: !186, inlinedAt: !187) !186 = distinct !DISubprogram(name: "iterate;", linkageName: "iterate", scope: !75, file: !75, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !187 = !DILocation(line: 678, scope: !157) !188 = !DILocation(line: 83, scope: !189, inlinedAt: !190) !189 = distinct !DISubprogram(name: "<;", linkageName: "<", scope: !100, file: !100, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !190 = !DILocation(line: 305, scope: !191, inlinedAt: !172) !191 = distinct !DISubprogram(name: ">;", linkageName: ">", scope: !192, file: !192, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !192 = !DIFile(filename: "operators.jl", directory: ".") !193 = !DILocation(line: 0, scope: !157) !194 = !DILocation(line: 1095, scope: !177, inlinedAt: !178) !195 = !DILocation(line: 241, scope: !196, inlinedAt: !197) !196 = distinct !DISubprogram(name: "tail;", linkageName: "tail", scope: !50, file: !50, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !197 = !DILocation(line: 370, scope: !180, inlinedAt: !181) !198 = !{i64 40} !199 = !{i64 16} !200 = !DILocation(line: 197, scope: !201, inlinedAt: !202) !201 = distinct !DISubprogram(name: "length;", linkageName: "length", scope: !8, file: !8, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !202 = !DILocation(line: 777, scope: !203, inlinedAt: !204) !203 = distinct !DISubprogram(name: "iterate;", linkageName: "iterate", scope: !8, file: !8, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !204 = !DILocation(line: 777, scope: !203, inlinedAt: !205) !205 = !DILocation(line: 368, scope: !180, inlinedAt: !197) !206 = !DILocation(line: 441, scope: !189, inlinedAt: !207) !207 = !DILocation(line: 448, scope: !189, inlinedAt: !202) !208 = !DILocation(line: 801, scope: !209, inlinedAt: !202) !209 = distinct !DISubprogram(name: "getindex;", linkageName: "getindex", scope: !8, file: !8, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !210 = !{!211, !211, i64 0} !211 = !{!"jtbaa_arraysize", !127, i64 0} !212 = !DILocation(line: 679, scope: !157) !213 = !DILocation(line: 680, scope: !157) !214 = !DILocation(line: 839, scope: !215, inlinedAt: !216) !215 = distinct !DISubprogram(name: "setindex!;", linkageName: "setindex!", scope: !8, file: !8, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !216 = !DILocation(line: 701, scope: !217, inlinedAt: !218) !217 = distinct !DISubprogram(name: "collect_to_with_first!;", linkageName: "collect_to_with_first!", scope: !8, file: !8, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !9, retainedNodes: !4) !218 = !DILocation(line: 683, scope: !157) !219 = !DILocation(line: 45, scope: !186, inlinedAt: !187) !220 = !DILocation(line: 702, scope: !217, inlinedAt: !218) !221 = distinct !DISubprogram(name: "mapreduce_impl", linkageName: "julia_mapreduce_impl_3595", scope: null, file: !12, line: 233, type: !47, scopeLine: 233, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !222 = !DILocation(line: 410, scope: !223, inlinedAt: !224) !223 = distinct !DISubprogram(name: "==;", linkageName: "==", scope: !60, file: !60, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !224 = !DILocation(line: 235, scope: !221) !225 = !DILocation(line: 801, scope: !226, inlinedAt: !227) !226 = distinct !DISubprogram(name: "getindex;", linkageName: "getindex", scope: !8, file: !8, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !227 = !DILocation(line: 236, scope: !221) !228 = !DILocation(line: 237, scope: !221) !229 = !DILocation(line: 87, scope: !230, inlinedAt: !231) !230 = distinct !DISubprogram(name: "+;", linkageName: "+", scope: !100, file: !100, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !231 = !DILocation(line: 238, scope: !221) !232 = !DILocation(line: 83, scope: !233, inlinedAt: !234) !233 = distinct !DISubprogram(name: "<;", linkageName: "<", scope: !100, file: !100, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !234 = !DILocation(line: 305, scope: !235, inlinedAt: !231) !235 = distinct !DISubprogram(name: ">;", linkageName: ">", scope: !192, file: !192, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !236 = !DILocation(line: 801, scope: !226, inlinedAt: !237) !237 = !DILocation(line: 240, scope: !221) !238 = !DILocation(line: 801, scope: !226, inlinedAt: !239) !239 = !DILocation(line: 241, scope: !221) !240 = !DILocation(line: 326, scope: !241, inlinedAt: !242) !241 = distinct !DISubprogram(name: "+;", linkageName: "+", scope: !142, file: !142, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !242 = !DILocation(line: 242, scope: !221) !243 = !DILocation(line: 87, scope: !230, inlinedAt: !244) !244 = !DILocation(line: 69, scope: !245, inlinedAt: !247) !245 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !246, file: !246, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !246 = !DIFile(filename: "simdloop.jl", directory: ".") !247 = !DILocation(line: 243, scope: !221) !248 = !DILocation(line: 442, scope: !249, inlinedAt: !250) !249 = distinct !DISubprogram(name: "<=;", linkageName: "<=", scope: !100, file: !100, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !250 = !DILocation(line: 352, scope: !251, inlinedAt: !252) !251 = distinct !DISubprogram(name: ">=;", linkageName: ">=", scope: !192, file: !192, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !252 = !DILocation(line: 292, scope: !253, inlinedAt: !254) !253 = distinct !DISubprogram(name: "unitrange_last;", linkageName: "unitrange_last", scope: !63, file: !63, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !254 = !DILocation(line: 287, scope: !255, inlinedAt: !256) !255 = distinct !DISubprogram(name: "UnitRange;", linkageName: "UnitRange", scope: !63, file: !63, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !256 = !DILocation(line: 5, scope: !257, inlinedAt: !244) !257 = distinct !DISubprogram(name: "Colon;", linkageName: "Colon", scope: !63, file: !63, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !258 = !DILocation(line: 86, scope: !259, inlinedAt: !252) !259 = distinct !DISubprogram(name: "-;", linkageName: "-", scope: !100, file: !100, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !260 = !DILocation(line: 194, scope: !261, inlinedAt: !262) !261 = distinct !DISubprogram(name: "sub_with_overflow;", linkageName: "sub_with_overflow", scope: !3, file: !3, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !262 = !DILocation(line: 222, scope: !263, inlinedAt: !264) !263 = distinct !DISubprogram(name: "checked_sub;", linkageName: "checked_sub", scope: !3, file: !3, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !264 = !DILocation(line: 586, scope: !265, inlinedAt: !266) !265 = distinct !DISubprogram(name: "length;", linkageName: "length", scope: !63, file: !63, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !266 = !DILocation(line: 51, scope: !267, inlinedAt: !268) !267 = distinct !DISubprogram(name: "simd_inner_length;", linkageName: "simd_inner_length", scope: !246, file: !246, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !268 = !DILocation(line: 71, scope: !245, inlinedAt: !247) !269 = !DILocation(line: 223, scope: !263, inlinedAt: !264) !270 = !DILocation(line: 132, scope: !271, inlinedAt: !272) !271 = distinct !DISubprogram(name: "add_with_overflow;", linkageName: "add_with_overflow", scope: !3, file: !3, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !272 = !DILocation(line: 165, scope: !273, inlinedAt: !264) !273 = distinct !DISubprogram(name: "checked_add;", linkageName: "checked_add", scope: !3, file: !3, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !274 = !DILocation(line: 166, scope: !273, inlinedAt: !264) !275 = !DILocation(line: 83, scope: !233, inlinedAt: !276) !276 = !DILocation(line: 72, scope: !245, inlinedAt: !247) !277 = !DILocation(line: 801, scope: !226, inlinedAt: !278) !278 = !DILocation(line: 244, scope: !279, inlinedAt: !280) !279 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !12, file: !12, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !280 = !DILocation(line: 77, scope: !245, inlinedAt: !247) !281 = !DILocation(line: 326, scope: !241, inlinedAt: !282) !282 = !DILocation(line: 245, scope: !279, inlinedAt: !280) !283 = !DILocation(line: 87, scope: !230, inlinedAt: !284) !284 = !DILocation(line: 78, scope: !245, inlinedAt: !247) !285 = !DILocation(line: 83, scope: !233, inlinedAt: !286) !286 = !DILocation(line: 75, scope: !245, inlinedAt: !247) !287 = distinct !{!287} !288 = !DILocation(line: 247, scope: !221) !289 = !DILocation(line: 87, scope: !230, inlinedAt: !290) !290 = !DILocation(line: 250, scope: !221) !291 = !DILocation(line: 455, scope: !292, inlinedAt: !293) !292 = distinct !DISubprogram(name: ">>;", linkageName: ">>", scope: !100, file: !100, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !11, retainedNodes: !4) !293 = !DILocation(line: 462, scope: !292, inlinedAt: !290) !294 = !DILocation(line: 251, scope: !221) !295 = !DILocation(line: 87, scope: !230, inlinedAt: !296) !296 = !DILocation(line: 252, scope: !221) !297 = !DILocation(line: 326, scope: !241, inlinedAt: !298) !298 = !DILocation(line: 253, scope: !221) !299 = distinct !DISubprogram(name: "box_int64", linkageName: "julia_box_int64_7212", scope: null, file: !16, line: 214, type: !47, scopeLine: 214, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !33, retainedNodes: !4) !300 = !DILocation(line: 88, scope: !301, inlinedAt: !302) !301 = distinct !DISubprogram(name: "malloc;", linkageName: "malloc", scope: !16, file: !16, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !33, retainedNodes: !4) !302 = !DILocation(line: 185, scope: !303, inlinedAt: !304) !303 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !16, file: !16, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !33, retainedNodes: !4) !304 = !DILocation(line: 174, scope: !305, inlinedAt: !306) !305 = distinct !DISubprogram(name: "box;", linkageName: "box", scope: !16, file: !16, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !33, retainedNodes: !4) !306 = !DILocation(line: 214, scope: !299) !307 = !DILocation(line: 39, scope: !308, inlinedAt: !310) !308 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !309, file: !309, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !33, retainedNodes: !4) !309 = !DIFile(filename: "/Users/sethaxen/.julia/packages/LLVM/FrlPu/src/interop/base.jl", directory: ".") !310 = !DILocation(line: 141, scope: !303, inlinedAt: !311) !311 = !DILocation(line: 141, scope: !312, inlinedAt: !313) !312 = distinct !DISubprogram(name: "type_tag;", linkageName: "type_tag", scope: !16, file: !16, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !33, retainedNodes: !4) !313 = !DILocation(line: 189, scope: !303, inlinedAt: !304) !314 = !DILocation(line: 332, scope: !315, inlinedAt: !316) !315 = distinct !DISubprogram(name: "|;", linkageName: "|", scope: !100, file: !100, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !33, retainedNodes: !4) !316 = !DILocation(line: 923, scope: !315, inlinedAt: !313) !317 = !{!137, !137, i64 0} !318 = !DILocation(line: 159, scope: !319, inlinedAt: !321) !319 = distinct !DISubprogram(name: "+;", linkageName: "+", scope: !320, file: !320, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !33, retainedNodes: !4) !320 = !DIFile(filename: "pointer.jl", directory: ".") !321 = !DILocation(line: 192, scope: !303, inlinedAt: !304) !322 = !DILocation(line: 193, scope: !303, inlinedAt: !304) !323 = !DILocation(line: 130, scope: !324, inlinedAt: !325) !324 = distinct !DISubprogram(name: "unsafe_pointer_to_objref;", linkageName: "unsafe_pointer_to_objref", scope: !320, file: !320, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !33, retainedNodes: !4) !325 = !DILocation(line: 195, scope: !303, inlinedAt: !304) !326 = distinct !DISubprogram(name: "#mapreduce#673", linkageName: "julia_#mapreduce#673_3591", scope: null, file: !14, line: 312, type: !47, scopeLine: 312, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !13, retainedNodes: !4) !327 = !DILocation(line: 2383, scope: !328, inlinedAt: !329) !328 = distinct !DISubprogram(name: "map;", linkageName: "map", scope: !6, file: !6, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !13, retainedNodes: !4) !329 = !DILocation(line: 312, scope: !326) !330 = !DILocation(line: 133, scope: !331, inlinedAt: !332) !331 = distinct !DISubprogram(name: "size;", linkageName: "size", scope: !8, file: !8, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !13, retainedNodes: !4) !332 = !DILocation(line: 89, scope: !333, inlinedAt: !334) !333 = distinct !DISubprogram(name: "axes;", linkageName: "axes", scope: !6, file: !6, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !13, retainedNodes: !4) !334 = !DILocation(line: 459, scope: !335, inlinedAt: !337) !335 = distinct !DISubprogram(name: "LinearIndices;", linkageName: "LinearIndices", scope: !336, file: !336, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !13, retainedNodes: !4) !336 = !DIFile(filename: "indices.jl", directory: ".") !337 = !DILocation(line: 397, scope: !338, inlinedAt: !339) !338 = distinct !DISubprogram(name: "_mapreduce;", linkageName: "_mapreduce", scope: !12, file: !12, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !13, retainedNodes: !4) !339 = !DILocation(line: 318, scope: !340, inlinedAt: !341) !340 = distinct !DISubprogram(name: "_mapreduce_dim;", linkageName: "_mapreduce_dim", scope: !14, file: !14, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !13, retainedNodes: !4) !341 = !DILocation(line: 310, scope: !342, inlinedAt: !343) !342 = distinct !DISubprogram(name: "#mapreduce#672;", linkageName: "#mapreduce#672", scope: !14, file: !14, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !13, retainedNodes: !4) !343 = !DILocation(line: 310, scope: !344, inlinedAt: !345) !344 = distinct !DISubprogram(name: "mapreduce;", linkageName: "mapreduce", scope: !14, file: !14, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !13, retainedNodes: !4) !345 = !DILocation(line: 359, scope: !346, inlinedAt: !347) !346 = distinct !DISubprogram(name: "#reduce#674;", linkageName: "#reduce#674", scope: !14, file: !14, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !13, retainedNodes: !4) !347 = !DILocation(line: 359, scope: !348, inlinedAt: !329) !348 = distinct !DISubprogram(name: "reduce;", linkageName: "reduce", scope: !14, file: !14, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !13, retainedNodes: !4) !349 = !DILocation(line: 399, scope: !338, inlinedAt: !339) !350 = !DILocation(line: 801, scope: !351, inlinedAt: !352) !351 = distinct !DISubprogram(name: "getindex;", linkageName: "getindex", scope: !8, file: !8, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !13, retainedNodes: !4) !352 = !DILocation(line: 402, scope: !338, inlinedAt: !339) !353 = !DILocation(line: 403, scope: !338, inlinedAt: !339) !354 = !DILocation(line: 83, scope: !355, inlinedAt: !356) !355 = distinct !DISubprogram(name: "<;", linkageName: "<", scope: !100, file: !100, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !13, retainedNodes: !4) !356 = !DILocation(line: 404, scope: !338, inlinedAt: !339) !357 = !DILocation(line: 801, scope: !351, inlinedAt: !358) !358 = !DILocation(line: 406, scope: !338, inlinedAt: !339) !359 = !DILocation(line: 801, scope: !351, inlinedAt: !360) !360 = !DILocation(line: 407, scope: !338, inlinedAt: !339) !361 = !DILocation(line: 326, scope: !362, inlinedAt: !363) !362 = distinct !DISubprogram(name: "+;", linkageName: "+", scope: !142, file: !142, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !13, retainedNodes: !4) !363 = !DILocation(line: 408, scope: !338, inlinedAt: !339) !364 = !DILocation(line: 83, scope: !355, inlinedAt: !365) !365 = !DILocation(line: 409, scope: !338, inlinedAt: !339) !366 = !DILocation(line: 87, scope: !367, inlinedAt: !368) !367 = distinct !DISubprogram(name: "+;", linkageName: "+", scope: !100, file: !100, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !13, retainedNodes: !4) !368 = !DILocation(line: 410, scope: !338, inlinedAt: !339) !369 = !DILocation(line: 801, scope: !351, inlinedAt: !368) !370 = !DILocation(line: 326, scope: !362, inlinedAt: !371) !371 = !DILocation(line: 411, scope: !338, inlinedAt: !339) !372 = !DILocation(line: 257, scope: !373, inlinedAt: !374) !373 = distinct !DISubprogram(name: "mapreduce_impl;", linkageName: "mapreduce_impl", scope: !12, file: !12, type: !47, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !13, retainedNodes: !4) !374 = !DILocation(line: 415, scope: !338, inlinedAt: !339) !375 = distinct !DISubprogram(name: "#mapreduce#673", linkageName: "julia_#mapreduce#673_3591", scope: null, file: !14, line: 312, type: !47, scopeLine: 312, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !13, retainedNodes: !4) !376 = !DILocation(line: 2383, scope: !328, inlinedAt: !377) !377 = !DILocation(line: 312, scope: !375) !378 = !DILocation(line: 133, scope: !331, inlinedAt: !379) !379 = !DILocation(line: 89, scope: !333, inlinedAt: !380) !380 = !DILocation(line: 459, scope: !335, inlinedAt: !381) !381 = !DILocation(line: 397, scope: !338, inlinedAt: !382) !382 = !DILocation(line: 318, scope: !340, inlinedAt: !383) !383 = !DILocation(line: 310, scope: !342, inlinedAt: !384) !384 = !DILocation(line: 310, scope: !344, inlinedAt: !385) !385 = !DILocation(line: 359, scope: !346, inlinedAt: !386) !386 = !DILocation(line: 359, scope: !348, inlinedAt: !377) !387 = !DILocation(line: 399, scope: !338, inlinedAt: !382) !388 = !DILocation(line: 801, scope: !351, inlinedAt: !389) !389 = !DILocation(line: 402, scope: !338, inlinedAt: !382) !390 = !DILocation(line: 403, scope: !338, inlinedAt: !382) !391 = !DILocation(line: 83, scope: !355, inlinedAt: !392) !392 = !DILocation(line: 404, scope: !338, inlinedAt: !382) !393 = !DILocation(line: 801, scope: !351, inlinedAt: !394) !394 = !DILocation(line: 406, scope: !338, inlinedAt: !382) !395 = !DILocation(line: 801, scope: !351, inlinedAt: !396) !396 = !DILocation(line: 407, scope: !338, inlinedAt: !382) !397 = !DILocation(line: 326, scope: !362, inlinedAt: !398) !398 = !DILocation(line: 408, scope: !338, inlinedAt: !382) !399 = !DILocation(line: 83, scope: !355, inlinedAt: !400) !400 = !DILocation(line: 409, scope: !338, inlinedAt: !382) !401 = !DILocation(line: 87, scope: !367, inlinedAt: !402) !402 = !DILocation(line: 410, scope: !338, inlinedAt: !382) !403 = !DILocation(line: 801, scope: !351, inlinedAt: !402) !404 = !DILocation(line: 326, scope: !362, inlinedAt: !405) !405 = !DILocation(line: 411, scope: !338, inlinedAt: !382) !406 = !DILocation(line: 257, scope: !373, inlinedAt: !407) !407 = !DILocation(line: 415, scope: !338, inlinedAt: !382) !408 = distinct !DISubprogram(name: "#mapreduce#673", linkageName: "julia_#mapreduce#673_3591", scope: null, file: !14, line: 312, type: !47, scopeLine: 312, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !13, retainedNodes: !4) !409 = !DILocation(line: 2383, scope: !328, inlinedAt: !410) !410 = !DILocation(line: 312, scope: !408) !411 = !DILocation(line: 133, scope: !331, inlinedAt: !412) !412 = !DILocation(line: 89, scope: !333, inlinedAt: !413) !413 = !DILocation(line: 459, scope: !335, inlinedAt: !414) !414 = !DILocation(line: 397, scope: !338, inlinedAt: !415) !415 = !DILocation(line: 318, scope: !340, inlinedAt: !416) !416 = !DILocation(line: 310, scope: !342, inlinedAt: !417) !417 = !DILocation(line: 310, scope: !344, inlinedAt: !418) !418 = !DILocation(line: 359, scope: !346, inlinedAt: !419) !419 = !DILocation(line: 359, scope: !348, inlinedAt: !410) !420 = !DILocation(line: 399, scope: !338, inlinedAt: !415) !421 = !DILocation(line: 801, scope: !351, inlinedAt: !422) !422 = !DILocation(line: 402, scope: !338, inlinedAt: !415) !423 = !DILocation(line: 403, scope: !338, inlinedAt: !415) !424 = !DILocation(line: 83, scope: !355, inlinedAt: !425) !425 = !DILocation(line: 404, scope: !338, inlinedAt: !415) !426 = !DILocation(line: 801, scope: !351, inlinedAt: !427) !427 = !DILocation(line: 406, scope: !338, inlinedAt: !415) !428 = !DILocation(line: 801, scope: !351, inlinedAt: !429) !429 = !DILocation(line: 407, scope: !338, inlinedAt: !415) !430 = !DILocation(line: 326, scope: !362, inlinedAt: !431) !431 = !DILocation(line: 408, scope: !338, inlinedAt: !415) !432 = !DILocation(line: 83, scope: !355, inlinedAt: !433) !433 = !DILocation(line: 409, scope: !338, inlinedAt: !415) !434 = !DILocation(line: 87, scope: !367, inlinedAt: !435) !435 = !DILocation(line: 410, scope: !338, inlinedAt: !415) !436 = !DILocation(line: 801, scope: !351, inlinedAt: !435) !437 = !DILocation(line: 326, scope: !362, inlinedAt: !438) !438 = !DILocation(line: 411, scope: !338, inlinedAt: !415) !439 = !DILocation(line: 257, scope: !373, inlinedAt: !440) !440 = !DILocation(line: 415, scope: !338, inlinedAt: !415) define double @preprocess_julia__mapreduce_673_3591({ { [1 x [1 x i64]] } } %0, {} addrspace(10)* nonnull align 16 dereferenceable(40) %1) local_unnamed_addr !dbg !375 { entry: %2 = alloca { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, align 8 %.fca.0.0.0.0.extract = extractvalue { { [1 x [1 x i64]] } } %0, 0, 0, 0, 0 %3 = bitcast { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull align 8 dereferenceable(16) %3) %4 = call {}*** @julia.ptls_states() #10 %.fca.0.0.0.0.0.0.0.gep = getelementptr inbounds { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2, i64 0, i32 0, i64 0, i32 0, i32 0, i32 0, i64 0, i64 0, !dbg !376 store i64 %.fca.0.0.0.0.extract, i64* %.fca.0.0.0.0.0.0.0.gep, align 8, !dbg !376 %.fca.0.0.1.gep = getelementptr inbounds { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2, i64 0, i32 0, i64 0, i32 1, !dbg !376 store {} addrspace(10)* %1, {} addrspace(10)** %.fca.0.0.1.gep, align 8, !dbg !376 %5 = addrspacecast { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2 to { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] } addrspace(11)*, !dbg !376 %6 = call fastcc nonnull {} addrspace(10)* @julia_collect_3604({ [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] } addrspace(11)* nocapture nonnull readonly align 8 dereferenceable(16) %5), !dbg !376 %7 = bitcast {} addrspace(10)* %6 to {} addrspace(10)* addrspace(10)*, !dbg !378 %8 = addrspacecast {} addrspace(10)* addrspace(10)* %7 to {} addrspace(10)* addrspace(11)*, !dbg !378 %9 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %8, i64 3, !dbg !378 %10 = bitcast {} addrspace(10)* addrspace(11)* %9 to i64 addrspace(11)*, !dbg !378 %11 = load i64, i64 addrspace(11)* %10, align 8, !dbg !378, !tbaa !210, !range !128 switch i64 %11, label %L19.i [ i64 0, label %julia__mapreduce_673_3591.inner.exit i64 1, label %L17.i ], !dbg !387 L17.i: ; preds = %entry %12 = bitcast {} addrspace(10)* %6 to double addrspace(13)* addrspace(10)*, !dbg !388 %13 = addrspacecast double addrspace(13)* addrspace(10)* %12 to double addrspace(13)* addrspace(11)*, !dbg !388 %14 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %13, align 8, !dbg !388, !tbaa !133, !nonnull !4 %15 = load double, double addrspace(13)* %14, align 8, !dbg !388, !tbaa !135 br label %julia__mapreduce_673_3591.inner.exit, !dbg !390 L19.i: ; preds = %entry %16 = icmp ugt i64 %11, 15, !dbg !391 br i1 %16, label %L35.i, label %L21.i, !dbg !392 L21.i: ; preds = %L19.i %17 = bitcast {} addrspace(10)* %6 to double addrspace(13)* addrspace(10)*, !dbg !393 %18 = addrspacecast double addrspace(13)* addrspace(10)* %17 to double addrspace(13)* addrspace(11)*, !dbg !393 %19 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %18, align 8, !dbg !393, !tbaa !133, !nonnull !4 %20 = load double, double addrspace(13)* %19, align 8, !dbg !393, !tbaa !135 %21 = getelementptr inbounds double, double addrspace(13)* %19, i64 1, !dbg !395 %22 = load double, double addrspace(13)* %21, align 8, !dbg !395, !tbaa !135 %23 = fadd double %20, %22, !dbg !397 %.not67 = icmp ugt i64 %11, 2, !dbg !399 br i1 %.not67, label %L30.i.preheader, label %julia__mapreduce_673_3591.inner.exit, !dbg !400 L30.i.preheader: ; preds = %L21.i br label %L30.i, !dbg !400 L30.i: ; preds = %L30.i.preheader, %L30.i %tiv = phi i64 [ 0, %L30.i.preheader ], [ %tiv.next, %L30.i ] %value_phi1.i8 = phi double [ %28, %L30.i ], [ %23, %L30.i.preheader ] %24 = add i64 %tiv, 2, !dbg !401 %tiv.next = add nuw nsw i64 %tiv, 1, !dbg !401 %25 = add nuw nsw i64 %24, 1, !dbg !401 %26 = getelementptr inbounds double, double addrspace(13)* %19, i64 %24, !dbg !403 %27 = load double, double addrspace(13)* %26, align 8, !dbg !403, !tbaa !135 %28 = fadd double %value_phi1.i8, %27, !dbg !404 %exitcond.not = icmp eq i64 %25, %11, !dbg !399 br i1 %exitcond.not, label %julia__mapreduce_673_3591.inner.exit.loopexit, label %L30.i, !dbg !400 L35.i: ; preds = %L19.i %29 = call fastcc double @julia_mapreduce_impl_3595({} addrspace(10)* nocapture nonnull readonly align 16 dereferenceable(40) %6, i64 signext 1, i64 signext %11), !dbg !406 br label %julia__mapreduce_673_3591.inner.exit, !dbg !407 julia__mapreduce_673_3591.inner.exit.loopexit: ; preds = %L30.i br label %julia__mapreduce_673_3591.inner.exit, !dbg !377 julia__mapreduce_673_3591.inner.exit: ; preds = %julia__mapreduce_673_3591.inner.exit.loopexit, %L35.i, %L21.i, %L17.i, %entry %value_phi.i = phi double [ %15, %L17.i ], [ %29, %L35.i ], [ 0.000000e+00, %entry ], [ %23, %L21.i ], [ %28, %julia__mapreduce_673_3591.inner.exit.loopexit ] call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %3), !dbg !377 ret double %value_phi.i } %24 = add i64 %tiv, 2, !dbg !100: {[-1]:Integer}, intvals: {2,} i64 0: {[-1]:Anything}, intvals: {0,} i64 1: {[-1]:Integer}, intvals: {1,} i64 15: {[-1]:Integer}, intvals: {15,} i64 2: {[-1]:Integer}, intvals: {2,} %21 = getelementptr inbounds double, double addrspace(13)* %19, i64 1, !dbg !92: {[-1]:Pointer}, intvals: {} %22 = load double, double addrspace(13)* %21, align 8, !dbg !92, !tbaa !82: {[-1]:Float@double}, intvals: {} %tiv.next = add nuw nsw i64 %tiv, 1, !dbg !100: {[-1]:Integer}, intvals: {1,} %.fca.0.0.0.0.extract = extractvalue { { [1 x [1 x i64]] } } %0, 0, 0, 0, 0: {[-1]:Integer}, intvals: {} %value_phi1.i8 = phi double [ %28, %L30.i ], [ %23, %L30.i.preheader ]: {[-1]:Float@double}, intvals: {} %25 = add nuw nsw i64 %24, 1, !dbg !100: {[-1]:Integer}, intvals: {3,} %26 = getelementptr inbounds double, double addrspace(13)* %19, i64 %24, !dbg !103: {[-1]:Pointer}, intvals: {} %27 = load double, double addrspace(13)* %26, align 8, !dbg !103, !tbaa !82: {[-1]:Float@double}, intvals: {} %28 = fadd double %value_phi1.i8, %27, !dbg !104: {[-1]:Float@double}, intvals: {} %exitcond.not = icmp eq i64 %25, %11, !dbg !98: {[-1]:Integer}, intvals: {} %.fca.0.0.1.gep = getelementptr inbounds { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2, i64 0, i32 0, i64 0, i32 1, !dbg !48: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-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, [-1,0,40]:Integer}, intvals: {} %10 = bitcast {} addrspace(10)* addrspace(11)* %9 to i64 addrspace(11)*, !dbg !51: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {} %11 = load i64, i64 addrspace(11)* %10, align 8, !dbg !51, !tbaa !70, !range !75: {[-1]:Integer}, intvals: {} %6 = call fastcc nonnull {} addrspace(10)* @julia_collect_3604({ [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] } addrspace(11)* nocapture nonnull readonly align 8 dereferenceable(16) %5), !dbg !48: {}, intvals: {} %29 = call fastcc double @julia_mapreduce_impl_3595({} addrspace(10)* nocapture nonnull readonly align 16 dereferenceable(40) %6, i64 signext 1, i64 signext %11), !dbg !106: {[-1]:Pointer}, intvals: {} %16 = icmp ugt i64 %11, 15, !dbg !86: {[-1]:Integer}, intvals: {} %9 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %8, i64 3, !dbg !51: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {} %12 = bitcast {} addrspace(10)* %6 to double addrspace(13)* addrspace(10)*, !dbg !77: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {} %13 = addrspacecast double addrspace(13)* addrspace(10)* %12 to double addrspace(13)* addrspace(11)*, !dbg !77: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {} %value_phi.i = phi double [ %15, %L17.i ], [ %29, %L35.i ], [ 0.000000e+00, %entry ], [ %23, %L21.i ], [ %28, %julia__mapreduce_673_3591.inner.exit.loopexit ]: {[-1]:Pointer}, intvals: {} %7 = bitcast {} addrspace(10)* %6 to {} addrspace(10)* addrspace(10)*, !dbg !51: {}, intvals: {} %8 = addrspacecast {} addrspace(10)* addrspace(10)* %7 to {} addrspace(10)* addrspace(11)*, !dbg !51: {}, intvals: {} %14 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %13, align 8, !dbg !77, !tbaa !80, !nonnull !4: {[-1]:Pointer}, intvals: {} %15 = load double, double addrspace(13)* %14, align 8, !dbg !77, !tbaa !82: {[-1]:Pointer}, intvals: {} %17 = bitcast {} addrspace(10)* %6 to double addrspace(13)* addrspace(10)*, !dbg !90: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {} %18 = addrspacecast double addrspace(13)* addrspace(10)* %17 to double addrspace(13)* addrspace(11)*, !dbg !90: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {} %5 = addrspacecast { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2 to { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] } addrspace(11)*, !dbg !48: {[-1]:Pointer}, intvals: {} { { [1 x [1 x i64]] } } %0: {[0]:Integer, [1]:Integer, [2]:Integer, [3]:Integer, [4]:Integer, [5]:Integer, [6]:Integer, [7]:Integer}, intvals: {} {} addrspace(10)* %1: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}, intvals: {} %2 = alloca { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, align 8: {[-1]:Pointer}, intvals: {} %3 = bitcast { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2 to i8*: {[-1]:Pointer}, intvals: {} %23 = fadd double %20, %22, !dbg !94: {[-1]:Float@double}, intvals: {} %.not67 = icmp ugt i64 %11, 2, !dbg !98: {[-1]:Integer}, intvals: {} %19 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %18, align 8, !dbg !90, !tbaa !80, !nonnull !4: {[-1]:Pointer}, intvals: {} %20 = load double, double addrspace(13)* %19, align 8, !dbg !90, !tbaa !82: {[-1]:Float@double}, intvals: {} %tiv = phi i64 [ 0, %L30.i.preheader ], [ %tiv.next, %L30.i ]: {[-1]:Integer}, intvals: {0,} %.fca.0.0.0.0.0.0.0.gep = getelementptr inbounds { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }, { [1 x { { { [1 x [1 x i64]] } }, {} addrspace(10)* }] }* %2, i64 0, i32 0, i64 0, i32 0, i32 0, i32 0, i64 0, i64 0, !dbg !48: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {} Illegal updateAnalysis prev:{[-1]:Float@double} new: {[-1]:Pointer} val: %23 = fadd double %20, %22, !dbg !94 origin= %value_phi.i = phi double [ %15, %L17.i ], [ %29, %L35.i ], [ 0.000000e+00, %entry ], [ %23, %L21.i ], [ %28, %julia__mapreduce_673_3591.inner.exit.loopexit ] Assertion failed: (0 && "Performed illegal updateAnalysis"), function updateAnalysis, file /workspace/srcdir/Enzyme/enzyme/Enzyme/TypeAnalysis/TypeAnalysis.cpp, line 586. signal (6): Abort trap: 6 in expression starting at REPL[8]:1 __pthread_kill at /usr/lib/system/libsystem_kernel.dylib (unknown line) Allocations: 54941224 (Pool: 54921697; Big: 19527); GC: 59 zsh: abort julia ```
wsmoses commented 3 years ago

The compilation error is remedied by the latest commit pushed here: https://github.com/wsmoses/Enzyme.jl/pull/115

This may require a new cut of Enzyme_jll [and I haven't validated correctness as MeasureTheory requires support for the in progress jl_invoke handling under the hood].

wsmoses commented 3 years ago

Succeeds on my dev branch and I think main as well, closing.