Open jbrea opened 2 months ago
The following code worked with Enzyme 0.11.20 (julia 1.10.2) but fails on Enzyme 0.12.9. Apologies for the not so minimal MWE.
julia> m = BiasedCoin(); julia> p = parameters(m); julia> h! = HessLogP(rand(0:1, 10), m); julia> H = zeros(length(p), length(p)); julia> h!(H, p) ERROR: Enzyme compilation failed due to illegal type analysis. Current scope: ; Function Attrs: mustprogress willreturn define private fastcc "enzyme_type"="{[-1]:Float@double}" { i64, i64*, double, i64 } @preprocess_augmented_julia_logp_4940({} addrspace(10)* nocapture nonnull readonly align 16 dereferenceable(40) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}" "enzymejl_parmtype"="132511560660096" "enzymejl_parmtype_ref"="2" %0, { {} addrspace(10)* } addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(8) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@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}" "enzymejl_parmtype"="132509096788432" "enzymejl_parmtype_ref"="1" %1) unnamed_addr #4 !dbg !501 { top: %2 = call {}*** @julia.get_pgcstack() #15 %ptls_field28 = getelementptr inbounds {}**, {}*** %2, i64 2 %3 = bitcast {}*** %ptls_field28 to i64*** %ptls_load2930 = load i64**, i64*** %3, align 8, !tbaa !39, !alias.scope !502, !noalias !505 %4 = getelementptr inbounds i64*, i64** %ptls_load2930, i64 2 %safepoint = load i64*, i64** %4, align 8, !tbaa !48, !alias.scope !507, !noalias !510 fence syncscope("singlethread") seq_cst call void @julia.safepoint(i64* %safepoint) #15, !dbg !512 fence syncscope("singlethread") seq_cst %getfield_addr = getelementptr inbounds { {} addrspace(10)* }, { {} addrspace(10)* } addrspace(11)* %1, i64 0, i32 0, !dbg !513 %getfield = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %getfield_addr unordered, align 8, !dbg !513, !tbaa !48, !alias.scope !518, !noalias !521, !nonnull !16, !dereferenceable !146, !align !147 %5 = addrspacecast {} addrspace(10)* %getfield to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !523 %arraylen_ptr = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %5, i64 0, i32 1, !dbg !523 %arraylen = load i64, i64 addrspace(11)* %arraylen_ptr, align 8, !dbg !523, !tbaa !72, !range !75, !alias.scope !525, !noalias !528 %inbounds.not = icmp eq i64 %arraylen, 0, !dbg !523 br i1 %inbounds.not, label %oob, label %idxend, !dbg !523 L19: ; preds = %idxend %6 = fcmp ult double %arrayref, 0.000000e+00, !dbg !530 %7 = fcmp ugt double %arrayref, 1.000000e+00, !dbg !531 %8 = or i1 %6, %7, !dbg !531 br i1 %8, label %L32, label %L38.lr.ph, !dbg !531 L38.lr.ph: ; preds = %L19 %9 = addrspacecast {} addrspace(10)* %0 to i64 addrspace(13)* addrspace(11)*, !dbg !536 %arrayptr532 = load i64 addrspace(13)*, i64 addrspace(13)* addrspace(11)* %9, align 16, !dbg !536, !alias.scope !540, !noalias !547, !nonnull !16 %value_phi944 = load i64, i64 addrspace(13)* %arrayptr532, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %exitcond.not49 = icmp eq i64 %arraylen3, 1, !dbg !555 br i1 %exitcond.not49, label %L68, label %L62.preheader, !dbg !557 L62.preheader: ; preds = %L38.lr.ph %10 = shl i64 %arraylen3, 3, !dbg !557 %11 = add i64 %10, -8, !dbg !557 %12 = call noalias nonnull i8* @malloc(i64 %11) #15, !dbg !557 %13 = bitcast i8* %12 to i64*, !dbg !557 %14 = add nuw i64 %arraylen3, 7, !dbg !557 %15 = add nsw i64 %arraylen3, -2, !dbg !557 %xtraiter = and i64 %14, 7, !dbg !557 %16 = icmp ult i64 %15, 7, !dbg !557 br i1 %16, label %L68.loopexit.unr-lcssa, label %L62.preheader.new, !dbg !557 L62.preheader.new: ; preds = %L62.preheader %17 = add nsw i64 %arraylen3, -9, !dbg !557 %18 = lshr i64 %17, 3, !dbg !557 %19 = add nuw nsw i64 %18, 1, !dbg !557 %xtraiter4 = and i64 %19, 7, !dbg !557 %20 = icmp ult i64 %17, 56, !dbg !557 br i1 %20, label %L68.loopexit.unr-lcssa.loopexit.unr-lcssa, label %L62.preheader.new.new, !dbg !557 L62.preheader.new.new: ; preds = %L62.preheader.new %unroll_iter12 = and i64 %19, 4611686018427387896, !dbg !557 br label %L62, !dbg !557 L32: ; preds = %L19 %current_task127 = getelementptr inbounds {}**, {}*** %2, i64 -14 %current_task1 = bitcast {}*** %current_task127 to {}** %box = call noalias nonnull dereferenceable(8) "enzyme_type"="{[-1]:Pointer, [-1,-1]:Float@double}" {} addrspace(10)* @julia.gc_alloc_obj({}** nonnull %current_task1, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511632845536 to {}*) to {} addrspace(10)*)) #16, !dbg !531 %21 = bitcast {} addrspace(10)* %box to double addrspace(10)*, !dbg !531 store double %arrayref, double addrspace(10)* %21, align 8, !dbg !531, !tbaa !197, !alias.scope !200, !noalias !559 %22 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)*, {} addrspace(10)*, {} addrspace(10)*, ...) @julia.call2({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)* noundef nonnull @ijl_invoke, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511603774560 to {}*) to {} addrspace(10)*), {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511562750992 to {}*) to {} addrspace(10)*), {} addrspace(10)* nofree nonnull %box, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 132509245371280 to {}*) to {} addrspace(10)*)) #17, !dbg !531 %23 = addrspacecast {} addrspace(10)* %22 to {} addrspace(12)*, !dbg !531 call void @ijl_throw({} addrspace(12)* %23) #18, !dbg !531 unreachable, !dbg !531 L62: ; preds = %L62, %L62.preheader.new.new %iv1 = phi i64 [ %iv.next2, %L62 ], [ 0, %L62.preheader.new.new ] %24 = shl i64 %iv1, 3, !dbg !562 %iv.next2 = add nuw nsw i64 %iv1, 1, !dbg !562 %25 = shl nuw i64 %iv1, 6, !dbg !562 %iv.next = or i64 %25, 1, !dbg !562 %26 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next, !dbg !564 %value_phi9 = load i64, i64 addrspace(13)* %26, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %27 = getelementptr inbounds i64, i64* %13, i64 %25, !dbg !565 store i64 %value_phi9, i64* %27, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.1 = or i64 %25, 2, !dbg !562 %28 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1, !dbg !564 %value_phi9.1 = load i64, i64 addrspace(13)* %28, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %29 = getelementptr inbounds i64, i64* %13, i64 %iv.next, !dbg !565 store i64 %value_phi9.1, i64* %29, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.2 = or i64 %25, 3, !dbg !562 %30 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2, !dbg !564 %value_phi9.2 = load i64, i64 addrspace(13)* %30, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %31 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1, !dbg !565 store i64 %value_phi9.2, i64* %31, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.3 = or i64 %25, 4, !dbg !562 %32 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3, !dbg !564 %value_phi9.3 = load i64, i64 addrspace(13)* %32, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %33 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2, !dbg !565 store i64 %value_phi9.3, i64* %33, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.4 = or i64 %25, 5, !dbg !562 %34 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4, !dbg !564 %value_phi9.4 = load i64, i64 addrspace(13)* %34, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %35 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3, !dbg !565 store i64 %value_phi9.4, i64* %35, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.5 = or i64 %25, 6, !dbg !562 %36 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5, !dbg !564 %value_phi9.5 = load i64, i64 addrspace(13)* %36, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %37 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4, !dbg !565 store i64 %value_phi9.5, i64* %37, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.6 = or i64 %25, 7, !dbg !562 %38 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6, !dbg !564 %value_phi9.6 = load i64, i64 addrspace(13)* %38, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %39 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5, !dbg !565 store i64 %value_phi9.6, i64* %39, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.7 = or i64 %25, 8, !dbg !562 %40 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7, !dbg !564 %value_phi9.7 = load i64, i64 addrspace(13)* %40, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %41 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6, !dbg !565 store i64 %value_phi9.7, i64* %41, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.113 = or i64 %25, 9, !dbg !562 %42 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.113, !dbg !564 %value_phi9.114 = load i64, i64 addrspace(13)* %42, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %43 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7, !dbg !565 store i64 %value_phi9.114, i64* %43, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.1.1 = or i64 %25, 10, !dbg !562 %44 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.1, !dbg !564 %value_phi9.1.1 = load i64, i64 addrspace(13)* %44, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %45 = getelementptr inbounds i64, i64* %13, i64 %iv.next.113, !dbg !565 store i64 %value_phi9.1.1, i64* %45, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.2.1 = or i64 %25, 11, !dbg !562 %46 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.1, !dbg !564 %value_phi9.2.1 = load i64, i64 addrspace(13)* %46, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %47 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.1, !dbg !565 store i64 %value_phi9.2.1, i64* %47, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.3.1 = or i64 %25, 12, !dbg !562 %48 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.1, !dbg !564 %value_phi9.3.1 = load i64, i64 addrspace(13)* %48, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %49 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.1, !dbg !565 store i64 %value_phi9.3.1, i64* %49, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.4.1 = or i64 %25, 13, !dbg !562 %50 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.1, !dbg !564 %value_phi9.4.1 = load i64, i64 addrspace(13)* %50, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %51 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.1, !dbg !565 store i64 %value_phi9.4.1, i64* %51, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.5.1 = or i64 %25, 14, !dbg !562 %52 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.1, !dbg !564 %value_phi9.5.1 = load i64, i64 addrspace(13)* %52, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %53 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.1, !dbg !565 store i64 %value_phi9.5.1, i64* %53, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.6.1 = or i64 %25, 15, !dbg !562 %54 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.1, !dbg !564 %value_phi9.6.1 = load i64, i64 addrspace(13)* %54, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %55 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.1, !dbg !565 store i64 %value_phi9.6.1, i64* %55, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.7.1 = or i64 %25, 16, !dbg !562 %56 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.1, !dbg !564 %value_phi9.7.1 = load i64, i64 addrspace(13)* %56, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %57 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.1, !dbg !565 store i64 %value_phi9.7.1, i64* %57, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.215 = or i64 %25, 17, !dbg !562 %58 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.215, !dbg !564 %value_phi9.216 = load i64, i64 addrspace(13)* %58, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %59 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.1, !dbg !565 store i64 %value_phi9.216, i64* %59, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.1.2 = or i64 %25, 18, !dbg !562 %60 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.2, !dbg !564 %value_phi9.1.2 = load i64, i64 addrspace(13)* %60, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %61 = getelementptr inbounds i64, i64* %13, i64 %iv.next.215, !dbg !565 store i64 %value_phi9.1.2, i64* %61, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.2.2 = or i64 %25, 19, !dbg !562 %62 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.2, !dbg !564 %value_phi9.2.2 = load i64, i64 addrspace(13)* %62, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %63 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.2, !dbg !565 store i64 %value_phi9.2.2, i64* %63, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.3.2 = or i64 %25, 20, !dbg !562 %64 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.2, !dbg !564 %value_phi9.3.2 = load i64, i64 addrspace(13)* %64, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %65 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.2, !dbg !565 store i64 %value_phi9.3.2, i64* %65, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.4.2 = or i64 %25, 21, !dbg !562 %66 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.2, !dbg !564 %value_phi9.4.2 = load i64, i64 addrspace(13)* %66, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %67 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.2, !dbg !565 store i64 %value_phi9.4.2, i64* %67, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.5.2 = or i64 %25, 22, !dbg !562 %68 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.2, !dbg !564 %value_phi9.5.2 = load i64, i64 addrspace(13)* %68, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %69 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.2, !dbg !565 store i64 %value_phi9.5.2, i64* %69, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.6.2 = or i64 %25, 23, !dbg !562 %70 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.2, !dbg !564 %value_phi9.6.2 = load i64, i64 addrspace(13)* %70, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %71 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.2, !dbg !565 store i64 %value_phi9.6.2, i64* %71, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.7.2 = or i64 %25, 24, !dbg !562 %72 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.2, !dbg !564 %value_phi9.7.2 = load i64, i64 addrspace(13)* %72, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %73 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.2, !dbg !565 store i64 %value_phi9.7.2, i64* %73, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.317 = or i64 %25, 25, !dbg !562 %74 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.317, !dbg !564 %value_phi9.318 = load i64, i64 addrspace(13)* %74, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %75 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.2, !dbg !565 store i64 %value_phi9.318, i64* %75, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.1.3 = or i64 %25, 26, !dbg !562 %76 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.3, !dbg !564 %value_phi9.1.3 = load i64, i64 addrspace(13)* %76, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %77 = getelementptr inbounds i64, i64* %13, i64 %iv.next.317, !dbg !565 store i64 %value_phi9.1.3, i64* %77, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.2.3 = or i64 %25, 27, !dbg !562 %78 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.3, !dbg !564 %value_phi9.2.3 = load i64, i64 addrspace(13)* %78, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %79 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.3, !dbg !565 store i64 %value_phi9.2.3, i64* %79, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.3.3 = or i64 %25, 28, !dbg !562 %80 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.3, !dbg !564 %value_phi9.3.3 = load i64, i64 addrspace(13)* %80, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %81 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.3, !dbg !565 store i64 %value_phi9.3.3, i64* %81, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.4.3 = or i64 %25, 29, !dbg !562 %82 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.3, !dbg !564 %value_phi9.4.3 = load i64, i64 addrspace(13)* %82, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %83 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.3, !dbg !565 store i64 %value_phi9.4.3, i64* %83, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.5.3 = or i64 %25, 30, !dbg !562 %84 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.3, !dbg !564 %value_phi9.5.3 = load i64, i64 addrspace(13)* %84, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %85 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.3, !dbg !565 store i64 %value_phi9.5.3, i64* %85, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.6.3 = or i64 %25, 31, !dbg !562 %86 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.3, !dbg !564 %value_phi9.6.3 = load i64, i64 addrspace(13)* %86, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %87 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.3, !dbg !565 store i64 %value_phi9.6.3, i64* %87, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.7.3 = or i64 %25, 32, !dbg !562 %88 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.3, !dbg !564 %value_phi9.7.3 = load i64, i64 addrspace(13)* %88, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %89 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.3, !dbg !565 store i64 %value_phi9.7.3, i64* %89, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.419 = or i64 %25, 33, !dbg !562 %90 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.419, !dbg !564 %value_phi9.420 = load i64, i64 addrspace(13)* %90, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %91 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.3, !dbg !565 store i64 %value_phi9.420, i64* %91, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.1.4 = or i64 %25, 34, !dbg !562 %92 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.4, !dbg !564 %value_phi9.1.4 = load i64, i64 addrspace(13)* %92, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %93 = getelementptr inbounds i64, i64* %13, i64 %iv.next.419, !dbg !565 store i64 %value_phi9.1.4, i64* %93, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.2.4 = or i64 %25, 35, !dbg !562 %94 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.4, !dbg !564 %value_phi9.2.4 = load i64, i64 addrspace(13)* %94, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %95 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.4, !dbg !565 store i64 %value_phi9.2.4, i64* %95, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.3.4 = or i64 %25, 36, !dbg !562 %96 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.4, !dbg !564 %value_phi9.3.4 = load i64, i64 addrspace(13)* %96, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %97 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.4, !dbg !565 store i64 %value_phi9.3.4, i64* %97, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.4.4 = or i64 %25, 37, !dbg !562 %98 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.4, !dbg !564 %value_phi9.4.4 = load i64, i64 addrspace(13)* %98, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %99 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.4, !dbg !565 store i64 %value_phi9.4.4, i64* %99, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.5.4 = or i64 %25, 38, !dbg !562 %100 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.4, !dbg !564 %value_phi9.5.4 = load i64, i64 addrspace(13)* %100, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %101 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.4, !dbg !565 store i64 %value_phi9.5.4, i64* %101, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.6.4 = or i64 %25, 39, !dbg !562 %102 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.4, !dbg !564 %value_phi9.6.4 = load i64, i64 addrspace(13)* %102, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %103 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.4, !dbg !565 store i64 %value_phi9.6.4, i64* %103, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.7.4 = or i64 %25, 40, !dbg !562 %104 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.4, !dbg !564 %value_phi9.7.4 = load i64, i64 addrspace(13)* %104, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %105 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.4, !dbg !565 store i64 %value_phi9.7.4, i64* %105, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.521 = or i64 %25, 41, !dbg !562 %106 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.521, !dbg !564 %value_phi9.522 = load i64, i64 addrspace(13)* %106, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %107 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.4, !dbg !565 store i64 %value_phi9.522, i64* %107, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.1.5 = or i64 %25, 42, !dbg !562 %108 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.5, !dbg !564 %value_phi9.1.5 = load i64, i64 addrspace(13)* %108, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %109 = getelementptr inbounds i64, i64* %13, i64 %iv.next.521, !dbg !565 store i64 %value_phi9.1.5, i64* %109, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.2.5 = or i64 %25, 43, !dbg !562 %110 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.5, !dbg !564 %value_phi9.2.5 = load i64, i64 addrspace(13)* %110, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %111 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.5, !dbg !565 store i64 %value_phi9.2.5, i64* %111, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.3.5 = or i64 %25, 44, !dbg !562 %112 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.5, !dbg !564 %value_phi9.3.5 = load i64, i64 addrspace(13)* %112, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %113 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.5, !dbg !565 store i64 %value_phi9.3.5, i64* %113, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.4.5 = or i64 %25, 45, !dbg !562 %114 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.5, !dbg !564 %value_phi9.4.5 = load i64, i64 addrspace(13)* %114, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %115 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.5, !dbg !565 store i64 %value_phi9.4.5, i64* %115, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.5.5 = or i64 %25, 46, !dbg !562 %116 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.5, !dbg !564 %value_phi9.5.5 = load i64, i64 addrspace(13)* %116, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %117 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.5, !dbg !565 store i64 %value_phi9.5.5, i64* %117, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.6.5 = or i64 %25, 47, !dbg !562 %118 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.5, !dbg !564 %value_phi9.6.5 = load i64, i64 addrspace(13)* %118, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %119 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.5, !dbg !565 store i64 %value_phi9.6.5, i64* %119, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.7.5 = or i64 %25, 48, !dbg !562 %120 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.5, !dbg !564 %value_phi9.7.5 = load i64, i64 addrspace(13)* %120, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %121 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.5, !dbg !565 store i64 %value_phi9.7.5, i64* %121, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.623 = or i64 %25, 49, !dbg !562 %122 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.623, !dbg !564 %value_phi9.624 = load i64, i64 addrspace(13)* %122, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %123 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.5, !dbg !565 store i64 %value_phi9.624, i64* %123, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.1.6 = or i64 %25, 50, !dbg !562 %124 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.6, !dbg !564 %value_phi9.1.6 = load i64, i64 addrspace(13)* %124, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %125 = getelementptr inbounds i64, i64* %13, i64 %iv.next.623, !dbg !565 store i64 %value_phi9.1.6, i64* %125, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.2.6 = or i64 %25, 51, !dbg !562 %126 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.6, !dbg !564 %value_phi9.2.6 = load i64, i64 addrspace(13)* %126, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %127 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.6, !dbg !565 store i64 %value_phi9.2.6, i64* %127, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.3.6 = or i64 %25, 52, !dbg !562 %128 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.6, !dbg !564 %value_phi9.3.6 = load i64, i64 addrspace(13)* %128, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %129 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.6, !dbg !565 store i64 %value_phi9.3.6, i64* %129, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.4.6 = or i64 %25, 53, !dbg !562 %130 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.6, !dbg !564 %value_phi9.4.6 = load i64, i64 addrspace(13)* %130, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %131 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.6, !dbg !565 store i64 %value_phi9.4.6, i64* %131, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.5.6 = or i64 %25, 54, !dbg !562 %132 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.6, !dbg !564 %value_phi9.5.6 = load i64, i64 addrspace(13)* %132, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %133 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.6, !dbg !565 store i64 %value_phi9.5.6, i64* %133, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.6.6 = or i64 %25, 55, !dbg !562 %134 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.6, !dbg !564 %value_phi9.6.6 = load i64, i64 addrspace(13)* %134, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %135 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.6, !dbg !565 store i64 %value_phi9.6.6, i64* %135, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.7.6 = or i64 %25, 56, !dbg !562 %136 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.6, !dbg !564 %value_phi9.7.6 = load i64, i64 addrspace(13)* %136, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %137 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.6, !dbg !565 store i64 %value_phi9.7.6, i64* %137, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.725 = or i64 %25, 57, !dbg !562 %138 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.725, !dbg !564 %value_phi9.726 = load i64, i64 addrspace(13)* %138, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %139 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.6, !dbg !565 store i64 %value_phi9.726, i64* %139, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.1.7 = or i64 %25, 58, !dbg !562 %140 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.7, !dbg !564 %value_phi9.1.7 = load i64, i64 addrspace(13)* %140, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %141 = getelementptr inbounds i64, i64* %13, i64 %iv.next.725, !dbg !565 store i64 %value_phi9.1.7, i64* %141, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.2.7 = or i64 %25, 59, !dbg !562 %142 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.7, !dbg !564 %value_phi9.2.7 = load i64, i64 addrspace(13)* %142, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %143 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.7, !dbg !565 store i64 %value_phi9.2.7, i64* %143, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.3.7 = or i64 %25, 60, !dbg !562 %144 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.7, !dbg !564 %value_phi9.3.7 = load i64, i64 addrspace(13)* %144, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %145 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.7, !dbg !565 store i64 %value_phi9.3.7, i64* %145, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.4.7 = or i64 %25, 61, !dbg !562 %146 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.7, !dbg !564 %value_phi9.4.7 = load i64, i64 addrspace(13)* %146, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %147 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.7, !dbg !565 store i64 %value_phi9.4.7, i64* %147, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.5.7 = or i64 %25, 62, !dbg !562 %148 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.7, !dbg !564 %value_phi9.5.7 = load i64, i64 addrspace(13)* %148, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %149 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.7, !dbg !565 store i64 %value_phi9.5.7, i64* %149, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.6.7 = or i64 %25, 63, !dbg !562 %150 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.7, !dbg !564 %value_phi9.6.7 = load i64, i64 addrspace(13)* %150, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %151 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.7, !dbg !565 store i64 %value_phi9.6.7, i64* %151, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.7.7 = add nuw i64 %25, 64, !dbg !562 %152 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.7, !dbg !564 %value_phi9.7.7 = load i64, i64 addrspace(13)* %152, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %153 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.7, !dbg !565 store i64 %value_phi9.7.7, i64* %153, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %niter.next.7 = add i64 %24, 8, !dbg !557 %niter.ncmp.727 = icmp eq i64 %niter.next.7, %unroll_iter12, !dbg !557 br i1 %niter.ncmp.727, label %L68.loopexit.unr-lcssa.loopexit.unr-lcssa.loopexit, label %L62, !dbg !557 L68.loopexit.unr-lcssa.loopexit.unr-lcssa.loopexit: ; preds = %L62 br label %L68.loopexit.unr-lcssa.loopexit.unr-lcssa, !dbg !557 L68.loopexit.unr-lcssa.loopexit.unr-lcssa: ; preds = %L68.loopexit.unr-lcssa.loopexit.unr-lcssa.loopexit, %L62.preheader.new %iv.next.7.lcssa.ph = phi i64 [ undef, %L62.preheader.new ], [ %iv.next.7.7, %L68.loopexit.unr-lcssa.loopexit.unr-lcssa.loopexit ] %iv.unr10 = phi i64 [ 0, %L62.preheader.new ], [ %iv.next.7.7, %L68.loopexit.unr-lcssa.loopexit.unr-lcssa.loopexit ] %lcmp.mod.not28 = icmp eq i64 %xtraiter4, 0, !dbg !557 br i1 %lcmp.mod.not28, label %L68.loopexit.unr-lcssa, label %L62.epil5.preheader, !dbg !557 L62.epil5.preheader: ; preds = %L68.loopexit.unr-lcssa.loopexit.unr-lcssa br label %L62.epil5, !dbg !557 L62.epil5: ; preds = %L62.epil5.preheader, %L62.epil5 %iv = phi i64 [ 0, %L62.epil5.preheader ], [ %iv.next3, %L62.epil5 ] %154 = shl nuw nsw i64 %iv, 3, !dbg !562 %iv.next3 = add nuw nsw i64 %iv, 1, !dbg !562 %155 = add nuw nsw i64 %iv.unr10, %154, !dbg !562 %iv.next.epil7 = or i64 %155, 1, !dbg !562 %156 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.epil7, !dbg !564 %value_phi9.epil8 = load i64, i64 addrspace(13)* %156, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %157 = getelementptr inbounds i64, i64* %13, i64 %155, !dbg !565 store i64 %value_phi9.epil8, i64* %157, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.1.epil = or i64 %155, 2, !dbg !562 %158 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.epil, !dbg !564 %value_phi9.1.epil = load i64, i64 addrspace(13)* %158, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %159 = getelementptr inbounds i64, i64* %13, i64 %iv.next.epil7, !dbg !565 store i64 %value_phi9.1.epil, i64* %159, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.2.epil = or i64 %155, 3, !dbg !562 %160 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.epil, !dbg !564 %value_phi9.2.epil = load i64, i64 addrspace(13)* %160, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %161 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.epil, !dbg !565 store i64 %value_phi9.2.epil, i64* %161, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.3.epil = or i64 %155, 4, !dbg !562 %162 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.epil, !dbg !564 %value_phi9.3.epil = load i64, i64 addrspace(13)* %162, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %163 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.epil, !dbg !565 store i64 %value_phi9.3.epil, i64* %163, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.4.epil = or i64 %155, 5, !dbg !562 %164 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.epil, !dbg !564 %value_phi9.4.epil = load i64, i64 addrspace(13)* %164, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %165 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.epil, !dbg !565 store i64 %value_phi9.4.epil, i64* %165, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.5.epil = or i64 %155, 6, !dbg !562 %166 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.epil, !dbg !564 %value_phi9.5.epil = load i64, i64 addrspace(13)* %166, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %167 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.epil, !dbg !565 store i64 %value_phi9.5.epil, i64* %167, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.6.epil = or i64 %155, 7, !dbg !562 %168 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.epil, !dbg !564 %value_phi9.6.epil = load i64, i64 addrspace(13)* %168, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %169 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.epil, !dbg !565 store i64 %value_phi9.6.epil, i64* %169, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %iv.next.7.epil = add nuw nsw i64 %155, 8, !dbg !562 %170 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.epil, !dbg !564 %value_phi9.7.epil = load i64, i64 addrspace(13)* %170, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %171 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.epil, !dbg !565 store i64 %value_phi9.7.epil, i64* %171, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %epil.iter9.cmp.not = icmp eq i64 %iv.next3, %xtraiter4, !dbg !557 br i1 %epil.iter9.cmp.not, label %L68.loopexit.unr-lcssa.loopexit, label %L62.epil5, !dbg !557, !llvm.loop !570 L68.loopexit.unr-lcssa.loopexit: ; preds = %L62.epil5 br label %L68.loopexit.unr-lcssa, !dbg !557 L68.loopexit.unr-lcssa: ; preds = %L68.loopexit.unr-lcssa.loopexit, %L68.loopexit.unr-lcssa.loopexit.unr-lcssa, %L62.preheader %iv.unr = phi i64 [ 0, %L62.preheader ], [ %iv.next.7.lcssa.ph, %L68.loopexit.unr-lcssa.loopexit.unr-lcssa ], [ %iv.next.7.epil, %L68.loopexit.unr-lcssa.loopexit ] %lcmp.mod.not = icmp eq i64 %xtraiter, 0, !dbg !557 br i1 %lcmp.mod.not, label %L68, label %L62.epil.preheader, !dbg !557 L62.epil.preheader: ; preds = %L68.loopexit.unr-lcssa br label %L62.epil, !dbg !557 L62.epil: ; preds = %L62.epil.preheader, %L62.epil %iv4 = phi i64 [ 0, %L62.epil.preheader ], [ %iv.next5, %L62.epil ] %172 = add nuw nsw i64 %iv.unr, %iv4, !dbg !562 %iv.next5 = add nuw nsw i64 %iv4, 1, !dbg !562 %iv.next.epil = add nuw nsw i64 %172, 1, !dbg !562 %173 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.epil, !dbg !564 %value_phi9.epil = load i64, i64 addrspace(13)* %173, align 8, !dbg !549, !tbaa !107, !alias.scope !550, !noalias !553 %174 = getelementptr inbounds i64, i64* %13, i64 %172, !dbg !565 store i64 %value_phi9.epil, i64* %174, align 8, !dbg !565, !tbaa !107, !noalias !568, !invariant.group !569 %epil.iter.cmp.not = icmp eq i64 %iv.next5, %xtraiter, !dbg !557 br i1 %epil.iter.cmp.not, label %L68.loopexit, label %L62.epil, !dbg !557, !llvm.loop !571 L68.loopexit: ; preds = %L62.epil br label %L68, !dbg !558 L68: ; preds = %L68.loopexit, %idxend, %L68.loopexit.unr-lcssa, %L38.lr.ph %.sroa.0.0 = phi i64 [ undef, %idxend ], [ %value_phi944, %L38.lr.ph ], [ %value_phi944, %L68.loopexit.unr-lcssa ], [ %value_phi944, %L68.loopexit ] %.sroa.2.0 = phi i64* [ undef, %idxend ], [ undef, %L38.lr.ph ], [ %13, %L68.loopexit.unr-lcssa ], [ %13, %L68.loopexit ] %175 = insertvalue { i64, i64*, double, i64 } undef, i64 %.sroa.0.0, 0, !dbg !558 %176 = insertvalue { i64, i64*, double, i64 } %175, i64* %.sroa.2.0, 1, !dbg !558 %177 = insertvalue { i64, i64*, double, i64 } %176, double %arrayref, 2, !dbg !558 %178 = insertvalue { i64, i64*, double, i64 } %177, i64 %arraylen3, 3, !dbg !558 ret { i64, i64*, double, i64 } %178, !dbg !558 oob: ; preds = %top %errorbox = alloca i64, align 8, !dbg !523 store i64 1, i64* %errorbox, align 8, !dbg !523, !noalias !572 %179 = addrspacecast {} addrspace(10)* %getfield to {} addrspace(12)*, !dbg !523 call void @ijl_bounds_error_ints({} addrspace(12)* noundef %179, i64* noundef nonnull align 8 %errorbox, i64 noundef 1) #18, !dbg !523 unreachable, !dbg !523 idxend: ; preds = %top %180 = addrspacecast {} addrspace(10)* %getfield to double addrspace(13)* addrspace(11)*, !dbg !523 %arrayptr31 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %180, align 16, !dbg !523, !tbaa !103, !alias.scope !573, !noalias !528, !nonnull !16 %arrayref = load double, double addrspace(13)* %arrayptr31, align 8, !dbg !523, !tbaa !107, !alias.scope !576, !noalias !579 %181 = addrspacecast {} addrspace(10)* %0 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !581 %arraylen_ptr2 = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %181, i64 0, i32 1, !dbg !581 %arraylen3 = load i64, i64 addrspace(11)* %arraylen_ptr2, align 8, !dbg !581, !tbaa !72, !range !75, !alias.scope !582, !noalias !583 %.not = icmp eq i64 %arraylen3, 0, !dbg !584 br i1 %.not, label %L68, label %L19, !dbg !537 } Type analysis state: <analysis> %47 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.1, !dbg !129: {[-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: {} %iv.next.3.1 = or i64 %25, 12, !dbg !125: {[-1]:Integer}, intvals: {} %48 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.1, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.3.1 = load i64, i64 addrspace(13)* %48, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %iv.next.7.lcssa.ph = phi i64 [ undef, %L62.preheader.new ], [ %iv.next.7.7, %L68.loopexit.unr-lcssa.loopexit.unr-lcssa.loopexit ]: {[-1]:Integer}, intvals: {} %iv.next = or i64 %25, 1, !dbg !125: {[-1]:Integer}, intvals: {} %26 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9 = load i64, i64 addrspace(13)* %26, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %value_phi9.1 = load i64, i64 addrspace(13)* %28, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %value_phi9.2 = load i64, i64 addrspace(13)* %30, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %115 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.5, !dbg !129: {[-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: {} %iv.next.5.5 = or i64 %25, 46, !dbg !125: {[-1]:Integer}, intvals: {} %116 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.5, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.5.5 = load i64, i64 addrspace(13)* %116, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %117 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.5, !dbg !129: {[-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: {} %iv.next.6.5 = or i64 %25, 47, !dbg !125: {[-1]:Integer}, intvals: {} %value_phi9.6.5 = load i64, i64 addrspace(13)* %118, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %iv.next.1.1 = or i64 %25, 10, !dbg !125: {[-1]:Integer}, intvals: {} %44 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.1, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.1.1 = load i64, i64 addrspace(13)* %44, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %45 = getelementptr inbounds i64, i64* %13, i64 %iv.next.113, !dbg !129: {[-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: {} %iv.next.2.1 = or i64 %25, 11, !dbg !125: {[-1]:Integer}, intvals: {} %46 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.1, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.2.1 = load i64, i64 addrspace(13)* %46, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %33 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2, !dbg !129: {[-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: {} %iv.next.4 = or i64 %25, 5, !dbg !125: {[-1]:Integer}, intvals: {} %34 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.4 = load i64, i64 addrspace(13)* %34, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %35 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3, !dbg !129: {[-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: {} %iv.next.5 = or i64 %25, 6, !dbg !125: {[-1]:Integer}, intvals: {} %36 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.5 = load i64, i64 addrspace(13)* %36, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %37 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4, !dbg !129: {[-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: {} %iv.next.6 = or i64 %25, 7, !dbg !125: {[-1]:Integer}, intvals: {} %38 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.6 = load i64, i64 addrspace(13)* %38, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %39 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5, !dbg !129: {[-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: {} %iv.next.7 = or i64 %25, 8, !dbg !125: {[-1]:Integer}, intvals: {} i64 20: {[-1]:Integer}, intvals: {20,} i64 21: {[-1]:Integer}, intvals: {21,} %iv.next.5.epil = or i64 %155, 6, !dbg !125: {[-1]:Integer}, intvals: {} %166 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.epil, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.5.epil = load i64, i64 addrspace(13)* %166, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %167 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.epil, !dbg !129: {[-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: {} %iv.next.6.epil = or i64 %155, 7, !dbg !125: {[-1]:Integer}, intvals: {} %168 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.epil, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.6.epil = load i64, i64 addrspace(13)* %168, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} i64* undef: {[-1]:Anything}, intvals: {} i64 -9: {[-1]:Integer}, intvals: {-9,} %79 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.3, !dbg !129: {[-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: {} %iv.next.3.3 = or i64 %25, 28, !dbg !125: {[-1]:Integer}, intvals: {} %80 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.3, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.3.3 = load i64, i64 addrspace(13)* %80, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %81 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.3, !dbg !129: {[-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: {} %iv.next.4.3 = or i64 %25, 29, !dbg !125: {[-1]:Integer}, intvals: {} %82 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.3, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %iv.next.1.3 = or i64 %25, 26, !dbg !125: {[-1]:Integer}, intvals: {} %76 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.3, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.1.3 = load i64, i64 addrspace(13)* %76, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %77 = getelementptr inbounds i64, i64* %13, i64 %iv.next.317, !dbg !129: {[-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: {} %iv.next.2.3 = or i64 %25, 27, !dbg !125: {[-1]:Integer}, intvals: {} %78 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.3, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.2.3 = load i64, i64 addrspace(13)* %78, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} i64 15: {[-1]:Integer}, intvals: {15,} %40 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.7 = load i64, i64 addrspace(13)* %40, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %41 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6, !dbg !129: {[-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: {} %iv.next.113 = or i64 %25, 9, !dbg !125: {[-1]:Integer}, intvals: {} %42 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.113, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.114 = load i64, i64 addrspace(13)* %42, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %43 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7, !dbg !129: {[-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: {} %150 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.7, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.6.7 = load i64, i64 addrspace(13)* %150, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %151 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.7, !dbg !129: {[-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: {} %iv.next.7.7 = add nuw i64 %25, 64, !dbg !125: {[-1]:Integer}, intvals: {64,} %152 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.7, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.7.7 = load i64, i64 addrspace(13)* %152, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %153 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.7, !dbg !129: {[-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: {} i64 32: {[-1]:Integer}, intvals: {32,} i64 28: {[-1]:Integer}, intvals: {28,} i64 29: {[-1]:Integer}, intvals: {29,} %3 = bitcast {}*** %ptls_field28 to i64***: {[-1]:Pointer}, intvals: {} %ptls_load2930 = load i64**, i64*** %3, align 8, !tbaa !17, !alias.scope !21, !noalias !24: {}, intvals: {} %iv.next.3.6 = or i64 %25, 52, !dbg !125: {[-1]:Integer}, intvals: {} %128 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.6, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.3.6 = load i64, i64 addrspace(13)* %128, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %129 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.6, !dbg !129: {[-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: {} %iv.next.4.6 = or i64 %25, 53, !dbg !125: {[-1]:Integer}, intvals: {} %130 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.6, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.4.6 = load i64, i64 addrspace(13)* %130, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} i64 55: {[-1]:Integer}, intvals: {55,} %iv.next.3.4 = or i64 %25, 36, !dbg !125: {[-1]:Integer}, intvals: {} %96 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.4, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.3.4 = load i64, i64 addrspace(13)* %96, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %97 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.4, !dbg !129: {[-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: {} %iv.next.4.4 = or i64 %25, 37, !dbg !125: {[-1]:Integer}, intvals: {} %98 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.4, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.4.4 = load i64, i64 addrspace(13)* %98, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} i64 50: {[-1]:Integer}, intvals: {50,} i64 51: {[-1]:Integer}, intvals: {51,} i64 54: {[-1]:Integer}, intvals: {54,} i64 undef: {[-1]:Anything}, intvals: {} %52 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.1, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.5.1 = load i64, i64 addrspace(13)* %52, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %53 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.1, !dbg !129: {[-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: {} %iv.next.6.1 = or i64 %25, 15, !dbg !125: {[-1]:Integer}, intvals: {} %54 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.1, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.6.1 = load i64, i64 addrspace(13)* %54, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %55 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.1, !dbg !129: {[-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: {} %iv.next.725 = or i64 %25, 57, !dbg !125: {[-1]:Integer}, intvals: {} %138 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.725, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.726 = load i64, i64 addrspace(13)* %138, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %139 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.6, !dbg !129: {[-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: {} %iv.next.1.7 = or i64 %25, 58, !dbg !125: {[-1]:Integer}, intvals: {} i64 52: {[-1]:Integer}, intvals: {52,} %109 = getelementptr inbounds i64, i64* %13, i64 %iv.next.521, !dbg !129: {[-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: {} %iv.next.2.5 = or i64 %25, 43, !dbg !125: {[-1]:Integer}, intvals: {} %110 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.5, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.2.5 = load i64, i64 addrspace(13)* %110, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %111 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.5, !dbg !129: {[-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: {} %iv.next.3.5 = or i64 %25, 44, !dbg !125: {[-1]:Integer}, intvals: {} i64 17: {[-1]:Integer}, intvals: {17,} %value_phi9.1.4 = load i64, i64 addrspace(13)* %92, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %93 = getelementptr inbounds i64, i64* %13, i64 %iv.next.419, !dbg !129: {[-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: {} %iv.next.2.4 = or i64 %25, 35, !dbg !125: {[-1]:Integer}, intvals: {} %94 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.4, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.2.4 = load i64, i64 addrspace(13)* %94, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %95 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.4, !dbg !129: {[-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: {} double 0.000000e+00: {[-1]:Anything}, intvals: {} double 1.000000e+00: {[-1]:Float@double}, intvals: {} i64 33: {[-1]:Integer}, intvals: {33,} %131 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.6, !dbg !129: {[-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: {} %iv.next.5.6 = or i64 %25, 54, !dbg !125: {[-1]:Integer}, intvals: {} %132 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.6, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.5.6 = load i64, i64 addrspace(13)* %132, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %133 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.6, !dbg !129: {[-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: {} %iv.next.6.6 = or i64 %25, 55, !dbg !125: {[-1]:Integer}, intvals: {} i64 25: {[-1]:Integer}, intvals: {25,} %5 = addrspacecast {} addrspace(10)* %getfield to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !59: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {} %getfield = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %getfield_addr unordered, align 8, !dbg !34, !tbaa !26, !alias.scope !46, !noalias !51, !nonnull !16, !dereferenceable !57, !align !58: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {} %safepoint = load i64*, i64** %4, align 8, !tbaa !26, !alias.scope !28, !noalias !31: {}, intvals: {} %value_phi9.7.2 = load i64, i64 addrspace(13)* %72, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %73 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.2, !dbg !129: {[-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: {} %iv.next.317 = or i64 %25, 25, !dbg !125: {[-1]:Integer}, intvals: {} %74 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.317, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.318 = load i64, i64 addrspace(13)* %74, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %75 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.2, !dbg !129: {[-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: {} i64 9: {[-1]:Integer}, intvals: {9,} %iv1 = phi i64 [ %iv.next2, %L62 ], [ 0, %L62.preheader.new.new ]: {[-1]:Integer}, intvals: {0,} %iv = phi i64 [ 0, %L62.epil5.preheader ], [ %iv.next3, %L62.epil5 ]: {[-1]:Integer}, intvals: {0,} %iv.next.3.7 = or i64 %25, 60, !dbg !125: {[-1]:Integer}, intvals: {} %144 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.7, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.3.7 = load i64, i64 addrspace(13)* %144, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %145 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.7, !dbg !129: {[-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: {} %iv.next.4.7 = or i64 %25, 61, !dbg !125: {[-1]:Integer}, intvals: {} %146 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.7, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.4.7 = load i64, i64 addrspace(13)* %146, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} i64 47: {[-1]:Integer}, intvals: {47,} i64 0: {[-1]:Anything}, intvals: {0,} i64 57: {[-1]:Integer}, intvals: {57,} i64 4: {[-1]:Integer}, intvals: {4,} i64 13: {[-1]:Integer}, intvals: {13,} i64 14: {[-1]:Integer}, intvals: {14,} i64 48: {[-1]:Integer}, intvals: {48,} i64 56: {[-1]:Integer}, intvals: {56,} {} addrspace(10)* %0: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {} { {} addrspace(10)* } addrspace(11)* %1: {[-1]:Pointer, [-1,-1]:Pointer, [-1,-1,0]:Pointer, [-1,-1,0,-1]:Float@double, [-1,-1,8]:Integer, [-1,-1,9]:Integer, [-1,-1,10]:Integer, [-1,-1,11]:Integer, [-1,-1,12]:Integer, [-1,-1,13]:Integer, [-1,-1,14]:Integer, [-1,-1,15]:Integer, [-1,-1,16]:Integer, [-1,-1,17]:Integer, [-1,-1,18]:Integer, [-1,-1,19]:Integer, [-1,-1,20]:Integer, [-1,-1,21]:Integer, [-1,-1,22]:Integer, [-1,-1,23]:Integer, [-1,-1,24]:Integer, [-1,-1,25]:Integer, [-1,-1,26]:Integer, [-1,-1,27]:Integer, [-1,-1,28]:Integer, [-1,-1,29]:Integer, [-1,-1,30]:Integer, [-1,-1,31]:Integer, [-1,-1,32]:Integer, [-1,-1,33]:Integer, [-1,-1,34]:Integer, [-1,-1,35]:Integer, [-1,-1,36]:Integer, [-1,-1,37]:Integer, [-1,-1,38]:Integer, [-1,-1,39]:Integer}, intvals: {} %arraylen3 = load i64, i64 addrspace(11)* %arraylen_ptr2, align 8, !dbg !152, !tbaa !65, !range !68, !alias.scope !154, !noalias !155: {[-1]:Integer}, intvals: {} %99 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.4, !dbg !129: {[-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: {} %iv.next.5.4 = or i64 %25, 38, !dbg !125: {[-1]:Integer}, intvals: {} %100 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.4, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.5.4 = load i64, i64 addrspace(13)* %100, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %101 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.4, !dbg !129: {[-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: {} %iv.next.6.4 = or i64 %25, 39, !dbg !125: {[-1]:Integer}, intvals: {} %102 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.4, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} i64 2: {[-1]:Integer}, intvals: {2,} i64 11: {[-1]:Integer}, intvals: {11,} i64 26: {[-1]:Integer}, intvals: {26,} i64 27: {[-1]:Integer}, intvals: {27,} %value_phi9.4.3 = load i64, i64 addrspace(13)* %82, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %83 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.3, !dbg !129: {[-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: {} %iv.next.5.3 = or i64 %25, 30, !dbg !125: {[-1]:Integer}, intvals: {} %84 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.3, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.5.3 = load i64, i64 addrspace(13)* %84, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %85 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.3, !dbg !129: {[-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: {} %59 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.1, !dbg !129: {[-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: {} %iv.next.1.2 = or i64 %25, 18, !dbg !125: {[-1]:Integer}, intvals: {} %60 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.2, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.1.2 = load i64, i64 addrspace(13)* %60, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %61 = getelementptr inbounds i64, i64* %13, i64 %iv.next.215, !dbg !129: {[-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: {} %iv.next.2.2 = or i64 %25, 19, !dbg !125: {[-1]:Integer}, intvals: {} %62 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.2, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %180 = addrspacecast {} addrspace(10)* %getfield to double addrspace(13)* addrspace(11)*, !dbg !59: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {} %arrayptr31 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %180, align 16, !dbg !59, !tbaa !142, !alias.scope !144, !noalias !72, !nonnull !16: {[-1]:Pointer}, intvals: {} %arrayref = load double, double addrspace(13)* %arrayptr31, align 8, !dbg !59, !tbaa !104, !alias.scope !147, !noalias !150: {[-1]:Float@double}, intvals: {} %arraylen_ptr2 = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %181, i64 0, i32 1, !dbg !152: {[-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: {} %17 = add nsw i64 %arraylen3, -9, !dbg !116: {[-1]:Integer}, intvals: {} %18 = lshr i64 %17, 3, !dbg !116: {[-1]:Integer}, intvals: {} %19 = add nuw nsw i64 %18, 1, !dbg !116: {[-1]:Integer}, intvals: {} %xtraiter4 = and i64 %19, 7, !dbg !116: {[-1]:Integer}, intvals: {} %20 = icmp ult i64 %17, 56, !dbg !116: {[-1]:Integer}, intvals: {} %unroll_iter12 = and i64 %19, 4611686018427387896, !dbg !116: {[-1]:Integer}, intvals: {} %69 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.2, !dbg !129: {[-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: {} %iv.next.6.2 = or i64 %25, 23, !dbg !125: {[-1]:Integer}, intvals: {} %70 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.2, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.6.2 = load i64, i64 addrspace(13)* %70, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %71 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.2, !dbg !129: {[-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: {} %iv.next.7.2 = or i64 %25, 24, !dbg !125: {[-1]:Integer}, intvals: {} %72 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.2, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %arraylen_ptr = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %5, i64 0, i32 1, !dbg !59: {[-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: {} %inbounds.not = icmp eq i64 %arraylen, 0, !dbg !59: {[-1]:Integer}, intvals: {} %6 = fcmp ult double %arrayref, 0.000000e+00, !dbg !74: {[-1]:Integer}, intvals: {} %7 = fcmp ugt double %arrayref, 1.000000e+00, !dbg !77: {[-1]:Integer}, intvals: {} %8 = or i1 %6, %7, !dbg !77: {[-1]:Integer}, intvals: {} %iv.next2 = add nuw nsw i64 %iv1, 1, !dbg !125: {[-1]:Integer}, intvals: {1,} %9 = addrspacecast {} addrspace(10)* %0 to i64 addrspace(13)* addrspace(11)*, !dbg !88: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {} %arrayptr532 = load i64 addrspace(13)*, i64 addrspace(13)* addrspace(11)* %9, align 16, !dbg !88, !alias.scope !94, !noalias !101, !nonnull !16: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} { i64, i64*, double, i64 } undef: {[-1]:Anything}, intvals: {} %89 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.3, !dbg !129: {[-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: {} %iv.next.419 = or i64 %25, 33, !dbg !125: {[-1]:Integer}, intvals: {} %90 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.419, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.420 = load i64, i64 addrspace(13)* %90, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %91 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.3, !dbg !129: {[-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: {} %iv.next.1.4 = or i64 %25, 34, !dbg !125: {[-1]:Integer}, intvals: {} %92 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.4, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} i64 30: {[-1]:Integer}, intvals: {30,} i64 31: {[-1]:Integer}, intvals: {31,} i64 61: {[-1]:Integer}, intvals: {61,} i64 62: {[-1]:Integer}, intvals: {62,} %.sroa.0.0 = phi i64 [ undef, %idxend ], [ %value_phi944, %L38.lr.ph ], [ %value_phi944, %L68.loopexit.unr-lcssa ], [ %value_phi944, %L68.loopexit ]: {[-1]:Integer}, intvals: {} %.sroa.2.0 = phi i64* [ undef, %idxend ], [ undef, %L38.lr.ph ], [ %13, %L68.loopexit.unr-lcssa ], [ %13, %L68.loopexit ]: {[-1]:Pointer}, intvals: {} i64 40: {[-1]:Integer}, intvals: {40,} i64 34: {[-1]:Integer}, intvals: {34,} i64 35: {[-1]:Integer}, intvals: {35,} i64 4611686018427387896: {[-1]:Anything}, intvals: {4611686018427387896,} i64 53: {[-1]:Integer}, intvals: {53,} i64 36: {[-1]:Integer}, intvals: {36,} i64 37: {[-1]:Integer}, intvals: {37,} %iv.unr10 = phi i64 [ 0, %L62.preheader.new ], [ %iv.next.7.7, %L68.loopexit.unr-lcssa.loopexit.unr-lcssa.loopexit ]: {[-1]:Integer}, intvals: {0,} %lcmp.mod.not28 = icmp eq i64 %xtraiter4, 0, !dbg !116: {[-1]:Integer}, intvals: {} %140 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.7, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.1.7 = load i64, i64 addrspace(13)* %140, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %141 = getelementptr inbounds i64, i64* %13, i64 %iv.next.725, !dbg !129: {[-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: {} %iv.next.2.7 = or i64 %25, 59, !dbg !125: {[-1]:Integer}, intvals: {} %142 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.7, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.2.7 = load i64, i64 addrspace(13)* %142, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %143 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.7, !dbg !129: {[-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: {} i64 22: {[-1]:Integer}, intvals: {22,} i64 23: {[-1]:Integer}, intvals: {23,} i64 16: {[-1]:Integer}, intvals: {16,} %value_phi9.6.4 = load i64, i64 addrspace(13)* %102, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %103 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.4, !dbg !129: {[-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: {} %iv.next.7.4 = or i64 %25, 40, !dbg !125: {[-1]:Integer}, intvals: {} %104 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.4, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.7.4 = load i64, i64 addrspace(13)* %104, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %105 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.4, !dbg !129: {[-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: {} %25 = shl nuw i64 %iv1, 6, !dbg !125: {[-1]:Integer}, intvals: {0,} %24 = shl i64 %iv1, 3, !dbg !125: {[-1]:Integer}, intvals: {0,} %iv.next3 = add nuw nsw i64 %iv, 1, !dbg !125: {[-1]:Integer}, intvals: {1,} %112 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.5, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.3.5 = load i64, i64 addrspace(13)* %112, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %113 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.5, !dbg !129: {[-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: {} %iv.next.4.5 = or i64 %25, 45, !dbg !125: {[-1]:Integer}, intvals: {} %114 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.5, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.4.5 = load i64, i64 addrspace(13)* %114, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %169 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.epil, !dbg !129: {[-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: {} %iv.next.7.epil = add nuw nsw i64 %155, 8, !dbg !125: {[-1]:Integer}, intvals: {8,} %170 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.epil, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.7.epil = load i64, i64 addrspace(13)* %170, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %171 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.epil, !dbg !129: {[-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: {} %niter.next.7 = add i64 %24, 8, !dbg !116: {[-1]:Integer}, intvals: {8,} %niter.ncmp.727 = icmp eq i64 %niter.next.7, %unroll_iter12, !dbg !116: {[-1]:Integer}, intvals: {} %iv4 = phi i64 [ 0, %L62.epil.preheader ], [ %iv.next5, %L62.epil ]: {[-1]:Integer}, intvals: {0,} %iv.next.epil7 = or i64 %155, 1, !dbg !125: {[-1]:Integer}, intvals: {} i64 -2: {[-1]:Integer}, intvals: {-2,} %iv.next5 = add nuw nsw i64 %iv4, 1, !dbg !125: {[-1]:Integer}, intvals: {1,} %epil.iter9.cmp.not = icmp eq i64 %iv.next3, %xtraiter4, !dbg !116: {[-1]:Integer}, intvals: {} %iv.unr = phi i64 [ 0, %L62.preheader ], [ %iv.next.7.lcssa.ph, %L68.loopexit.unr-lcssa.loopexit.unr-lcssa ], [ %iv.next.7.epil, %L68.loopexit.unr-lcssa.loopexit ]: {[-1]:Integer}, intvals: {0,8,} %lcmp.mod.not = icmp eq i64 %xtraiter, 0, !dbg !116: {[-1]:Integer}, intvals: {} i64 10: {[-1]:Integer}, intvals: {10,} %iv.next.6.3 = or i64 %25, 31, !dbg !125: {[-1]:Integer}, intvals: {} %86 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.3, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.6.3 = load i64, i64 addrspace(13)* %86, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %87 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.3, !dbg !129: {[-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: {} %iv.next.7.3 = or i64 %25, 32, !dbg !125: {[-1]:Integer}, intvals: {} %88 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.3, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.7.3 = load i64, i64 addrspace(13)* %88, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %156 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.epil7, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.epil8 = load i64, i64 addrspace(13)* %156, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %157 = getelementptr inbounds i64, i64* %13, i64 %155, !dbg !129: {[-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: {} %iv.next.1.epil = or i64 %155, 2, !dbg !125: {[-1]:Integer}, intvals: {} %158 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.epil, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.1.epil = load i64, i64 addrspace(13)* %158, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %159 = getelementptr inbounds i64, i64* %13, i64 %iv.next.epil7, !dbg !129: {[-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: {} %118 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.5, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %119 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.5, !dbg !129: {[-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: {} %iv.next.7.5 = or i64 %25, 48, !dbg !125: {[-1]:Integer}, intvals: {} %120 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.5, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.7.5 = load i64, i64 addrspace(13)* %120, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %121 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.5, !dbg !129: {[-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: {} i64 7: {[-1]:Integer}, intvals: {7,} %exitcond.not49 = icmp eq i64 %arraylen3, 1, !dbg !112: {[-1]:Integer}, intvals: {} %4 = getelementptr inbounds i64*, i64** %ptls_load2930, i64 2: {[-1]:Pointer}, intvals: {} %getfield_addr = getelementptr inbounds { {} addrspace(10)* }, { {} addrspace(10)* } addrspace(11)* %1, i64 0, i32 0, !dbg !34: {[-1]:Pointer, [-1,-1]:Pointer, [-1,-1,0]:Pointer, [-1,-1,0,-1]:Float@double, [-1,-1,8]:Integer, [-1,-1,9]:Integer, [-1,-1,10]:Integer, [-1,-1,11]:Integer, [-1,-1,12]:Integer, [-1,-1,13]:Integer, [-1,-1,14]:Integer, [-1,-1,15]:Integer, [-1,-1,16]:Integer, [-1,-1,17]:Integer, [-1,-1,18]:Integer, [-1,-1,19]:Integer, [-1,-1,20]:Integer, [-1,-1,21]:Integer, [-1,-1,22]:Integer, [-1,-1,23]:Integer, [-1,-1,24]:Integer, [-1,-1,25]:Integer, [-1,-1,26]:Integer, [-1,-1,27]:Integer, [-1,-1,28]:Integer, [-1,-1,29]:Integer, [-1,-1,30]:Integer, [-1,-1,31]:Integer, [-1,-1,32]:Integer, [-1,-1,33]:Integer, [-1,-1,34]:Integer, [-1,-1,35]:Integer, [-1,-1,36]:Integer, [-1,-1,37]:Integer, [-1,-1,38]:Integer, [-1,-1,39]:Integer}, intvals: {} %12 = call noalias nonnull i8* @malloc(i64 %11) #15, !dbg !116: {[-1]:Pointer}, intvals: {} %value_phi944 = load i64, i64 addrspace(13)* %arrayptr532, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %value_phi9.2.2 = load i64, i64 addrspace(13)* %62, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %63 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.2, !dbg !129: {[-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: {} %iv.next.3.2 = or i64 %25, 20, !dbg !125: {[-1]:Integer}, intvals: {} %64 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.2, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.3.2 = load i64, i64 addrspace(13)* %64, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %65 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.2, !dbg !129: {[-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: {} %29 = getelementptr inbounds i64, i64* %13, i64 %iv.next, !dbg !129: {[-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: {} %iv.next.2 = or i64 %25, 3, !dbg !125: {[-1]:Integer}, intvals: {} %30 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %31 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1, !dbg !129: {[-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: {} %iv.next.3 = or i64 %25, 4, !dbg !125: {[-1]:Integer}, intvals: {} %32 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.3 = load i64, i64 addrspace(13)* %32, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %iv.next.epil = add nuw nsw i64 %172, 1, !dbg !125: {[-1]:Integer}, intvals: {1,9,} %173 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.epil, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.epil = load i64, i64 addrspace(13)* %173, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %174 = getelementptr inbounds i64, i64* %13, i64 %172, !dbg !129: {[-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: {} %epil.iter.cmp.not = icmp eq i64 %iv.next5, %xtraiter, !dbg !116: {[-1]:Integer}, intvals: {} %2 = call {}*** @julia.get_pgcstack() #15: {}, intvals: {} %arraylen = load i64, i64 addrspace(11)* %arraylen_ptr, align 8, !dbg !59, !tbaa !65, !range !68, !alias.scope !69, !noalias !72: {[-1]:Integer}, intvals: {} %154 = shl nuw nsw i64 %iv, 3, !dbg !125: {[-1]:Integer}, intvals: {0,} %155 = add nuw nsw i64 %iv.unr10, %154, !dbg !125: {[-1]:Integer}, intvals: {0,} %172 = add nuw nsw i64 %iv.unr, %iv4, !dbg !125: {[-1]:Integer}, intvals: {0,8,} %box = call noalias nonnull dereferenceable(8) "enzyme_type"="{[-1]:Pointer, [-1,-1]:Float@double}" {} addrspace(10)* @julia.gc_alloc_obj({}** nonnull %current_task1, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511632845536 to {}*) to {} addrspace(10)*)) #16, !dbg !77: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {} %175 = insertvalue { i64, i64*, double, i64 } undef, i64 %.sroa.0.0, 0, !dbg !117: {[0]:Integer, [1]:Integer, [2]:Integer, [3]:Integer, [4]:Integer, [5]:Integer, [6]:Integer, [7]:Integer, [8]:Anything, [9]:Anything, [10]:Anything, [11]:Anything, [12]:Anything, [13]:Anything, [14]:Anything, [15]:Anything, [16]:Anything, [17]:Anything, [18]:Anything, [19]:Anything, [20]:Anything, [21]:Anything, [22]:Anything, [23]:Anything, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything}, intvals: {} %176 = insertvalue { i64, i64*, double, i64 } %175, i64* %.sroa.2.0, 1, !dbg !117: {[0]:Integer, [1]:Integer, [2]:Integer, [3]:Integer, [4]:Integer, [5]:Integer, [6]:Integer, [7]:Integer, [8]:Pointer, [16]:Anything, [17]:Anything, [18]:Anything, [19]:Anything, [20]:Anything, [21]:Anything, [22]:Anything, [23]:Anything, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything}, intvals: {} %177 = insertvalue { i64, i64*, double, i64 } %176, double %arrayref, 2, !dbg !117: {[0]:Integer, [1]:Integer, [2]:Integer, [3]:Integer, [4]:Integer, [5]:Integer, [6]:Integer, [7]:Integer, [8]:Pointer, [16]:Float@double, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything}, intvals: {} %178 = insertvalue { i64, i64*, double, i64 } %177, i64 %arraylen3, 3, !dbg !117: {[-1]:Float@double}, intvals: {} %49 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.1, !dbg !129: {[-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: {} %iv.next.4.1 = or i64 %25, 13, !dbg !125: {[-1]:Integer}, intvals: {} %50 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.1, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.4.1 = load i64, i64 addrspace(13)* %50, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %51 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.1, !dbg !129: {[-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: {} %iv.next.5.1 = or i64 %25, 14, !dbg !125: {[-1]:Integer}, intvals: {} %iv.next.521 = or i64 %25, 41, !dbg !125: {[-1]:Integer}, intvals: {} %106 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.521, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.522 = load i64, i64 addrspace(13)* %106, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %107 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.4, !dbg !129: {[-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: {} %iv.next.1.5 = or i64 %25, 42, !dbg !125: {[-1]:Integer}, intvals: {} %108 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.5, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.1.5 = load i64, i64 addrspace(13)* %108, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} i64 6: {[-1]:Integer}, intvals: {6,} i64 12: {[-1]:Integer}, intvals: {12,} i64 5: {[-1]:Integer}, intvals: {5,} i64 41: {[-1]:Integer}, intvals: {41,} i64 42: {[-1]:Integer}, intvals: {42,} %iv.next.2.epil = or i64 %155, 3, !dbg !125: {[-1]:Integer}, intvals: {} %160 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.epil, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.2.epil = load i64, i64 addrspace(13)* %160, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %161 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.epil, !dbg !129: {[-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: {} %iv.next.3.epil = or i64 %155, 4, !dbg !125: {[-1]:Integer}, intvals: {} %162 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.3.epil, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.3.epil = load i64, i64 addrspace(13)* %162, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %163 = getelementptr inbounds i64, i64* %13, i64 %iv.next.2.epil, !dbg !129: {[-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: {} %iv.next.4.epil = or i64 %155, 5, !dbg !125: {[-1]:Integer}, intvals: {} %164 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.epil, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.4.epil = load i64, i64 addrspace(13)* %164, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %165 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.epil, !dbg !129: {[-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: {} i64 49: {[-1]:Integer}, intvals: {49,} %134 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.6.6, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.6.6 = load i64, i64 addrspace(13)* %134, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %135 = getelementptr inbounds i64, i64* %13, i64 %iv.next.5.6, !dbg !129: {[-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: {} %iv.next.7.6 = or i64 %25, 56, !dbg !125: {[-1]:Integer}, intvals: {} %136 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.6, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.7.6 = load i64, i64 addrspace(13)* %136, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %137 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.6, !dbg !129: {[-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: {} %27 = getelementptr inbounds i64, i64* %13, i64 %25, !dbg !129: {[-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: {} %iv.next.1 = or i64 %25, 2, !dbg !125: {[-1]:Integer}, intvals: {} %28 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} i64 3: {[-1]:Integer}, intvals: {3,} %iv.next.7.1 = or i64 %25, 16, !dbg !125: {[-1]:Integer}, intvals: {} %56 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.7.1, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.7.1 = load i64, i64 addrspace(13)* %56, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %57 = getelementptr inbounds i64, i64* %13, i64 %iv.next.6.1, !dbg !129: {[-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: {} %iv.next.215 = or i64 %25, 17, !dbg !125: {[-1]:Integer}, intvals: {} %58 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.215, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.216 = load i64, i64 addrspace(13)* %58, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} i64 8: {[-1]:Integer}, intvals: {8,} i64 63: {[-1]:Integer}, intvals: {63,} i64 58: {[-1]:Integer}, intvals: {58,} i64 59: {[-1]:Integer}, intvals: {59,} i64 60: {[-1]:Integer}, intvals: {60,} %124 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.1.6, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.1.6 = load i64, i64 addrspace(13)* %124, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %125 = getelementptr inbounds i64, i64* %13, i64 %iv.next.623, !dbg !129: {[-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: {} %iv.next.2.6 = or i64 %25, 51, !dbg !125: {[-1]:Integer}, intvals: {} %126 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.2.6, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.2.6 = load i64, i64 addrspace(13)* %126, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %127 = getelementptr inbounds i64, i64* %13, i64 %iv.next.1.6, !dbg !129: {[-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: {} %iv.next.623 = or i64 %25, 49, !dbg !125: {[-1]:Integer}, intvals: {} %122 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.623, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.624 = load i64, i64 addrspace(13)* %122, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %123 = getelementptr inbounds i64, i64* %13, i64 %iv.next.7.5, !dbg !129: {[-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: {} %iv.next.1.6 = or i64 %25, 50, !dbg !125: {[-1]:Integer}, intvals: {} %iv.next.4.2 = or i64 %25, 21, !dbg !125: {[-1]:Integer}, intvals: {} %66 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.4.2, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.4.2 = load i64, i64 addrspace(13)* %66, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %67 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.2, !dbg !129: {[-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: {} %iv.next.5.2 = or i64 %25, 22, !dbg !125: {[-1]:Integer}, intvals: {} %68 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.2, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.5.2 = load i64, i64 addrspace(13)* %68, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} i64 43: {[-1]:Integer}, intvals: {43,} i64 44: {[-1]:Integer}, intvals: {44,} i64 24: {[-1]:Integer}, intvals: {24,} i64 45: {[-1]:Integer}, intvals: {45,} i64 46: {[-1]:Integer}, intvals: {46,} i64 -8: {[-1]:Integer}, intvals: {-8,} %10 = shl i64 %arraylen3, 3, !dbg !116: {[-1]:Integer}, intvals: {} %11 = add i64 %10, -8, !dbg !116: {[-1]:Integer}, intvals: {} %13 = bitcast i8* %12 to i64*, !dbg !116: {[-1]:Pointer}, intvals: {} %14 = add nuw i64 %arraylen3, 7, !dbg !116: {[-1]:Integer}, intvals: {} %15 = add nsw i64 %arraylen3, -2, !dbg !116: {[-1]:Integer}, intvals: {} %xtraiter = and i64 %14, 7, !dbg !116: {[-1]:Integer}, intvals: {} %16 = icmp ult i64 %15, 7, !dbg !116: {[-1]:Integer}, intvals: {} %22 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)*, {} addrspace(10)*, {} addrspace(10)*, ...) @julia.call2({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)* noundef nonnull @ijl_invoke, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511603774560 to {}*) to {} addrspace(10)*), {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511562750992 to {}*) to {} addrspace(10)*), {} addrspace(10)* nofree nonnull %box, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 132509245371280 to {}*) to {} addrspace(10)*)) #17, !dbg !77: {[-1]:Pointer}, intvals: {} %147 = getelementptr inbounds i64, i64* %13, i64 %iv.next.3.7, !dbg !129: {[-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: {} %iv.next.5.7 = or i64 %25, 62, !dbg !125: {[-1]:Integer}, intvals: {} %148 = getelementptr inbounds i64, i64 addrspace(13)* %arrayptr532, i64 %iv.next.5.7, !dbg !128: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi9.5.7 = load i64, i64 addrspace(13)* %148, align 8, !dbg !103, !tbaa !104, !alias.scope !107, !noalias !110: {[-1]:Integer}, intvals: {} %149 = getelementptr inbounds i64, i64* %13, i64 %iv.next.4.7, !dbg !129: {[-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: {} %iv.next.6.7 = or i64 %25, 63, !dbg !125: {[-1]:Integer}, intvals: {} %ptls_field28 = getelementptr inbounds {}**, {}*** %2, i64 2: {}, intvals: {} i64 64: {[-1]:Integer}, intvals: {64,} i64 1: {[-1]:Integer}, intvals: {1,} i64 18: {[-1]:Integer}, intvals: {18,} i64 19: {[-1]:Integer}, intvals: {19,} i64 38: {[-1]:Integer}, intvals: {38,} i64 39: {[-1]:Integer}, intvals: {39,} </analysis> Illegal updateAnalysis prev:{[0]:Integer, [1]:Integer, [2]:Integer, [3]:Integer, [4]:Integer, [5]:Integer, [6]:Integer, [7]:Integer, [8]:Pointer, [16]:Float@double, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything} new: {[0]:Float@double, [1]:Float@double, [2]:Float@double, [3]:Float@double, [4]:Float@double, [5]:Float@double, [6]:Float@double, [7]:Float@double, [8]:Float@double, [9]:Float@double, [10]:Float@double, [11]:Float@double, [12]:Float@double, [13]:Float@double, [14]:Float@double, [15]:Float@double, [16]:Float@double, [17]:Float@double, [18]:Float@double, [19]:Float@double, [20]:Float@double, [21]:Float@double, [22]:Float@double, [23]:Float@double} val: %177 = insertvalue { i64, i64*, double, i64 } %176, double %arrayref, 2, !dbg !117 origin= %178 = insertvalue { i64, i64*, double, i64 } %177, i64 %arraylen3, 3, !dbg !117 MethodInstance for logp(::Vector{Int64}, ::BiasedCoin, ::ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(ρ = 1,)}}}) Caused by: Stacktrace: [1] logp @ ./REPL[10]:6 Stacktrace: [1] julia_error(cstr::Cstring, val::Ptr{…}, errtype::Enzyme.API.ErrorType, data::Ptr{…}, data2::Ptr{…}, B::Ptr{…}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:1711 [2] EnzymeCreateForwardDiff(logic::Enzyme.Logic, todiff::LLVM.Function, retType::Enzyme.API.CDIFFE_TYPE, constant_args::Vector{…}, TA::Enzyme.TypeAnalysis, returnValue::Bool, mode::Enzyme.API.CDerivativeMode, width::Int64, additionalArg::Ptr{…}, typeInfo::Enzyme.FnTypeInfo, uncacheable_args::Vector{…}) @ Enzyme.API ~/.julia/packages/Enzyme/F71IJ/src/api.jl:168 [3] enzyme!(job::GPUCompiler.CompilerJob{…}, mod::LLVM.Module, primalf::LLVM.Function, TT::Type, mode::Enzyme.API.CDerivativeMode, width::Int64, parallel::Bool, actualRetType::Type, wrap::Bool, modifiedBetween::NTuple{…}, returnPrimal::Bool, expectedTapeType::Type, loweredArgs::Set{…}, boxedArgs::Set{…}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:3304 [4] codegen(output::Symbol, job::GPUCompiler.CompilerJob{…}; libraries::Bool, deferred_codegen::Bool, optimize::Bool, toplevel::Bool, strip::Bool, validate::Bool, only_entry::Bool, parent_job::Nothing) @ Enzyme.Compiler ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:5250 [5] codegen @ ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:4592 [inlined] [6] _thunk(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, postopt::Bool) @ Enzyme.Compiler ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:5968 [7] _thunk @ ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:5968 [inlined] [8] cached_compilation @ ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:6006 [inlined] [9] (::Enzyme.Compiler.var"#1220#1221"{…})(ctx::LLVM.Context) @ Enzyme.Compiler ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:6073 [10] JuliaContext(f::Enzyme.Compiler.var"#1220#1221"{…}; kwargs::@Kwargs{}) @ GPUCompiler ~/.julia/packages/GPUCompiler/nWT2N/src/driver.jl:52 [11] JuliaContext(f::Function) @ GPUCompiler ~/.julia/packages/GPUCompiler/nWT2N/src/driver.jl:42 [12] #s1957#1219 @ ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:6024 [inlined] [13] @ Enzyme.Compiler ./none:0 [14] (::Core.GeneratedFunctionStub)(::UInt64, ::LineNumberNode, ::Any, ::Vararg{Any}) @ Core ./boot.jl:602 [15] autodiff @ ~/.julia/packages/Enzyme/F71IJ/src/Enzyme.jl:397 [inlined] [16] autodiff @ ~/.julia/packages/Enzyme/F71IJ/src/Enzyme.jl:315 [inlined] [17] autodiff @ ~/.julia/packages/Enzyme/F71IJ/src/Enzyme.jl:300 [inlined] [18] _hess(h::HessLogP{Const{BiasedCoin}}) @ Main ./REPL[22]:2 [19] (::HessLogP{Const{BiasedCoin}})(ddx::Matrix{Float64}, x::ComponentVector{Float64, Vector{Float64}, Tuple{Axis{…}}}) @ Main ./REPL[32]:4 [20] top-level scope @ REPL[37]:1 Some type information was truncated. Use `show(err)` to see complete types.
julia> m = HabituatingBiasedCoin(); julia> p = parameters(m); julia> h! = HessLogP(rand(0:1, 10), m); julia> H = zeros(length(p), length(p)); julia> h!(H, p) ERROR: Enzyme compilation failed due to illegal type analysis. Current scope: ; Function Attrs: mustprogress willreturn define private fastcc "enzyme_type"="{[-1]:Float@double}" { double*, i64*, double*, double, double, i64 } @preprocess_augmented_julia_logp_5535({} addrspace(10)* nocapture nonnull readonly align 16 dereferenceable(40) "enzyme_inactive" "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}" "enzymejl_parmtype"="132511560660096" "enzymejl_parmtype_ref"="2" %0, [1 x {} addrspace(10)*] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(8) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double}" "enzymejl_parmtype"="132509954024144" "enzymejl_parmtype_ref"="1" %1, { {} addrspace(10)* } addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(8) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@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}" "enzymejl_parmtype"="132509965944528" "enzymejl_parmtype_ref"="1" %2) unnamed_addr #4 !dbg !734 { top: %3 = call {}*** @julia.get_pgcstack() #16 %ptls_field48 = getelementptr inbounds {}**, {}*** %3, i64 2 %4 = bitcast {}*** %ptls_field48 to i64*** %ptls_load4950 = load i64**, i64*** %4, align 8, !tbaa !49, !alias.scope !735, !noalias !738 %5 = getelementptr inbounds i64*, i64** %ptls_load4950, i64 2 %safepoint = load i64*, i64** %5, align 8, !tbaa !58, !alias.scope !740, !noalias !743 fence syncscope("singlethread") seq_cst call void @julia.safepoint(i64* %safepoint) #16, !dbg !745 fence syncscope("singlethread") seq_cst %getfield_addr = getelementptr inbounds { {} addrspace(10)* }, { {} addrspace(10)* } addrspace(11)* %2, i64 0, i32 0, !dbg !746 %getfield = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %getfield_addr unordered, align 8, !dbg !746, !tbaa !58, !alias.scope !752, !noalias !755, !nonnull !17, !dereferenceable !159, !align !160 %6 = addrspacecast {} addrspace(10)* %getfield to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !757 %arraylen_ptr = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %6, i64 0, i32 1, !dbg !757 %arraylen = load i64, i64 addrspace(11)* %arraylen_ptr, align 8, !dbg !757, !tbaa !82, !range !85, !alias.scope !759, !noalias !762 %inbounds.not = icmp eq i64 %arraylen, 0, !dbg !757 br i1 %inbounds.not, label %oob, label %idxend, !dbg !757 L23: ; preds = %idxend11 %7 = fneg double %arrayref, !dbg !764 %8 = call double @julia_exp_5556(double %7) #17, !dbg !765 %9 = fadd double %8, 1.000000e+00, !dbg !767 %10 = fdiv double 1.000000e+00, %9, !dbg !769 %11 = fcmp ult double %10, 0.000000e+00, !dbg !771 %12 = fcmp ugt double %10, 1.000000e+00, !dbg !772 %13 = or i1 %11, %12, !dbg !772 br i1 %13, label %L42, label %L48.lr.ph, !dbg !772 L48.lr.ph: ; preds = %L23 %14 = shl nuw i64 %arraylen16, 3, !dbg !772 %15 = call noalias nonnull i8* @malloc(i64 %14) #16, !dbg !772 %16 = bitcast i8* %15 to double*, !dbg !772 %17 = call noalias nonnull i8* @malloc(i64 %14) #16, !dbg !772 %18 = bitcast i8* %17 to i64*, !dbg !772 %19 = call noalias nonnull i8* @malloc(i64 %14) #16, !dbg !772 %20 = bitcast i8* %19 to double*, !dbg !772 %21 = bitcast {} addrspace(10)* %0 to i64 addrspace(13)* addrspace(10)* %22 = addrspacecast i64 addrspace(13)* addrspace(10)* %21 to i8 addrspace(13)* addrspace(11)* %23 = load i8 addrspace(13)*, i8 addrspace(13)* addrspace(11)* %22, align 16, !alias.scope !777, !noalias !784 br label %L48, !dbg !772 L42.loopexit: ; preds = %L80 br label %L42 L42: ; preds = %L42.loopexit, %L23 %.lcssa = phi double [ %10, %L23 ], [ %42, %L42.loopexit ], !dbg !769 %current_task147 = getelementptr inbounds {}**, {}*** %3, i64 -14 %current_task1 = bitcast {}*** %current_task147 to {}** %box = call noalias nonnull dereferenceable(8) "enzyme_type"="{[-1]:Pointer, [-1,-1]:Float@double}" {} addrspace(10)* @julia.gc_alloc_obj({}** nonnull %current_task1, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511632845536 to {}*) to {} addrspace(10)*)) #18, !dbg !772 %24 = bitcast {} addrspace(10)* %box to double addrspace(10)*, !dbg !772 store double %.lcssa, double addrspace(10)* %24, align 8, !dbg !772, !tbaa !207, !alias.scope !210, !noalias !786 %25 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)*, {} addrspace(10)*, {} addrspace(10)*, ...) @julia.call2({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)* noundef nonnull @ijl_invoke, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511603774560 to {}*) to {} addrspace(10)*), {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511562750992 to {}*) to {} addrspace(10)*), {} addrspace(10)* nofree nonnull %box, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 132509245371280 to {}*) to {} addrspace(10)*)) #19, !dbg !772 %26 = addrspacecast {} addrspace(10)* %25 to {} addrspace(12)*, !dbg !772 call void @ijl_throw({} addrspace(12)* %26) #20, !dbg !772 unreachable, !dbg !772 L48: ; preds = %L80, %L48.lr.ph %iv1 = phi i64 [ %iv.next, %L80 ], [ 0, %L48.lr.ph ] %27 = phi double [ %42, %L80 ], [ %10, %L48.lr.ph ] %28 = phi double [ %35, %L80 ], [ %arrayref, %L48.lr.ph ] %iv.next = add nuw nsw i64 %iv1, 1, !dbg !789 %29 = shl i64 %iv1, 3, !dbg !789 %30 = getelementptr i8, i8 addrspace(13)* %23, i64 %29, !dbg !789 %31 = bitcast i8 addrspace(13)* %30 to i64 addrspace(13)*, !dbg !789 %value_phi22 = load i64, i64 addrspace(13)* %31, align 8, !dbg !789, !tbaa !117, !alias.scope !790, !noalias !793 %32 = sitofp i64 %value_phi22 to double, !dbg !795 %33 = fsub double %32, %27, !dbg !801 %34 = fmul double %arrayref14, %33, !dbg !802 %35 = fadd double %28, %34, !dbg !803 store double %35, double addrspace(11)* %54, align 8, !dbg !804, !tbaa !242, !alias.scope !806, !noalias !809 %36 = getelementptr inbounds i64, i64* %18, i64 %iv1, !dbg !813 store i64 %value_phi22, i64* %36, align 8, !dbg !813, !tbaa !117, !noalias !817, !invariant.group !818 %37 = getelementptr inbounds double, double* %20, i64 %iv1, !dbg !813 store double %35, double* %37, align 8, !dbg !813, !noalias !817, !invariant.group !819 %38 = getelementptr inbounds double, double* %16, i64 %iv1, !dbg !813 store double %27, double* %38, align 8, !dbg !813, !noalias !817, !invariant.group !820 %exitcond.not = icmp eq i64 %iv.next, %arraylen16, !dbg !813 br i1 %exitcond.not, label %L86.loopexit, label %L80, !dbg !815 L80: ; preds = %L48 %39 = fneg double %35, !dbg !764 %40 = call double @julia_exp_5556(double %39) #21, !dbg !765 %41 = fadd double %40, 1.000000e+00, !dbg !767 %42 = fdiv double 1.000000e+00, %41, !dbg !769 %43 = fcmp ult double %42, 0.000000e+00, !dbg !771 %44 = fcmp ugt double %42, 1.000000e+00, !dbg !772 %45 = or i1 %43, %44, !dbg !772 br i1 %45, label %L42.loopexit, label %L48, !dbg !772 L86.loopexit: ; preds = %L48 br label %L86, !dbg !816 L86: ; preds = %L86.loopexit, %idxend11 %.sroa.0.0 = phi double* [ undef, %idxend11 ], [ %16, %L86.loopexit ] %.sroa.2.0 = phi i64* [ undef, %idxend11 ], [ %18, %L86.loopexit ] %.sroa.4.0 = phi double* [ undef, %idxend11 ], [ %20, %L86.loopexit ] %46 = insertvalue { double*, i64*, double*, double, double, i64 } undef, double* %.sroa.0.0, 0, !dbg !816 %47 = insertvalue { double*, i64*, double*, double, double, i64 } %46, i64* %.sroa.2.0, 1, !dbg !816 %48 = insertvalue { double*, i64*, double*, double, double, i64 } %47, double* %.sroa.4.0, 2, !dbg !816 %49 = insertvalue { double*, i64*, double*, double, double, i64 } %48, double %arrayref, 3, !dbg !816 %50 = insertvalue { double*, i64*, double*, double, double, i64 } %49, double %arrayref14, 4, !dbg !816 %51 = insertvalue { double*, i64*, double*, double, double, i64 } %50, i64 %arraylen16, 5, !dbg !816 ret { double*, i64*, double*, double, double, i64 } %51, !dbg !816 oob: ; preds = %top %errorbox = alloca i64, align 8, !dbg !757 store i64 1, i64* %errorbox, align 8, !dbg !757, !noalias !821 %52 = addrspacecast {} addrspace(10)* %getfield to {} addrspace(12)*, !dbg !757 call void @ijl_bounds_error_ints({} addrspace(12)* noundef %52, i64* noundef nonnull align 8 %errorbox, i64 noundef 1) #20, !dbg !757 unreachable, !dbg !757 idxend: ; preds = %top %53 = addrspacecast {} addrspace(10)* %getfield to double addrspace(13)* addrspace(11)*, !dbg !757 %arrayptr51 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %53, align 16, !dbg !757, !tbaa !113, !alias.scope !822, !noalias !762, !nonnull !17 %arrayref = load double, double addrspace(13)* %arrayptr51, align 8, !dbg !757, !tbaa !117, !alias.scope !823, !noalias !826 %getfield_addr2 = getelementptr inbounds [1 x {} addrspace(10)*], [1 x {} addrspace(10)*] addrspace(11)* %1, i64 0, i64 0, !dbg !828 %getfield3 = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %getfield_addr2 unordered, align 8, !dbg !828, !tbaa !58, !alias.scope !829, !noalias !832, !nonnull !17, !dereferenceable !276, !align !276 %54 = addrspacecast {} addrspace(10)* %getfield3 to double addrspace(11)*, !dbg !834 store double %arrayref, double addrspace(11)* %54, align 8, !dbg !834, !tbaa !242, !alias.scope !806, !noalias !809 %inbounds8.not = icmp eq i64 %arraylen, 1, !dbg !836 br i1 %inbounds8.not, label %oob9, label %idxend11, !dbg !836 oob9: ; preds = %idxend %errorbox10 = alloca i64, align 8, !dbg !836 store i64 2, i64* %errorbox10, align 8, !dbg !836, !noalias !821 %55 = addrspacecast {} addrspace(10)* %getfield to {} addrspace(12)*, !dbg !836 call void @ijl_bounds_error_ints({} addrspace(12)* noundef %55, i64* noundef nonnull align 8 %errorbox10, i64 noundef 1) #20, !dbg !836 unreachable, !dbg !836 idxend11: ; preds = %idxend %56 = getelementptr inbounds double, double addrspace(13)* %arrayptr51, i64 1, !dbg !836 %arrayref14 = load double, double addrspace(13)* %56, align 8, !dbg !836, !tbaa !117, !alias.scope !823, !noalias !826 %57 = addrspacecast {} addrspace(10)* %0 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !842 %arraylen_ptr15 = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %57, i64 0, i32 1, !dbg !842 %arraylen16 = load i64, i64 addrspace(11)* %arraylen_ptr15, align 8, !dbg !842, !tbaa !82, !range !85, !alias.scope !846, !noalias !849 %.not = icmp eq i64 %arraylen16, 0, !dbg !851 br i1 %.not, label %L86, label %L23, !dbg !843 } Type analysis state: <analysis> i64 1: {[-1]:Integer}, intvals: {1,} %4 = bitcast {}*** %ptls_field48 to i64***: {[-1]:Pointer}, intvals: {} %ptls_load4950 = load i64**, i64*** %4, align 8, !tbaa !18, !alias.scope !22, !noalias !25: {}, intvals: {} %safepoint = load i64*, i64** %5, align 8, !tbaa !27, !alias.scope !29, !noalias !32: {}, intvals: {} %getfield = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %getfield_addr unordered, align 8, !dbg !35, !tbaa !27, !alias.scope !50, !noalias !55, !nonnull !17, !dereferenceable !61, !align !62: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {} %6 = addrspacecast {} addrspace(10)* %getfield to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !63: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {} %arraylen = load i64, i64 addrspace(11)* %arraylen_ptr, align 8, !dbg !63, !tbaa !69, !range !72, !alias.scope !73, !noalias !76: {[-1]:Integer}, intvals: {} i64 3: {[-1]:Integer}, intvals: {3,} %8 = call double @julia_exp_5556(double %7) #17, !dbg !81: {[-1]:Float@double}, intvals: {} %25 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)*, {} addrspace(10)*, {} addrspace(10)*, ...) @julia.call2({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)* noundef nonnull @ijl_invoke, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511603774560 to {}*) to {} addrspace(10)*), {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511562750992 to {}*) to {} addrspace(10)*), {} addrspace(10)* nofree nonnull %box, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 132509245371280 to {}*) to {} addrspace(10)*)) #19, !dbg !96: {[-1]:Pointer}, intvals: {} %17 = call noalias nonnull i8* @malloc(i64 %14) #16, !dbg !96: {[-1]:Pointer}, intvals: {} double 1.000000e+00: {[-1]:Float@double}, intvals: {} double 0.000000e+00: {[-1]:Anything}, intvals: {} double* undef: {[-1]:Anything}, intvals: {} { double*, i64*, double*, double, double, i64 } undef: {[-1]:Anything}, intvals: {} i64* undef: {[-1]:Anything}, intvals: {} %12 = fcmp ugt double %10, 1.000000e+00, !dbg !96: {[-1]:Integer}, intvals: {} %13 = or i1 %11, %12, !dbg !96: {[-1]:Integer}, intvals: {} %14 = shl nuw i64 %arraylen16, 3, !dbg !96: {[-1]:Integer}, intvals: {} %16 = bitcast i8* %15 to double*, !dbg !96: {[-1]:Pointer}, intvals: {} %18 = bitcast i8* %17 to i64*, !dbg !96: {[-1]:Pointer}, intvals: {} %19 = call noalias nonnull i8* @malloc(i64 %14) #16, !dbg !96: {[-1]:Pointer}, intvals: {} %20 = bitcast i8* %19 to double*, !dbg !96: {[-1]:Pointer}, intvals: {} %21 = bitcast {} addrspace(10)* %0 to i64 addrspace(13)* addrspace(10)*: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {} %22 = addrspacecast i64 addrspace(13)* addrspace(10)* %21 to i8 addrspace(13)* addrspace(11)*: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {} %23 = load i8 addrspace(13)*, i8 addrspace(13)* addrspace(11)* %22, align 16, !alias.scope !107, !noalias !114: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %46 = insertvalue { double*, i64*, double*, double, double, i64 } undef, double* %.sroa.0.0, 0, !dbg !170: {[0]:Pointer, [8]:Anything, [9]:Anything, [10]:Anything, [11]:Anything, [12]:Anything, [13]:Anything, [14]:Anything, [15]:Anything, [16]:Anything, [17]:Anything, [18]:Anything, [19]:Anything, [20]:Anything, [21]:Anything, [22]:Anything, [23]:Anything, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything, [32]:Anything, [33]:Anything, [34]:Anything, [35]:Anything, [36]:Anything, [37]:Anything, [38]:Anything, [39]:Anything, [40]:Anything, [41]:Anything, [42]:Anything, [43]:Anything, [44]:Anything, [45]:Anything, [46]:Anything, [47]:Anything}, intvals: {} %47 = insertvalue { double*, i64*, double*, double, double, i64 } %46, i64* %.sroa.2.0, 1, !dbg !170: {[0]:Pointer, [8]:Pointer, [16]:Anything, [17]:Anything, [18]:Anything, [19]:Anything, [20]:Anything, [21]:Anything, [22]:Anything, [23]:Anything, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything, [32]:Anything, [33]:Anything, [34]:Anything, [35]:Anything, [36]:Anything, [37]:Anything, [38]:Anything, [39]:Anything, [40]:Anything, [41]:Anything, [42]:Anything, [43]:Anything, [44]:Anything, [45]:Anything, [46]:Anything, [47]:Anything}, intvals: {} %27 = phi double [ %42, %L80 ], [ %10, %L48.lr.ph ]: {[-1]:Float@double}, intvals: {} %28 = phi double [ %35, %L80 ], [ %arrayref, %L48.lr.ph ]: {[-1]:Float@double}, intvals: {} %29 = shl i64 %iv1, 3, !dbg !124: {[-1]:Integer}, intvals: {0,} %30 = getelementptr i8, i8 addrspace(13)* %23, i64 %29, !dbg !124: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %31 = bitcast i8 addrspace(13)* %30 to i64 addrspace(13)*, !dbg !124: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {} %value_phi22 = load i64, i64 addrspace(13)* %31, align 8, !dbg !124, !tbaa !125, !alias.scope !127, !noalias !130: {[-1]:Integer}, intvals: {} %32 = sitofp i64 %value_phi22 to double, !dbg !132: {[-1]:Float@double}, intvals: {} %33 = fsub double %32, %27, !dbg !144: {[-1]:Float@double}, intvals: {} %34 = fmul double %arrayref14, %33, !dbg !145: {[-1]:Float@double}, intvals: {} %35 = fadd double %28, %34, !dbg !147: {[-1]:Float@double}, intvals: {} %36 = getelementptr inbounds i64, i64* %18, i64 %iv1, !dbg !163: {[-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: {} %37 = getelementptr inbounds double, double* %20, i64 %iv1, !dbg !163: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {} %38 = getelementptr inbounds double, double* %16, i64 %iv1, !dbg !163: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {} %exitcond.not = icmp eq i64 %iv.next, %arraylen16, !dbg !163: {[-1]:Integer}, intvals: {} %39 = fneg double %35, !dbg !78: {[-1]:Float@double}, intvals: {} %40 = call double @julia_exp_5556(double %39) #21, !dbg !81: {[-1]:Float@double}, intvals: {} %41 = fadd double %40, 1.000000e+00, !dbg !85: {[-1]:Float@double}, intvals: {} %42 = fdiv double 1.000000e+00, %41, !dbg !90: {[-1]:Float@double}, intvals: {} %43 = fcmp ult double %42, 0.000000e+00, !dbg !94: {[-1]:Integer}, intvals: {} %44 = fcmp ugt double %42, 1.000000e+00, !dbg !96: {[-1]:Integer}, intvals: {} %45 = or i1 %43, %44, !dbg !96: {[-1]:Integer}, intvals: {} %.sroa.0.0 = phi double* [ undef, %idxend11 ], [ %16, %L86.loopexit ]: {[-1]:Pointer}, intvals: {} %.sroa.2.0 = phi i64* [ undef, %idxend11 ], [ %18, %L86.loopexit ]: {[-1]:Pointer}, intvals: {} %.sroa.4.0 = phi double* [ undef, %idxend11 ], [ %20, %L86.loopexit ]: {[-1]:Pointer}, intvals: {} %48 = insertvalue { double*, i64*, double*, double, double, i64 } %47, double* %.sroa.4.0, 2, !dbg !170: {[0]:Pointer, [8]:Pointer, [16]:Pointer, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything, [32]:Anything, [33]:Anything, [34]:Anything, [35]:Anything, [36]:Anything, [37]:Anything, [38]:Anything, [39]:Anything, [40]:Anything, [41]:Anything, [42]:Anything, [43]:Anything, [44]:Anything, [45]:Anything, [46]:Anything, [47]:Anything}, intvals: {} %49 = insertvalue { double*, i64*, double*, double, double, i64 } %48, double %arrayref, 3, !dbg !170: {[0]:Pointer, [8]:Pointer, [16]:Pointer, [24]:Float@double, [32]:Anything, [33]:Anything, [34]:Anything, [35]:Anything, [36]:Anything, [37]:Anything, [38]:Anything, [39]:Anything, [40]:Anything, [41]:Anything, [42]:Anything, [43]:Anything, [44]:Anything, [45]:Anything, [46]:Anything, [47]:Anything}, intvals: {} %50 = insertvalue { double*, i64*, double*, double, double, i64 } %49, double %arrayref14, 4, !dbg !170: {[0]:Pointer, [8]:Pointer, [16]:Pointer, [24]:Float@double, [32]:Float@double, [40]:Anything, [41]:Anything, [42]:Anything, [43]:Anything, [44]:Anything, [45]:Anything, [46]:Anything, [47]:Anything}, intvals: {} %51 = insertvalue { double*, i64*, double*, double, double, i64 } %50, i64 %arraylen16, 5, !dbg !170: {[-1]:Float@double}, intvals: {} %53 = addrspacecast {} addrspace(10)* %getfield to double addrspace(13)* addrspace(11)*, !dbg !63: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {} %arrayptr51 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %53, align 16, !dbg !63, !tbaa !176, !alias.scope !178, !noalias !76, !nonnull !17: {[-1]:Pointer}, intvals: {} %arrayref = load double, double addrspace(13)* %arrayptr51, align 8, !dbg !63, !tbaa !125, !alias.scope !179, !noalias !182: {[-1]:Float@double}, intvals: {} %54 = addrspacecast {} addrspace(10)* %getfield3 to double addrspace(11)*, !dbg !192: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {} %arrayref14 = load double, double addrspace(13)* %56, align 8, !dbg !194, !tbaa !125, !alias.scope !179, !noalias !182: {[-1]:Float@double}, intvals: {} %arraylen_ptr15 = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %57, i64 0, i32 1, !dbg !200: {[-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: {} %arraylen16 = load i64, i64 addrspace(11)* %arraylen_ptr15, align 8, !dbg !200, !tbaa !69, !range !72, !alias.scope !205, !noalias !208: {[-1]:Integer}, intvals: {} %getfield_addr = getelementptr inbounds { {} addrspace(10)* }, { {} addrspace(10)* } addrspace(11)* %2, i64 0, i32 0, !dbg !35: {[-1]:Pointer, [-1,-1]:Pointer, [-1,-1,0]:Pointer, [-1,-1,0,-1]:Float@double, [-1,-1,8]:Integer, [-1,-1,9]:Integer, [-1,-1,10]:Integer, [-1,-1,11]:Integer, [-1,-1,12]:Integer, [-1,-1,13]:Integer, [-1,-1,14]:Integer, [-1,-1,15]:Integer, [-1,-1,16]:Integer, [-1,-1,17]:Integer, [-1,-1,18]:Integer, [-1,-1,19]:Integer, [-1,-1,20]:Integer, [-1,-1,21]:Integer, [-1,-1,22]:Integer, [-1,-1,23]:Integer, [-1,-1,24]:Integer, [-1,-1,25]:Integer, [-1,-1,26]:Integer, [-1,-1,27]:Integer, [-1,-1,28]:Integer, [-1,-1,29]:Integer, [-1,-1,30]:Integer, [-1,-1,31]:Integer, [-1,-1,32]:Integer, [-1,-1,33]:Integer, [-1,-1,34]:Integer, [-1,-1,35]:Integer, [-1,-1,36]:Integer, [-1,-1,37]:Integer, [-1,-1,38]:Integer, [-1,-1,39]:Integer}, intvals: {} %arraylen_ptr = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %6, i64 0, i32 1, !dbg !63: {[-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: {} %inbounds.not = icmp eq i64 %arraylen, 0, !dbg !63: {[-1]:Integer}, intvals: {} %11 = fcmp ult double %10, 0.000000e+00, !dbg !94: {[-1]:Integer}, intvals: {} %7 = fneg double %arrayref, !dbg !78: {[-1]:Float@double}, intvals: {} %iv.next = add nuw nsw i64 %iv1, 1, !dbg !124: {[-1]:Integer}, intvals: {1,} %9 = fadd double %8, 1.000000e+00, !dbg !85: {[-1]:Float@double}, intvals: {} %10 = fdiv double 1.000000e+00, %9, !dbg !90: {[-1]:Float@double}, intvals: {} %box = call noalias nonnull dereferenceable(8) "enzyme_type"="{[-1]:Pointer, [-1,-1]:Float@double}" {} addrspace(10)* @julia.gc_alloc_obj({}** nonnull %current_task1, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 132511632845536 to {}*) to {} addrspace(10)*)) #18, !dbg !96: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {} %iv1 = phi i64 [ %iv.next, %L80 ], [ 0, %L48.lr.ph ]: {[-1]:Integer}, intvals: {0,} {} addrspace(10)* %0: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {} [1 x {} addrspace(10)*] addrspace(11)* %1: {[-1]:Pointer, [-1,-1]:Pointer, [-1,-1,-1]:Float@double}, intvals: {} { {} addrspace(10)* } addrspace(11)* %2: {[-1]:Pointer, [-1,-1]:Pointer, [-1,-1,0]:Pointer, [-1,-1,0,-1]:Float@double, [-1,-1,8]:Integer, [-1,-1,9]:Integer, [-1,-1,10]:Integer, [-1,-1,11]:Integer, [-1,-1,12]:Integer, [-1,-1,13]:Integer, [-1,-1,14]:Integer, [-1,-1,15]:Integer, [-1,-1,16]:Integer, [-1,-1,17]:Integer, [-1,-1,18]:Integer, [-1,-1,19]:Integer, [-1,-1,20]:Integer, [-1,-1,21]:Integer, [-1,-1,22]:Integer, [-1,-1,23]:Integer, [-1,-1,24]:Integer, [-1,-1,25]:Integer, [-1,-1,26]:Integer, [-1,-1,27]:Integer, [-1,-1,28]:Integer, [-1,-1,29]:Integer, [-1,-1,30]:Integer, [-1,-1,31]:Integer, [-1,-1,32]:Integer, [-1,-1,33]:Integer, [-1,-1,34]:Integer, [-1,-1,35]:Integer, [-1,-1,36]:Integer, [-1,-1,37]:Integer, [-1,-1,38]:Integer, [-1,-1,39]:Integer}, intvals: {} %ptls_field48 = getelementptr inbounds {}**, {}*** %3, i64 2: {}, intvals: {} %15 = call noalias nonnull i8* @malloc(i64 %14) #16, !dbg !96: {[-1]:Pointer}, intvals: {} %3 = call {}*** @julia.get_pgcstack() #16: {}, intvals: {} i64 0: {[-1]:Anything}, intvals: {0,} %5 = getelementptr inbounds i64*, i64** %ptls_load4950, i64 2: {[-1]:Pointer}, intvals: {} </analysis> Illegal updateAnalysis prev:{[0]:Pointer, [8]:Pointer, [16]:Pointer, [24]:Float@double, [32]:Float@double, [40]:Anything, [41]:Anything, [42]:Anything, [43]:Anything, [44]:Anything, [45]:Anything, [46]:Anything, [47]:Anything} new: {[0]:Float@double, [1]:Float@double, [2]:Float@double, [3]:Float@double, [4]:Float@double, [5]:Float@double, [6]:Float@double, [7]:Float@double, [8]:Float@double, [9]:Float@double, [10]:Float@double, [11]:Float@double, [12]:Float@double, [13]:Float@double, [14]:Float@double, [15]:Float@double, [16]:Float@double, [17]:Float@double, [18]:Float@double, [19]:Float@double, [20]:Float@double, [21]:Float@double, [22]:Float@double, [23]:Float@double, [24]:Float@double, [25]:Float@double, [26]:Float@double, [27]:Float@double, [28]:Float@double, [29]:Float@double, [30]:Float@double, [31]:Float@double, [32]:Float@double, [33]:Float@double, [34]:Float@double, [35]:Float@double, [36]:Float@double, [37]:Float@double, [38]:Float@double, [39]:Float@double} val: %50 = insertvalue { double*, i64*, double*, double, double, i64 } %49, double %arrayref14, 4, !dbg !170 origin= %51 = insertvalue { double*, i64*, double*, double, double, i64 } %50, i64 %arraylen16, 5, !dbg !170 MethodInstance for logp(::Vector{Int64}, ::HabituatingBiasedCoin{Base.RefValue{Float64}}, ::ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(w₀ = 1, η = 2)}}}) Caused by: Stacktrace: [1] logp @ ./REPL[16]:9 Stacktrace: [1] julia_error(cstr::Cstring, val::Ptr{…}, errtype::Enzyme.API.ErrorType, data::Ptr{…}, data2::Ptr{…}, B::Ptr{…}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:1711 [2] EnzymeCreateForwardDiff(logic::Enzyme.Logic, todiff::LLVM.Function, retType::Enzyme.API.CDIFFE_TYPE, constant_args::Vector{…}, TA::Enzyme.TypeAnalysis, returnValue::Bool, mode::Enzyme.API.CDerivativeMode, width::Int64, additionalArg::Ptr{…}, typeInfo::Enzyme.FnTypeInfo, uncacheable_args::Vector{…}) @ Enzyme.API ~/.julia/packages/Enzyme/F71IJ/src/api.jl:168 [3] enzyme!(job::GPUCompiler.CompilerJob{…}, mod::LLVM.Module, primalf::LLVM.Function, TT::Type, mode::Enzyme.API.CDerivativeMode, width::Int64, parallel::Bool, actualRetType::Type, wrap::Bool, modifiedBetween::NTuple{…}, returnPrimal::Bool, expectedTapeType::Type, loweredArgs::Set{…}, boxedArgs::Set{…}) @ Enzyme.Compiler ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:3304 [4] codegen(output::Symbol, job::GPUCompiler.CompilerJob{…}; libraries::Bool, deferred_codegen::Bool, optimize::Bool, toplevel::Bool, strip::Bool, validate::Bool, only_entry::Bool, parent_job::Nothing) @ Enzyme.Compiler ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:5250 [5] codegen @ ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:4592 [inlined] [6] _thunk(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, postopt::Bool) @ Enzyme.Compiler ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:5968 [7] _thunk @ ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:5968 [inlined] [8] cached_compilation @ ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:6006 [inlined] [9] (::Enzyme.Compiler.var"#1220#1221"{…})(ctx::LLVM.Context) @ Enzyme.Compiler ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:6073 [10] JuliaContext(f::Enzyme.Compiler.var"#1220#1221"{…}; kwargs::@Kwargs{}) @ GPUCompiler ~/.julia/packages/GPUCompiler/nWT2N/src/driver.jl:52 [11] JuliaContext(f::Function) @ GPUCompiler ~/.julia/packages/GPUCompiler/nWT2N/src/driver.jl:42 [12] #s1957#1219 @ ~/.julia/packages/Enzyme/F71IJ/src/compiler.jl:6024 [inlined] [13] @ Enzyme.Compiler ./none:0 [14] (::Core.GeneratedFunctionStub)(::UInt64, ::LineNumberNode, ::Any, ::Vararg{Any}) @ Core ./boot.jl:602 [15] autodiff @ ~/.julia/packages/Enzyme/F71IJ/src/Enzyme.jl:397 [inlined] [16] autodiff @ ~/.julia/packages/Enzyme/F71IJ/src/Enzyme.jl:315 [inlined] [17] autodiff @ ~/.julia/packages/Enzyme/F71IJ/src/Enzyme.jl:300 [inlined] [18] _hess(h::HessLogP{BatchDuplicated{HabituatingBiasedCoin{Base.RefValue{Float64}}, 2}}) @ Main ./REPL[23]:2 [19] (::HessLogP{BatchDuplicated{…}})(ddx::Matrix{Float64}, x::ComponentVector{Float64, Vector{…}, Tuple{…}}) @ Main ./REPL[32]:4 [20] top-level scope @ REPL[42]:1 Some type information was truncated. Use `show(err)` to see complete types.
The following code worked with Enzyme 0.11.20 (julia 1.10.2) but fails on Enzyme 0.12.9. Apologies for the not so minimal MWE.
Setup
```julia using Pkg Pkg.activate(temp = true) Pkg.add(["Distributions", "ComponentArrays", "ConcreteStructs"]) # Pkg.add(name = "Enzyme", version = "0.11.20") Pkg.add(name = "Enzyme", version = "0.12.9") using Distributions, Enzyme, ComponentArrays, ConcreteStructs struct BiasedCoin end parameters(::BiasedCoin) = ComponentArray(ρ = .5) function logp(data, ::BiasedCoin, parameters) logp = 0. ρ = parameters.ρ for d in data logp += logpdf(Bernoulli(ρ), d) end logp end sigmoid(w) = 1/(1 + exp(-w)) @concrete struct HabituatingBiasedCoin w end HabituatingBiasedCoin() = HabituatingBiasedCoin(Base.RefValue(0.)) function initialize!(m::HabituatingBiasedCoin, parameters) m.w[] = parameters.w₀ end parameters(::HabituatingBiasedCoin) = ComponentArray(w₀ = 0., η = 0.) function logp(data, m::HabituatingBiasedCoin, parameters) initialize!(m, parameters) η = parameters.η logp = 0. for d in data ρ = sigmoid(m.w[]) logp += logpdf(Bernoulli(ρ), d) m.w[] += η * (d - ρ) end logp end @concrete terse struct HessLogP{T} logp dlogp data ddata model::T dmodel parameters dparameters end function HessLogP(data, model, parameters = ComponentArray(parameters(model))) dd = _zero(data) _data = convert(typeof(dd), data) n = length(parameters) vx = ntuple(i -> begin t = _zero(parameters); t[i] = 1; t end, n) ddx = ntuple(_ -> _zero(parameters), n) HessLogP(Const([0.]), Const([1.]), BatchDuplicated(_data, ntuple(_ -> _zero(dd), n)), BatchDuplicated(_zero(dd), ntuple(_ -> _zero(dd), n)), _deep_ismutable(model) ? BatchDuplicated(model, ntuple(_ -> _zero(model), n)) : Const(model), _deep_ismutable(model) ? BatchDuplicated(_zero(model), ntuple(_ -> _zero(model), n)) : Const(model), BatchDuplicated(parameters, vx), BatchDuplicated(_zero(parameters), ddx)) end function logp!(_logp, data, model, parameters) _logp[] = logp(data, model, parameters) nothing end function _grad1(logp, dlogp, data, ddata, model, params, dparams) autodiff_deferred(Reverse, logp!, DuplicatedNoNeed(logp, dlogp), DuplicatedNoNeed(data, ddata), Const(model), Duplicated(params, dparams)) nothing end function _grad2(logp, dlogp, data, ddata, model, dmodel, params, dparams) autodiff_deferred(Reverse, logp!, DuplicatedNoNeed(logp, dlogp), DuplicatedNoNeed(data, ddata), DuplicatedNoNeed(model, dmodel), Duplicated(params, dparams)) nothing end function _hess(h::HessLogP{<:Const}) autodiff(Forward, _grad1, h.logp, h.dlogp, h.data, h.ddata, h.model, h.parameters, h.dparameters) end function _hess(h::HessLogP) autodiff(Forward, _grad2, h.logp, h.dlogp, h.data, h.ddata, h.model, h.dmodel, h.parameters, h.dparameters) end _deep_ismutable(x::T) where T = _deep_ismutable(T) function _deep_ismutable(x::Type) ismutabletype(x) && return true any(_deep_ismutable, fieldtypes(x)) end _zero(x::AbstractArray) = _zero.(x) _zero(x::Number) = zero(x) _zero(x::Base.RefValue) = Ref(_zero(x[])) _zero(x::Tuple) = _zero.(x) _zero(x::NamedTuple{K}) where K = NamedTuple{K}(_zero.(values(x))) function _zero(x::D) where D D.name.wrapper((_zero(getfield(x, f)) for f in fieldnames(D))...) end function (h::HessLogP)(ddx, x) h.parameters.val .= x h.dlogp.val .= 1 _hess(h) for (i, v) in pairs(h.dparameters.dval) ddx[:, i] .= v v .= 0 end end ```First Error
Second Error