Compiling ad v0.1.0 (/home/manuel/prog/ad) source_id: DefId(0:5 ~ ad[79d1]::cos_vec) warning: reading from a `Duplicated` const ptr is unsafe --> src/main.rs:5:1 | 5 | fn cos_vec(x: &mut Vec, y: usize) -> f32 { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [compiler/rustc_codegen_llvm/src/back/write.rs:1108:9] "Setting loose types to true" = "Setting loose types to true" num_fnc_args: 2 input_activity.len(): 2 after simplification : ; Function Attrs: mustprogress noinline nounwind nonlazybind sanitize_hwaddress willreturn define internal "enzyme_type"="{[-1]:Float@float}" float @preprocess__ZN2ad7cos_vec17h7c75bcf1d669de1eE(ptr align 8 "enzyme_type"="{[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Pointer, [-1,8,-1]: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}" %0, i64 "enzyme_type"="{[-1]:Integer}" %1) unnamed_addr #137 !dbg !45026 { %3 = alloca [24 x i8], align 8 %4 = alloca [16 x i8], align 8 #dbg_value(ptr %0, !45028, !DIExpression(), !45036) #dbg_value(i64 %1, !45029, !DIExpression(), !45036) #dbg_declare(ptr %4, !45030, !DIExpression(), !45037) #dbg_declare(ptr %3, !45034, !DIExpression(), !45038) %5 = call { i64, i64 } @"_ZN63_$LT$I$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h45958c16b18b355dE"(i64 0, i64 %1) #138, !dbg !45039 %6 = extractvalue { i64, i64 } %5, 0, !dbg !45039 %7 = extractvalue { i64, i64 } %5, 1, !dbg !45039 store i64 %6, ptr %4, align 8, !dbg !45039 %8 = getelementptr inbounds i8, ptr %4, i64 8, !dbg !45039 store i64 %7, ptr %8, align 8, !dbg !45039 br label %9, !dbg !45040 9: ; preds = %23, %2 %10 = phi i64 [ %11, %23 ], [ 0, %2 ], !dbg !45037 %11 = add nuw nsw i64 %10, 1, !dbg !45037 %12 = call { i64, i64 } @"_ZN4core4iter5range101_$LT$impl$u20$core..iter..traits..iterator..Iterator$u20$for$u20$core..ops..range..Range$LT$A$GT$$GT$4next17he184927e85d6ce88E"(ptr align 8 %4) #138, !dbg !45037 %13 = extractvalue { i64, i64 } %12, 0, !dbg !45037 %14 = extractvalue { i64, i64 } %12, 1, !dbg !45037 %15 = icmp eq i64 %13, 0, !dbg !45037 br i1 %15, label %16, label %23, !dbg !45037 16: ; preds = %9 %17 = call { ptr, ptr } @"_ZN102_$LT$$RF$mut$u20$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17ha6bf8c895140de9fE"(ptr align 8 %0) #138, !dbg !45041 %18 = extractvalue { ptr, ptr } %17, 0, !dbg !45041 %19 = extractvalue { ptr, ptr } %17, 1, !dbg !45041 call void @_ZN4core4iter6traits8iterator8Iterator7collect17h6ae3c71085dd2384E(ptr sret([24 x i8]) align 8 %3, ptr %18, ptr %19) #138, !dbg !45041 %20 = call align 8 ptr @"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17he5a4b92da6ae94f8E"(ptr align 8 %3, i64 0, ptr align 8 @33) #138, !dbg !45042 %21 = load ptr, ptr %20, align 8, !dbg !45043 %22 = load float, ptr %21, align 4, !dbg !45043 call void @"_ZN4core3ptr59drop_in_place$LT$alloc..vec..Vec$LT$$RF$mut$u20$f32$GT$$GT$17hfe2aa05ec7364b65E"(ptr align 8 %3) #138, !dbg !45044 ret float %22, !dbg !45045 23: ; preds = %9 #dbg_value(i64 %14, !45032, !DIExpression(), !45046) %24 = uitofp i64 %14 to float, !dbg !45047 call void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he4a17e7ac6925d04E"(ptr align 8 %0, float %24, ptr align 8 @34) #138, !dbg !45048 br label %9, !dbg !45048 } after simplification : ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal { i64, i64 } @"preprocess__ZN63_$LT$I$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h45958c16b18b355dE"(i64 %0, i64 %1) unnamed_addr #139 !dbg !45078 { #dbg_value(i64 %0, !45080, !DIExpression(DW_OP_LLVM_fragment, 0, 64), !45081) #dbg_value(i64 %1, !45080, !DIExpression(DW_OP_LLVM_fragment, 64, 64), !45081) %3 = insertvalue { i64, i64 } poison, i64 %0, 0, !dbg !45082 %4 = insertvalue { i64, i64 } %3, i64 %1, 1, !dbg !45082 ret { i64, i64 } %4, !dbg !45082 } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal { { i64, i64 }, { i64, i64 } } @"augmented__ZN63_$LT$I$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h45958c16b18b355dE"(i64 %0, i64 %1) unnamed_addr #139 !dbg !45083 { #dbg_value(i64 %0, !45085, !DIExpression(DW_OP_LLVM_fragment, 0, 64), !45086) #dbg_value(i64 %1, !45085, !DIExpression(DW_OP_LLVM_fragment, 64, 64), !45086) %3 = alloca { { i64, i64 }, { i64, i64 } }, align 8, !dbg !45087 %4 = insertvalue { i64, i64 } zeroinitializer, i64 %0, 0, !dbg !45087 %5 = insertvalue { i64, i64 } poison, i64 %0, 0, !dbg !45087 %6 = insertvalue { i64, i64 } %4, i64 poison, 1, !dbg !45087 %7 = insertvalue { i64, i64 } %5, i64 %1, 1, !dbg !45087 %8 = getelementptr inbounds { { i64, i64 }, { i64, i64 } }, ptr %3, i32 0, i32 0, !dbg !45087 store { i64, i64 } %7, ptr %8, align 8, !dbg !45087 %9 = getelementptr inbounds { { i64, i64 }, { i64, i64 } }, ptr %3, i32 0, i32 1, !dbg !45087 store { i64, i64 } %6, ptr %9, align 8, !dbg !45087 %10 = load { { i64, i64 }, { i64, i64 } }, ptr %3, align 8, !dbg !45087 ret { { i64, i64 }, { i64, i64 } } %10, !dbg !45087 } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"diffe_ZN63_$LT$I$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h45958c16b18b355dE"(i64 %0, i64 %1) unnamed_addr #139 !dbg !45088 { #dbg_value(i64 %0, !45090, !DIExpression(DW_OP_LLVM_fragment, 0, 64), !45091) #dbg_value(i64 %1, !45090, !DIExpression(DW_OP_LLVM_fragment, 64, 64), !45091) br label %3, !dbg !45092 3: ; preds = %2 ret void } after simplification : ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal { i64, i64 } @"preprocess__ZN4core4iter5range101_$LT$impl$u20$core..iter..traits..iterator..Iterator$u20$for$u20$core..ops..range..Range$LT$A$GT$$GT$4next17he184927e85d6ce88E"(ptr align 8 %0) unnamed_addr #139 !dbg !45093 { #dbg_value(ptr %0, !45095, !DIExpression(), !45096) %2 = call { i64, i64 } @"_ZN89_$LT$core..ops..range..Range$LT$T$GT$$u20$as$u20$core..iter..range..RangeIteratorImpl$GT$9spec_next17hab496326fec97691E"(ptr align 8 %0) #140, !dbg !45097 %3 = extractvalue { i64, i64 } %2, 0, !dbg !45097 %4 = extractvalue { i64, i64 } %2, 1, !dbg !45097 %5 = insertvalue { i64, i64 } poison, i64 %3, 0, !dbg !45098 %6 = insertvalue { i64, i64 } %5, i64 %4, 1, !dbg !45098 ret { i64, i64 } %6, !dbg !45098 } after simplification : ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal { i64, i64 } @"preprocess__ZN89_$LT$core..ops..range..Range$LT$T$GT$$u20$as$u20$core..iter..range..RangeIteratorImpl$GT$9spec_next17hab496326fec97691E"(ptr align 8 %0) unnamed_addr #139 !dbg !45105 { #dbg_value(ptr %0, !45107, !DIExpression(), !45110) %2 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !45111 #dbg_value(ptr %0, !3286, !DIExpression(), !45112) #dbg_value(ptr %2, !3295, !DIExpression(), !45112) %3 = load i64, ptr %0, align 8, !dbg !45114 %4 = load i64, ptr %2, align 8, !dbg !45115 %5 = icmp ult i64 %3, %4, !dbg !45114 br i1 %5, label %6, label %9, !dbg !45116 6: ; preds = %1 %7 = load i64, ptr %0, align 8, !dbg !45117 #dbg_value(i64 %7, !45108, !DIExpression(), !45118) %8 = call i64 @"_ZN49_$LT$usize$u20$as$u20$core..iter..range..Step$GT$17forward_unchecked17h6f58c516e1356978E"(i64 %7, i64 1) #140, !dbg !45119 store i64 %8, ptr %0, align 8, !dbg !45120 br label %9, !dbg !45121 9: ; preds = %1, %6 %10 = phi i64 [ %7, %6 ], [ undef, %1 ] %11 = phi i64 [ 1, %6 ], [ 0, %1 ], !dbg !45110 %12 = insertvalue { i64, i64 } poison, i64 %11, 0, !dbg !45122 %13 = insertvalue { i64, i64 } %12, i64 %10, 1, !dbg !45122 ret { i64, i64 } %13, !dbg !45122 } after simplification : ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal i64 @"preprocess__ZN49_$LT$usize$u20$as$u20$core..iter..range..Step$GT$17forward_unchecked17h6f58c516e1356978E"(i64 %0, i64 %1) unnamed_addr #139 !dbg !45146 { #dbg_value(i64 %0, !45148, !DIExpression(), !45150) #dbg_value(i64 %0, !3316, !DIExpression(), !45151) #dbg_value(i64 %1, !45149, !DIExpression(), !45150) #dbg_value(i64 %1, !3319, !DIExpression(), !45151) call void @"_ZN4core3num23_$LT$impl$u20$usize$GT$13unchecked_add18precondition_check17h46dd2b90ee00d9e6E"(i64 %0, i64 %1) #140, !dbg !45153 %3 = add nuw i64 %0, %1, !dbg !45154 ret i64 %3, !dbg !45155 } after simplification : ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"preprocess__ZN4core3num23_$LT$impl$u20$usize$GT$13unchecked_add18precondition_check17h46dd2b90ee00d9e6E"(i64 %0, i64 %1) unnamed_addr #139 !dbg !45166 { #dbg_value(i64 %0, !45168, !DIExpression(), !45170) #dbg_value(i64 %0, !3337, !DIExpression(), !45171) #dbg_value(i64 %1, !45169, !DIExpression(), !45170) #dbg_value(i64 %1, !3346, !DIExpression(), !45171) %3 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %0, i64 %1) #140, !dbg !45174 %4 = extractvalue { i64, i1 } %3, 0, !dbg !45174 %5 = extractvalue { i64, i1 } %3, 1, !dbg !45174 #dbg_value(i64 %4, !3347, !DIExpression(), !45175) %6 = zext i1 %5 to i8, !dbg !45176 #dbg_value(i8 %6, !3349, !DIExpression(), !45175) %7 = xor i1 %5, true, !dbg !45177 call void @llvm.assume(i1 %7), !dbg !45177 ret void, !dbg !45178 } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"augmented__ZN4core3num23_$LT$impl$u20$usize$GT$13unchecked_add18precondition_check17h46dd2b90ee00d9e6E"(i64 %0, i64 %1, i64 %2) unnamed_addr #139 !dbg !45179 { #dbg_value(i64 %0, !45181, !DIExpression(), !45183) #dbg_value(i64 %0, !3337, !DIExpression(), !45184) #dbg_value(i64 %2, !45182, !DIExpression(), !45183) #dbg_value(i64 %2, !3346, !DIExpression(), !45184) %4 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %0, i64 %2) #140, !dbg !45187 %5 = extractvalue { i64, i1 } %4, 1, !dbg !45187 #dbg_value(i64 undef, !3347, !DIExpression(), !45188) #dbg_value(i8 undef, !3349, !DIExpression(), !45188) %6 = xor i1 %5, true, !dbg !45189 call void @llvm.assume(i1 %6), !dbg !45189 ret void, !dbg !45190 } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal { i64, i64 } @"augmented__ZN49_$LT$usize$u20$as$u20$core..iter..range..Step$GT$17forward_unchecked17h6f58c516e1356978E"(i64 %0, i64 %1, i64 %2) unnamed_addr #139 !dbg !45181 { #dbg_value(i64 %0, !45183, !DIExpression(), !45185) #dbg_value(i64 %0, !3316, !DIExpression(), !45186) #dbg_value(i64 %2, !45184, !DIExpression(), !45185) #dbg_value(i64 %2, !3319, !DIExpression(), !45186) %4 = alloca { i64, i64 }, align 8, !dbg !45188 call void @"augmented__ZN4core3num23_$LT$impl$u20$usize$GT$13unchecked_add18precondition_check17h46dd2b90ee00d9e6E"(i64 %0, i64 %1, i64 %2), !dbg !45188 %5 = add nuw i64 %1, %2, !dbg !45189 %6 = add nuw i64 %0, %2, !dbg !45189 %7 = getelementptr inbounds { i64, i64 }, ptr %4, i32 0, i32 0, !dbg !45190 store i64 %6, ptr %7, align 8, !dbg !45190 %8 = getelementptr inbounds { i64, i64 }, ptr %4, i32 0, i32 1, !dbg !45190 store i64 %5, ptr %8, align 8, !dbg !45190 %9 = load { i64, i64 }, ptr %4, align 8, !dbg !45190 ret { i64, i64 } %9, !dbg !45190 } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal { { i64, i64, i1, i64 }, { i64, i64 } } @"augmented__ZN89_$LT$core..ops..range..Range$LT$T$GT$$u20$as$u20$core..iter..range..RangeIteratorImpl$GT$9spec_next17hab496326fec97691E"(ptr align 8 %0, ptr align 8 %1) unnamed_addr #139 !dbg !45168 { #dbg_value(ptr %0, !45170, !DIExpression(), !45173) %3 = alloca { { i64, i64, i1, i64 }, { i64, i64 } }, align 8, !dbg !45174 %4 = getelementptr inbounds { { i64, i64, i1, i64 }, { i64, i64 } }, ptr %3, i32 0, i32 0, !dbg !45174 %5 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !45174 #dbg_value(ptr %0, !3286, !DIExpression(), !45175) #dbg_value(ptr %5, !3295, !DIExpression(), !45175) %6 = load i64, ptr %0, align 8, !dbg !45177, !alias.scope !45178, !noalias !45181 %7 = load i64, ptr %5, align 8, !dbg !45183, !alias.scope !45178, !noalias !45181 %8 = icmp ult i64 %6, %7, !dbg !45177 %9 = getelementptr inbounds { i64, i64, i1, i64 }, ptr %4, i32 0, i32 2, !dbg !45184 store i1 %8, ptr %9, align 1, !dbg !45184 br i1 %8, label %10, label %19, !dbg !45184 10: ; preds = %2 %11 = load i64, ptr %1, align 8, !dbg !45185, !alias.scope !45181, !noalias !45178 %12 = getelementptr inbounds { i64, i64, i1, i64 }, ptr %4, i32 0, i32 1, !dbg !45185 store i64 %11, ptr %12, align 8, !dbg !45185 %13 = load i64, ptr %0, align 8, !dbg !45185, !alias.scope !45178, !noalias !45181 #dbg_value(i64 %13, !45171, !DIExpression(), !45186) %14 = getelementptr inbounds { i64, i64, i1, i64 }, ptr %4, i32 0, i32 3, !dbg !45187 store i64 %13, ptr %14, align 8, !dbg !45187 %15 = call { i64, i64 } @"augmented__ZN49_$LT$usize$u20$as$u20$core..iter..range..Step$GT$17forward_unchecked17h6f58c516e1356978E"(i64 %13, i64 %11, i64 1), !dbg !45187 %16 = extractvalue { i64, i64 } %15, 0, !dbg !45187 %17 = extractvalue { i64, i64 } %15, 1, !dbg !45187 %18 = getelementptr inbounds { i64, i64, i1, i64 }, ptr %4, i32 0, i32 0, !dbg !45188 store i64 %17, ptr %18, align 8, !dbg !45188 store i64 %17, ptr %1, align 8, !dbg !45188, !alias.scope !45181, !noalias !45178 store i64 %16, ptr %0, align 8, !dbg !45188, !alias.scope !45178, !noalias !45181 br label %19, !dbg !45189 19: ; preds = %10, %2 %20 = phi i64 [ %13, %10 ], [ undef, %2 ] %21 = phi i64 [ 1, %10 ], [ 0, %2 ], !dbg !45173 %22 = insertvalue { i64, i64 } poison, i64 %21, 0, !dbg !45190 %23 = insertvalue { i64, i64 } %22, i64 %20, 1, !dbg !45190 %24 = getelementptr inbounds { { i64, i64, i1, i64 }, { i64, i64 } }, ptr %3, i32 0, i32 1, !dbg !45190 store { i64, i64 } %23, ptr %24, align 8, !dbg !45190 %25 = load { { i64, i64, i1, i64 }, { i64, i64 } }, ptr %3, align 8, !dbg !45190 ret { { i64, i64, i1, i64 }, { i64, i64 } } %25, !dbg !45190 } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal { { i64, i64, i1, i64 }, { i64, i64 } } @"augmented__ZN4core4iter5range101_$LT$impl$u20$core..iter..traits..iterator..Iterator$u20$for$u20$core..ops..range..Range$LT$A$GT$$GT$4next17he184927e85d6ce88E"(ptr align 8 %0, ptr align 8 %1) unnamed_addr #139 !dbg !45185 { #dbg_value(ptr %0, !45187, !DIExpression(), !45188) %3 = alloca { { i64, i64, i1, i64 }, { i64, i64 } }, align 8, !dbg !45189 %4 = getelementptr inbounds { { i64, i64, i1, i64 }, { i64, i64 } }, ptr %3, i32 0, i32 0, !dbg !45189 %5 = call { { i64, i64, i1, i64 }, { i64, i64 } } @"augmented__ZN89_$LT$core..ops..range..Range$LT$T$GT$$u20$as$u20$core..iter..range..RangeIteratorImpl$GT$9spec_next17hab496326fec97691E"(ptr align 8 %0, ptr align 8 %1), !dbg !45189 %6 = extractvalue { { i64, i64, i1, i64 }, { i64, i64 } } %5, 0, !dbg !45189 store { i64, i64, i1, i64 } %6, ptr %4, align 8, !dbg !45189 %7 = extractvalue { { i64, i64, i1, i64 }, { i64, i64 } } %5, 1, !dbg !45189 %8 = extractvalue { i64, i64 } %7, 0, !dbg !45189 %9 = extractvalue { i64, i64 } %7, 1, !dbg !45189 %10 = insertvalue { i64, i64 } poison, i64 %8, 0, !dbg !45190 %11 = insertvalue { i64, i64 } %10, i64 %9, 1, !dbg !45190 %12 = getelementptr inbounds { { i64, i64, i1, i64 }, { i64, i64 } }, ptr %3, i32 0, i32 1, !dbg !45190 store { i64, i64 } %11, ptr %12, align 8, !dbg !45190 %13 = load { { i64, i64, i1, i64 }, { i64, i64 } }, ptr %3, align 8, !dbg !45190 ret { { i64, i64, i1, i64 }, { i64, i64 } } %13, !dbg !45190 } warning: binary operator is integer and assumed constant: %3 = add nuw i64 %0, %1, !dbg !155 ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn memory(readwrite) define internal void @"diffe_ZN4core3num23_$LT$impl$u20$usize$GT$13unchecked_add18precondition_check17h46dd2b90ee00d9e6E"(i64 %0, i64 %1, i64 %2) unnamed_addr #140 !dbg !45225 { #dbg_value(i64 %0, !45227, !DIExpression(), !45229) #dbg_value(i64 %0, !3337, !DIExpression(), !45230) #dbg_value(i64 %2, !45228, !DIExpression(), !45229) #dbg_value(i64 %2, !3346, !DIExpression(), !45230) #dbg_value(i64 undef, !3347, !DIExpression(), !45233) #dbg_value(i8 undef, !3349, !DIExpression(), !45233) br label %4, !dbg !45234 4: ; preds = %3 ret void } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn memory(readwrite) define internal void @"diffe_ZN49_$LT$usize$u20$as$u20$core..iter..range..Step$GT$17forward_unchecked17h6f58c516e1356978E"(i64 %0, i64 %1, i64 %2) unnamed_addr #140 !dbg !45216 { #dbg_value(i64 %0, !45218, !DIExpression(), !45220) #dbg_value(i64 %0, !3316, !DIExpression(), !45221) #dbg_value(i64 %2, !45219, !DIExpression(), !45220) #dbg_value(i64 %2, !3319, !DIExpression(), !45221) %4 = alloca i64, align 8 store i64 0, ptr %4, align 8 br label %5, !dbg !45223 5: ; preds = %3 %6 = load i64, ptr %4, align 8, !dbg !45224 call void @"diffe_ZN4core3num23_$LT$impl$u20$usize$GT$13unchecked_add18precondition_check17h46dd2b90ee00d9e6E"(i64 %0, i64 %1, i64 %2), !dbg !45225 ret void } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn memory(readwrite) define internal void @"diffe_ZN89_$LT$core..ops..range..Range$LT$T$GT$$u20$as$u20$core..iter..range..RangeIteratorImpl$GT$9spec_next17hab496326fec97691E"(ptr align 8 %0, ptr align 8 %1, { i64, i64, i1, i64 } %2) unnamed_addr #140 !dbg !45197 { #dbg_value(ptr %0, !45199, !DIExpression(), !45202) #dbg_value(ptr %0, !3286, !DIExpression(), !45203) #dbg_value(ptr undef, !3295, !DIExpression(), !45203) %4 = alloca { i64, i64 }, align 8 store { i64, i64 } zeroinitializer, ptr %4, align 8 %5 = extractvalue { i64, i64, i1, i64 } %2, 2, !dbg !45205 br i1 %5, label %6, label %10, !dbg !45205 6: ; preds = %3 %7 = extractvalue { i64, i64, i1, i64 } %2, 1, !dbg !45206 %8 = extractvalue { i64, i64, i1, i64 } %2, 3, !dbg !45207 #dbg_value(i64 %8, !45200, !DIExpression(), !45208) %9 = extractvalue { i64, i64, i1, i64 } %2, 0, !dbg !45207 br label %10, !dbg !45209 10: ; preds = %6, %3 br label %15, !dbg !45210 11: ; preds = %15, %12 ret void 12: ; preds = %15 %13 = extractvalue { i64, i64, i1, i64 } %2, 3, !dbg !45206 %14 = extractvalue { i64, i64, i1, i64 } %2, 1, !dbg !45207 call void @"diffe_ZN49_$LT$usize$u20$as$u20$core..iter..range..Step$GT$17forward_unchecked17h6f58c516e1356978E"(i64 %13, i64 %14, i64 1), !dbg !45207 br label %11 15: ; preds = %10 store { i64, i64 } zeroinitializer, ptr %4, align 8, !dbg !45210 br i1 %5, label %12, label %11 } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn memory(readwrite) define internal void @"diffe_ZN4core4iter5range101_$LT$impl$u20$core..iter..traits..iterator..Iterator$u20$for$u20$core..ops..range..Range$LT$A$GT$$GT$4next17he184927e85d6ce88E"(ptr align 8 %0, ptr align 8 %1, { i64, i64, i1, i64 } %2) unnamed_addr #140 !dbg !45191 { #dbg_value(ptr %0, !45193, !DIExpression(), !45194) %4 = alloca { i64, i64 }, align 8 store { i64, i64 } zeroinitializer, ptr %4, align 8 %5 = alloca { i64, i64 }, align 8 store { i64, i64 } zeroinitializer, ptr %5, align 8 br label %6, !dbg !45195 6: ; preds = %3 store { i64, i64 } zeroinitializer, ptr %4, align 8, !dbg !45195 store { i64, i64 } zeroinitializer, ptr %5, align 8, !dbg !45195 call void @"diffe_ZN89_$LT$core..ops..range..Range$LT$T$GT$$u20$as$u20$core..iter..range..RangeIteratorImpl$GT$9spec_next17hab496326fec97691E"(ptr align 8 %0, ptr align 8 %1, { i64, i64, i1, i64 } %2), !dbg !45196 ret void } after simplification : ; Function Attrs: mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"preprocess__ZN4core3ptr59drop_in_place$LT$alloc..vec..Vec$LT$$RF$mut$u20$f32$GT$$GT$17hfe2aa05ec7364b65E"(ptr align 8 %0) unnamed_addr #142 !dbg !45234 { #dbg_value(ptr %0, !45236, !DIExpression(), !45237) call void @"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbf59c395618609a1E"(ptr align 8 %0) #143, !dbg !45238 call void @"_ZN4core3ptr66drop_in_place$LT$alloc..raw_vec..RawVec$LT$$RF$mut$u20$f32$GT$$GT$17h58f38d57e4afa040E"(ptr align 8 %0) #143, !dbg !45238 ret void, !dbg !45238 } after simplification : ; Function Attrs: mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"preprocess__ZN4core3ptr66drop_in_place$LT$alloc..raw_vec..RawVec$LT$$RF$mut$u20$f32$GT$$GT$17h58f38d57e4afa040E"(ptr align 8 %0) unnamed_addr #142 !dbg !45244 { #dbg_value(ptr %0, !45246, !DIExpression(), !45247) call void @"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17he6eaf775c40872aaE"(ptr align 8 %0) #144, !dbg !45248 ret void, !dbg !45248 } after simplification : ; Function Attrs: mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"preprocess__ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17he6eaf775c40872aaE"(ptr align 8 %0) unnamed_addr #142 !dbg !45254 { #dbg_value(ptr %0, !45256, !DIExpression(), !45257) call void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h0f83e510b5662ab8E"(ptr align 8 %0, i64 8, i64 8) #144, !dbg !45258 ret void, !dbg !45259 } after simplification : ; Function Attrs: mustprogress nounwind nonlazybind optsize sanitize_hwaddress willreturn uwtable define internal void @"preprocess__ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h0f83e510b5662ab8E"(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2) unnamed_addr #144 { %4 = alloca i64, align 8 %5 = alloca i64, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr %4) call void @llvm.lifetime.start.p0(i64 8, ptr %5) tail call void @llvm.experimental.noalias.scope.decl(metadata !16154) #145 tail call void @llvm.experimental.noalias.scope.decl(metadata !16157) #145 %6 = icmp eq i64 %2, 0 br i1 %6, label %14, label %7 7: ; preds = %3 %8 = load i64, ptr %0, align 8, !alias.scope !16157, !noalias !16154, !noundef !23 %9 = icmp eq i64 %8, 0 br i1 %9, label %14, label %10 10: ; preds = %7 %11 = mul nuw i64 %8, %2 %12 = getelementptr inbounds i8, ptr %0, i64 8 %13 = load ptr, ptr %12, align 8, !alias.scope !16157, !noalias !16154, !nonnull !23, !noundef !23 store i64 %1, ptr %4, align 8, !alias.scope !16154, !noalias !16157 br label %14 14: ; preds = %10, %7, %3 %15 = phi ptr [ undef, %3 ], [ undef, %7 ], [ %13, %10 ] %16 = phi ptr [ %4, %3 ], [ %4, %7 ], [ %5, %10 ] %17 = phi i64 [ 0, %3 ], [ 0, %7 ], [ %11, %10 ] store i64 %17, ptr %16, align 8, !alias.scope !16154, !noalias !16157 %18 = load i64, ptr %4, align 8, !range !135, !noundef !23 %19 = icmp eq i64 %18, 0 br i1 %19, label %25, label %20 20: ; preds = %14 %21 = icmp ne ptr %15, null tail call void @llvm.assume(i1 %21) #145 %22 = load i64, ptr %5, align 8, !noundef !23 %23 = icmp eq i64 %22, 0 br i1 %23, label %25, label %24 24: ; preds = %20 tail call void @__rust_dealloc(ptr noundef nonnull %15, i64 noundef %22, i64 noundef %18) #146 br label %25 25: ; preds = %24, %20, %14 call void @llvm.lifetime.end.p0(i64 8, ptr %4) call void @llvm.lifetime.end.p0(i64 8, ptr %5) ret void } freeing without malloc %15 = phi ptr [ undef, %3 ], [ undef, %7 ], [ %13, %10 ] ; Function Attrs: mustprogress nounwind nonlazybind optsize sanitize_hwaddress willreturn memory(readwrite) uwtable define internal void @"diffe_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h0f83e510b5662ab8E"(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0, ptr nocapture align 8 %1, i64 noundef range(i64 1, -9223372036854775807) %2, i64 noundef %3) unnamed_addr #145 { %5 = alloca i64, align 8 %6 = alloca i64, align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !16154) #146 tail call void @llvm.experimental.noalias.scope.decl(metadata !16157) #146 %7 = icmp eq i64 %3, 0 br i1 %7, label %15, label %8 8: ; preds = %4 %9 = load i64, ptr %0, align 8, !alias.scope !45266, !noalias !45269, !invariant.group !45271, !noundef !23 %10 = icmp eq i64 %9, 0 br i1 %10, label %15, label %11 11: ; preds = %8 %12 = mul nuw i64 %9, %3 %13 = getelementptr inbounds i8, ptr %0, i64 8 %14 = load ptr, ptr %13, align 8, !alias.scope !45266, !noalias !45269, !nonnull !23, !noundef !23 store i64 %2, ptr %5, align 8, !alias.scope !16154, !noalias !16157 br label %15 15: ; preds = %11, %8, %4 %16 = phi ptr [ undef, %4 ], [ undef, %8 ], [ %14, %11 ] %17 = phi ptr [ %5, %4 ], [ %5, %8 ], [ %6, %11 ] %18 = phi i64 [ 0, %4 ], [ 0, %8 ], [ %12, %11 ] store i64 %18, ptr %17, align 8, !alias.scope !16154, !noalias !16157 %19 = load i64, ptr %5, align 8, !range !135, !alias.scope !45272, !noalias !45275, !noundef !23 %20 = icmp eq i64 %19, 0 br i1 %20, label %26, label %21 21: ; preds = %15 %22 = icmp ne ptr %16, null tail call void @llvm.assume(i1 %22) #146 %23 = load i64, ptr %6, align 8, !alias.scope !45277, !noalias !45280, !noundef !23 %24 = icmp eq i64 %23, 0 br i1 %24, label %26, label %25 25: ; preds = %21 br label %26 26: ; preds = %25, %21, %15 br label %35 27: ; preds = %30, %28 ret void 28: ; preds = %38, %29 br label %27 29: ; preds = %38 br label %28 30: ; preds = %35, %33 %31 = load i64, ptr %0, align 8, !alias.scope !45266, !noalias !45269, !invariant.group !45271 %32 = icmp eq i64 %31, 0 br i1 %7, label %27, label %38 33: ; preds = %39, %34 br label %30 34: ; preds = %39 br label %33 35: ; preds = %26 %36 = load i64, ptr %6, align 8, !alias.scope !45277, !noalias !45280 %37 = icmp eq i64 %36, 0 br i1 %20, label %30, label %39 38: ; preds = %30 br i1 %32, label %28, label %29 39: ; preds = %35 br i1 %37, label %33, label %34 } ; Function Attrs: mustprogress nounwind nonlazybind sanitize_hwaddress willreturn memory(readwrite) define internal void @"diffe_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17he6eaf775c40872aaE"(ptr align 8 %0, ptr align 8 %1) unnamed_addr #143 !dbg !45260 { #dbg_value(ptr %0, !45262, !DIExpression(), !45263) br label %3, !dbg !45264 3: ; preds = %2 call void @"diffe_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h0f83e510b5662ab8E"(ptr align 8 %0, ptr align 8 %1, i64 8, i64 8), !dbg !45265 ret void } ; Function Attrs: mustprogress nounwind nonlazybind sanitize_hwaddress willreturn memory(readwrite) define internal void @"diffe_ZN4core3ptr66drop_in_place$LT$alloc..raw_vec..RawVec$LT$$RF$mut$u20$f32$GT$$GT$17h58f38d57e4afa040E"(ptr align 8 %0, ptr align 8 %1) unnamed_addr #143 !dbg !45249 { #dbg_value(ptr %0, !45251, !DIExpression(), !45252) br label %3, !dbg !45253 3: ; preds = %2 call void @"diffe_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17he6eaf775c40872aaE"(ptr align 8 %0, ptr align 8 %1), !dbg !45253 ret void } after simplification : ; Function Attrs: mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"preprocess__ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbf59c395618609a1E"(ptr align 8 %0) unnamed_addr #142 !dbg !45282 { #dbg_value(ptr %0, !45284, !DIExpression(), !45285) #dbg_value(ptr %0, !2025, !DIExpression(), !45286) #dbg_value(ptr %0, !2034, !DIExpression(), !45288) #dbg_value(ptr %0, !2040, !DIExpression(), !45290) #dbg_value(ptr %0, !2045, !DIExpression(), !45292) %2 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !45294 %3 = load ptr, ptr %2, align 8, !dbg !45294 #dbg_value(ptr %3, !2051, !DIExpression(), !45295) #dbg_value(ptr %3, !2056, !DIExpression(), !45297) #dbg_value(ptr %3, !2061, !DIExpression(), !45299) #dbg_value(ptr %3, !2067, !DIExpression(), !45301) #dbg_value(ptr %3, !2072, !DIExpression(), !45303) #dbg_value(ptr %3, !2078, !DIExpression(), !45305) #dbg_value(ptr %3, !2090, !DIExpression(), !45307) %4 = getelementptr inbounds i8, ptr %0, i64 16, !dbg !45309 %5 = load i64, ptr %4, align 8, !dbg !45309 #dbg_value(i64 %5, !2087, !DIExpression(), !45305) #dbg_value(i64 %5, !2093, !DIExpression(), !45307) ret void, !dbg !45310 } ; Function Attrs: mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"augmented__ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbf59c395618609a1E"(ptr align 8 %0, ptr align 8 %1) unnamed_addr #142 !dbg !45311 { #dbg_value(ptr %0, !45313, !DIExpression(), !45314) #dbg_value(ptr %0, !2025, !DIExpression(), !45315) #dbg_value(ptr %0, !2034, !DIExpression(), !45317) #dbg_value(ptr %0, !2040, !DIExpression(), !45319) #dbg_value(ptr %0, !2045, !DIExpression(), !45321) #dbg_value(ptr undef, !2051, !DIExpression(), !45323) #dbg_value(ptr undef, !2056, !DIExpression(), !45325) #dbg_value(ptr undef, !2061, !DIExpression(), !45327) #dbg_value(ptr undef, !2067, !DIExpression(), !45329) #dbg_value(ptr undef, !2072, !DIExpression(), !45331) #dbg_value(ptr undef, !2078, !DIExpression(), !45333) #dbg_value(ptr undef, !2090, !DIExpression(), !45335) #dbg_value(i64 undef, !2087, !DIExpression(), !45333) #dbg_value(i64 undef, !2093, !DIExpression(), !45335) ret void, !dbg !45337 } ; Function Attrs: mustprogress nounwind nonlazybind sanitize_hwaddress willreturn memory(readwrite) define internal void @"diffe_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbf59c395618609a1E"(ptr align 8 %0, ptr align 8 %1) unnamed_addr #143 !dbg !45338 { #dbg_value(ptr %0, !45340, !DIExpression(), !45341) #dbg_value(ptr %0, !2025, !DIExpression(), !45342) #dbg_value(ptr %0, !2034, !DIExpression(), !45344) #dbg_value(ptr %0, !2040, !DIExpression(), !45346) #dbg_value(ptr %0, !2045, !DIExpression(), !45348) #dbg_value(ptr undef, !2051, !DIExpression(), !45350) #dbg_value(ptr undef, !2056, !DIExpression(), !45352) #dbg_value(ptr undef, !2061, !DIExpression(), !45354) #dbg_value(ptr undef, !2067, !DIExpression(), !45356) #dbg_value(ptr undef, !2072, !DIExpression(), !45358) #dbg_value(ptr undef, !2078, !DIExpression(), !45360) #dbg_value(ptr undef, !2090, !DIExpression(), !45362) #dbg_value(i64 undef, !2087, !DIExpression(), !45360) #dbg_value(i64 undef, !2093, !DIExpression(), !45362) br label %3, !dbg !45364 3: ; preds = %2 ret void } ; Function Attrs: mustprogress nounwind nonlazybind sanitize_hwaddress willreturn memory(readwrite) define internal void @"diffe_ZN4core3ptr59drop_in_place$LT$alloc..vec..Vec$LT$$RF$mut$u20$f32$GT$$GT$17hfe2aa05ec7364b65E"(ptr align 8 %0, ptr align 8 %1) unnamed_addr #143 !dbg !45239 { #dbg_value(ptr %0, !45241, !DIExpression(), !45242) call void @"augmented__ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbf59c395618609a1E"(ptr align 8 %0, ptr align 8 %1), !dbg !45243 br label %3, !dbg !45243 3: ; preds = %2 call void @"diffe_ZN4core3ptr66drop_in_place$LT$alloc..raw_vec..RawVec$LT$$RF$mut$u20$f32$GT$$GT$17h58f38d57e4afa040E"(ptr align 8 %0, ptr align 8 %1), !dbg !45243 call void @"diffe_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbf59c395618609a1E"(ptr align 8 %0, ptr align 8 %1), !dbg !45243 ret void } after simplification : ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal align 8 ptr @"preprocess__ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17he5a4b92da6ae94f8E"(ptr align 8 %0, i64 %1, ptr align 8 %2) unnamed_addr #139 !dbg !45375 { #dbg_value(ptr %0, !45377, !DIExpression(), !45379) #dbg_value(ptr %0, !1673, !DIExpression(), !45380) #dbg_value(ptr %0, !1686, !DIExpression(), !45382) #dbg_value(ptr %0, !1692, !DIExpression(), !45384) #dbg_value(i64 %1, !45378, !DIExpression(), !45379) #dbg_value(i64 %1, !1702, !DIExpression(), !45386) #dbg_value(ptr %0, !1719, !DIExpression(), !45388) #dbg_value(ptr %0, !1730, !DIExpression(), !45390) #dbg_value(ptr %0, !1739, !DIExpression(), !45392) %4 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !45394 %5 = load ptr, ptr %4, align 8, !dbg !45394 #dbg_value(ptr %5, !1751, !DIExpression(), !45395) #dbg_value(ptr %5, !1765, !DIExpression(), !45397) #dbg_value(ptr %5, !1773, !DIExpression(), !45399) #dbg_value(ptr %5, !1779, !DIExpression(), !45401) #dbg_value(ptr %5, !1787, !DIExpression(), !45403) #dbg_value(ptr %5, !1795, !DIExpression(), !45405) #dbg_value(ptr %5, !1804, !DIExpression(), !45407) #dbg_value(ptr %5, !1812, !DIExpression(), !45409) %6 = getelementptr inbounds i8, ptr %0, i64 16, !dbg !45411 %7 = load i64, ptr %6, align 8, !dbg !45411 #dbg_value(i64 %7, !1784, !DIExpression(), !45401) #dbg_value(i64 %7, !1792, !DIExpression(), !45403) #dbg_value(i64 %7, !1798, !DIExpression(), !45405) call void @_ZN4core5slice3raw14from_raw_parts18precondition_check17h870e7b454a92755dE(ptr %5, i64 8, i64 8, i64 %7) #146, !dbg !45412 #dbg_value(ptr %5, !1710, !DIExpression(DW_OP_LLVM_fragment, 0, 64), !45386) #dbg_value(i64 %7, !1710, !DIExpression(DW_OP_LLVM_fragment, 64, 64), !45386) %8 = call align 8 ptr @"_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h6df25b835476299bE"(i64 %1, ptr align 8 %5, i64 %7, ptr align 8 %2) #146, !dbg !45413 ret ptr %8, !dbg !45414 } after simplification : ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal align 8 ptr @"preprocess__ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h6df25b835476299bE"(i64 %0, ptr align 8 %1, i64 %2, ptr align 8 %3) unnamed_addr #139 !dbg !45455 { #dbg_value(i64 %0, !45457, !DIExpression(), !45459) #dbg_value(ptr %1, !45458, !DIExpression(DW_OP_LLVM_fragment, 0, 64), !45459) #dbg_value(i64 %2, !45458, !DIExpression(DW_OP_LLVM_fragment, 64, 64), !45459) %5 = icmp ult i64 %0, %2, !dbg !45460 call void @llvm.assume(i1 %5), !dbg !45460 %6 = getelementptr inbounds [0 x ptr], ptr %1, i64 0, i64 %0, !dbg !45461 ret ptr %6, !dbg !45462 } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal { ptr, ptr } @"augmented__ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h6df25b835476299bE"(i64 %0, ptr align 8 %1, ptr align 8 %2, i64 %3, i64 %4, ptr align 8 %5) unnamed_addr #139 !dbg !45463 { #dbg_value(i64 %0, !45465, !DIExpression(), !45467) #dbg_value(ptr %1, !45466, !DIExpression(DW_OP_LLVM_fragment, 0, 64), !45467) #dbg_value(i64 %3, !45466, !DIExpression(DW_OP_LLVM_fragment, 64, 64), !45467) %7 = alloca { ptr, ptr }, align 8, !dbg !45468 %8 = icmp ult i64 %0, %3, !dbg !45468 call void @llvm.assume(i1 %8), !dbg !45468 %9 = getelementptr inbounds [0 x ptr], ptr %2, i64 0, i64 %0, !dbg !45469 %10 = getelementptr inbounds [0 x ptr], ptr %1, i64 0, i64 %0, !dbg !45469 %11 = getelementptr inbounds { ptr, ptr }, ptr %7, i32 0, i32 0, !dbg !45470 store ptr %10, ptr %11, align 8, !dbg !45470 %12 = getelementptr inbounds { ptr, ptr }, ptr %7, i32 0, i32 1, !dbg !45470 store ptr %9, ptr %12, align 8, !dbg !45470 %13 = load { ptr, ptr }, ptr %7, align 8, !dbg !45470 ret { ptr, ptr } %13, !dbg !45470 } after simplification : ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @preprocess__ZN4core5slice3raw14from_raw_parts18precondition_check17h870e7b454a92755dE(ptr %0, i64 %1, i64 %2, i64 %3) unnamed_addr #139 personality ptr @rust_eh_personality !dbg !45471 { #dbg_value(ptr %0, !45473, !DIExpression(), !45477) #dbg_value(i64 %1, !45474, !DIExpression(), !45477) #dbg_value(i64 %1, !2130, !DIExpression(), !45478) #dbg_value(i64 %2, !45475, !DIExpression(), !45477) #dbg_value(i64 %2, !2143, !DIExpression(), !45481) #dbg_value(i64 %2, !2152, !DIExpression(), !45483) #dbg_value(i64 %2, !2163, !DIExpression(), !45485) #dbg_value(i64 %2, !2173, !DIExpression(), !45487) #dbg_value(i64 %2, !2180, !DIExpression(), !45489) #dbg_value(i64 %3, !45476, !DIExpression(), !45477) #dbg_value(i64 %3, !2137, !DIExpression(), !45478) #dbg_value(i8 0, !2149, !DIExpression(), !45481) #dbg_value(ptr @7, !2322, !DIExpression(), !45491) #dbg_value(ptr %0, !2148, !DIExpression(), !45481) #dbg_value(ptr %0, !2160, !DIExpression(), !45483) #dbg_value(ptr %0, !2329, !DIExpression(), !45493) #dbg_value(ptr %0, !2184, !DIExpression(), !45489) #dbg_value(ptr %0, !2339, !DIExpression(), !45495) #dbg_value(ptr %0, !2329, !DIExpression(), !45497) #dbg_value(ptr %0, !2348, !DIExpression(), !45499) %5 = call i64 @llvm.ctpop.i64(i64 %2) #146, !dbg !45501 %6 = trunc i64 %5 to i32, !dbg !45501 %7 = icmp eq i32 %6, 1, !dbg !45502 call void @llvm.assume(i1 %7), !dbg !45502 %8 = ptrtoint ptr %0 to i64, !dbg !45503 %9 = sub i64 %2, 1, !dbg !45504 %10 = and i64 %8, %9, !dbg !45505 %11 = icmp eq i64 %10, 0, !dbg !45506 call void @llvm.assume(i1 %11), !dbg !45506 #dbg_value(ptr %0, !2364, !DIExpression(), !45507) #dbg_value(ptr %0, !2372, !DIExpression(), !45509) #dbg_value(ptr %0, !2379, !DIExpression(), !45511) %12 = icmp eq i64 %8, 0, !dbg !45513 %13 = xor i1 %12, true, !dbg !45514 call void @llvm.assume(i1 %13), !dbg !45482 %14 = icmp eq i64 %1, 0, !dbg !45515 br i1 %14, label %15, label %18, !dbg !45515 15: ; preds = %4, %18 %16 = phi i64 [ %19, %18 ], [ -1, %4 ], !dbg !45516 #dbg_value(i64 %16, !2138, !DIExpression(), !45517) %17 = icmp ule i64 %3, %16, !dbg !45518 call void @llvm.assume(i1 %17), !dbg !45479 ret void, !dbg !45519 18: ; preds = %4 %19 = udiv i64 9223372036854775807, %1, !dbg !45520 #dbg_value(i64 %19, !2138, !DIExpression(), !45517) br label %15, !dbg !45521 } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @augmented__ZN4core5slice3raw14from_raw_parts18precondition_check17h870e7b454a92755dE(ptr %0, ptr %1, i64 %2, i64 %3, i64 %4, i64 %5) unnamed_addr #139 personality ptr @rust_eh_personality !dbg !45522 { #dbg_value(ptr %0, !45524, !DIExpression(), !45528) #dbg_value(i64 %2, !45525, !DIExpression(), !45528) #dbg_value(i64 %2, !2130, !DIExpression(), !45529) #dbg_value(i64 %3, !45526, !DIExpression(), !45528) #dbg_value(i64 %3, !2143, !DIExpression(), !45532) #dbg_value(i64 %3, !2152, !DIExpression(), !45534) #dbg_value(i64 %3, !2163, !DIExpression(), !45536) #dbg_value(i64 %3, !2173, !DIExpression(), !45538) #dbg_value(i64 %3, !2180, !DIExpression(), !45540) #dbg_value(i64 %4, !45527, !DIExpression(), !45528) #dbg_value(i64 %4, !2137, !DIExpression(), !45529) #dbg_value(i8 0, !2149, !DIExpression(), !45532) #dbg_value(ptr @7, !2322, !DIExpression(), !45542) #dbg_value(ptr %0, !2148, !DIExpression(), !45532) #dbg_value(ptr %0, !2160, !DIExpression(), !45534) #dbg_value(ptr %0, !2329, !DIExpression(), !45544) #dbg_value(ptr %0, !2184, !DIExpression(), !45540) #dbg_value(ptr %0, !2339, !DIExpression(), !45546) #dbg_value(ptr %0, !2329, !DIExpression(), !45548) #dbg_value(ptr %0, !2348, !DIExpression(), !45550) %7 = call i64 @llvm.ctpop.i64(i64 %3) #146, !dbg !45552 %8 = trunc i64 %7 to i32, !dbg !45552 %9 = icmp eq i32 %8, 1, !dbg !45553 call void @llvm.assume(i1 %9), !dbg !45553 %10 = ptrtoint ptr %0 to i64, !dbg !45554 %11 = sub i64 %3, 1, !dbg !45555 %12 = and i64 %10, %11, !dbg !45556 %13 = icmp eq i64 %12, 0, !dbg !45557 call void @llvm.assume(i1 %13), !dbg !45557 #dbg_value(ptr %0, !2364, !DIExpression(), !45558) #dbg_value(ptr %0, !2372, !DIExpression(), !45560) #dbg_value(ptr %0, !2379, !DIExpression(), !45562) %14 = icmp eq i64 %10, 0, !dbg !45564 %15 = xor i1 %14, true, !dbg !45565 call void @llvm.assume(i1 %15), !dbg !45533 %16 = icmp eq i64 %2, 0, !dbg !45566 br i1 %16, label %17, label %20, !dbg !45566 17: ; preds = %20, %6 %18 = phi i64 [ %21, %20 ], [ -1, %6 ], !dbg !45567 #dbg_value(i64 %18, !2138, !DIExpression(), !45568) %19 = icmp ule i64 %4, %18, !dbg !45569 call void @llvm.assume(i1 %19), !dbg !45530 ret void, !dbg !45570 20: ; preds = %6 %21 = udiv i64 9223372036854775807, %2, !dbg !45571 #dbg_value(i64 %21, !2138, !DIExpression(), !45568) br label %17, !dbg !45572 } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal { { ptr, i64, ptr, ptr, i64 }, ptr, ptr } @"augmented__ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17he5a4b92da6ae94f8E"(ptr align 8 %0, ptr align 8 %1, i64 %2, ptr align 8 %3) unnamed_addr #139 !dbg !45533 { #dbg_value(ptr %0, !45535, !DIExpression(), !45537) #dbg_value(ptr %0, !1673, !DIExpression(), !45538) #dbg_value(ptr %0, !1686, !DIExpression(), !45540) #dbg_value(ptr %0, !1692, !DIExpression(), !45542) #dbg_value(i64 %2, !45536, !DIExpression(), !45537) #dbg_value(i64 %2, !1702, !DIExpression(), !45544) #dbg_value(ptr %0, !1719, !DIExpression(), !45546) #dbg_value(ptr %0, !1730, !DIExpression(), !45548) #dbg_value(ptr %0, !1739, !DIExpression(), !45550) %5 = alloca { { ptr, i64, ptr, ptr, i64 }, ptr, ptr }, align 8, !dbg !45552 %6 = getelementptr inbounds { { ptr, i64, ptr, ptr, i64 }, ptr, ptr }, ptr %5, i32 0, i32 0, !dbg !45552 %7 = getelementptr inbounds i8, ptr %1, i64 8, !dbg !45552 %8 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !45552 %9 = load ptr, ptr %7, align 8, !dbg !45552, !alias.scope !45553, !noalias !45556 %10 = getelementptr inbounds { ptr, i64, ptr, ptr, i64 }, ptr %6, i32 0, i32 2, !dbg !45552 store ptr %9, ptr %10, align 8, !dbg !45552 %11 = load ptr, ptr %8, align 8, !dbg !45552, !alias.scope !45556, !noalias !45553 #dbg_value(ptr %11, !1751, !DIExpression(), !45558) #dbg_value(ptr %11, !1765, !DIExpression(), !45560) #dbg_value(ptr %11, !1773, !DIExpression(), !45562) #dbg_value(ptr %11, !1779, !DIExpression(), !45564) #dbg_value(ptr %11, !1787, !DIExpression(), !45566) #dbg_value(ptr %11, !1795, !DIExpression(), !45568) #dbg_value(ptr %11, !1804, !DIExpression(), !45570) #dbg_value(ptr %11, !1812, !DIExpression(), !45572) %12 = getelementptr inbounds { ptr, i64, ptr, ptr, i64 }, ptr %6, i32 0, i32 3, !dbg !45574 store ptr %11, ptr %12, align 8, !dbg !45574 %13 = getelementptr inbounds i8, ptr %1, i64 16, !dbg !45574 %14 = getelementptr inbounds i8, ptr %0, i64 16, !dbg !45574 %15 = load i64, ptr %13, align 8, !dbg !45574, !alias.scope !45553, !noalias !45556 %16 = getelementptr inbounds { ptr, i64, ptr, ptr, i64 }, ptr %6, i32 0, i32 1, !dbg !45574 store i64 %15, ptr %16, align 8, !dbg !45574 %17 = load i64, ptr %14, align 8, !dbg !45574, !alias.scope !45556, !noalias !45553 #dbg_value(i64 %17, !1784, !DIExpression(), !45564) #dbg_value(i64 %17, !1792, !DIExpression(), !45566) #dbg_value(i64 %17, !1798, !DIExpression(), !45568) %18 = getelementptr inbounds { ptr, i64, ptr, ptr, i64 }, ptr %6, i32 0, i32 4, !dbg !45575 store i64 %17, ptr %18, align 8, !dbg !45575 call void @augmented__ZN4core5slice3raw14from_raw_parts18precondition_check17h870e7b454a92755dE(ptr %11, ptr %9, i64 8, i64 8, i64 %17, i64 %15), !dbg !45575 #dbg_value(ptr %11, !1710, !DIExpression(DW_OP_LLVM_fragment, 0, 64), !45544) #dbg_value(i64 %17, !1710, !DIExpression(DW_OP_LLVM_fragment, 64, 64), !45544) %19 = call { ptr, ptr } @"augmented__ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h6df25b835476299bE"(i64 %2, ptr align 8 %11, ptr align 8 %9, i64 %17, i64 %15, ptr align 8 %3), !dbg !45576 %20 = extractvalue { ptr, ptr } %19, 0, !dbg !45576 %21 = extractvalue { ptr, ptr } %19, 1, !dbg !45576 %22 = getelementptr inbounds { ptr, i64, ptr, ptr, i64 }, ptr %6, i32 0, i32 0, !dbg !45577 store ptr %21, ptr %22, align 8, !dbg !45577 %23 = getelementptr inbounds { { ptr, i64, ptr, ptr, i64 }, ptr, ptr }, ptr %5, i32 0, i32 1, !dbg !45577 store ptr %20, ptr %23, align 8, !dbg !45577 %24 = getelementptr inbounds { { ptr, i64, ptr, ptr, i64 }, ptr, ptr }, ptr %5, i32 0, i32 2, !dbg !45577 store ptr %21, ptr %24, align 8, !dbg !45577 %25 = load { { ptr, i64, ptr, ptr, i64 }, ptr, ptr }, ptr %5, align 8, !dbg !45577 ret { { ptr, i64, ptr, ptr, i64 }, ptr, ptr } %25, !dbg !45577 } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn memory(readwrite) define internal void @"diffe_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h6df25b835476299bE"(i64 %0, ptr align 8 %1, ptr align 8 %2, i64 %3, i64 %4, ptr align 8 %5) unnamed_addr #140 !dbg !45618 { #dbg_value(i64 %0, !45620, !DIExpression(), !45622) #dbg_value(ptr %1, !45621, !DIExpression(DW_OP_LLVM_fragment, 0, 64), !45622) #dbg_value(i64 %3, !45621, !DIExpression(DW_OP_LLVM_fragment, 64, 64), !45622) br label %7, !dbg !45623 7: ; preds = %6 ret void } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn memory(readwrite) define internal void @diffe_ZN4core5slice3raw14from_raw_parts18precondition_check17h870e7b454a92755dE(ptr %0, ptr %1, i64 %2, i64 %3, i64 %4, i64 %5) unnamed_addr #140 personality ptr @rust_eh_personality !dbg !45624 { #dbg_value(ptr %0, !45626, !DIExpression(), !45630) #dbg_value(i64 %2, !45627, !DIExpression(), !45630) #dbg_value(i64 %2, !2130, !DIExpression(), !45631) #dbg_value(i64 %3, !45628, !DIExpression(), !45630) #dbg_value(i64 %3, !2143, !DIExpression(), !45634) #dbg_value(i64 %3, !2152, !DIExpression(), !45636) #dbg_value(i64 %3, !2163, !DIExpression(), !45638) #dbg_value(i64 %3, !2173, !DIExpression(), !45640) #dbg_value(i64 %3, !2180, !DIExpression(), !45642) #dbg_value(i64 %4, !45629, !DIExpression(), !45630) #dbg_value(i64 %4, !2137, !DIExpression(), !45631) #dbg_value(i8 0, !2149, !DIExpression(), !45634) #dbg_value(ptr @7, !2322, !DIExpression(), !45644) #dbg_value(ptr %0, !2148, !DIExpression(), !45634) #dbg_value(ptr %0, !2160, !DIExpression(), !45636) #dbg_value(ptr %0, !2329, !DIExpression(), !45646) #dbg_value(ptr %0, !2184, !DIExpression(), !45642) #dbg_value(ptr %0, !2339, !DIExpression(), !45648) #dbg_value(ptr %0, !2329, !DIExpression(), !45650) #dbg_value(ptr %0, !2348, !DIExpression(), !45652) #dbg_value(ptr %0, !2364, !DIExpression(), !45654) #dbg_value(ptr %0, !2372, !DIExpression(), !45656) #dbg_value(ptr %0, !2379, !DIExpression(), !45658) %7 = icmp eq i64 %2, 0, !dbg !45660 br i1 %7, label %8, label %9, !dbg !45660 8: ; preds = %9, %6 #dbg_value(i64 undef, !2138, !DIExpression(), !45661) br label %11, !dbg !45662 9: ; preds = %6 #dbg_value(i64 undef, !2138, !DIExpression(), !45661) br label %8, !dbg !45663 10: ; preds = %12, %11 ret void 11: ; preds = %8 br i1 %7, label %10, label %12 12: ; preds = %11 br label %10 } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn memory(readwrite) define internal void @"diffe_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17he5a4b92da6ae94f8E"(ptr align 8 %0, ptr align 8 %1, i64 %2, ptr align 8 %3, { ptr, i64, ptr, ptr, i64 } %4) unnamed_addr #140 !dbg !45578 { #dbg_value(ptr %0, !45580, !DIExpression(), !45582) #dbg_value(ptr %0, !1673, !DIExpression(), !45583) #dbg_value(ptr %0, !1686, !DIExpression(), !45585) #dbg_value(ptr %0, !1692, !DIExpression(), !45587) #dbg_value(i64 %2, !45581, !DIExpression(), !45582) #dbg_value(i64 %2, !1702, !DIExpression(), !45589) #dbg_value(ptr %0, !1719, !DIExpression(), !45591) #dbg_value(ptr %0, !1730, !DIExpression(), !45593) #dbg_value(ptr %0, !1739, !DIExpression(), !45595) %6 = extractvalue { ptr, i64, ptr, ptr, i64 } %4, 2, !dbg !45597 %7 = extractvalue { ptr, i64, ptr, ptr, i64 } %4, 3, !dbg !45598 #dbg_value(ptr %7, !1751, !DIExpression(), !45599) #dbg_value(ptr %7, !1765, !DIExpression(), !45601) #dbg_value(ptr %7, !1773, !DIExpression(), !45603) #dbg_value(ptr %7, !1779, !DIExpression(), !45605) #dbg_value(ptr %7, !1787, !DIExpression(), !45607) #dbg_value(ptr %7, !1795, !DIExpression(), !45609) #dbg_value(ptr %7, !1804, !DIExpression(), !45611) #dbg_value(ptr %7, !1812, !DIExpression(), !45613) %8 = extractvalue { ptr, i64, ptr, ptr, i64 } %4, 1, !dbg !45598 #dbg_value(i64 %9, !1784, !DIExpression(), !45605) #dbg_value(i64 %9, !1792, !DIExpression(), !45607) #dbg_value(i64 %9, !1798, !DIExpression(), !45609) %9 = extractvalue { ptr, i64, ptr, ptr, i64 } %4, 4, !dbg !45615 #dbg_value(ptr %7, !1710, !DIExpression(DW_OP_LLVM_fragment, 0, 64), !45589) #dbg_value(i64 %9, !1710, !DIExpression(DW_OP_LLVM_fragment, 64, 64), !45589) br label %10, !dbg !45616 10: ; preds = %5 call void @"diffe_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h6df25b835476299bE"(i64 %2, ptr align 8 %7, ptr align 8 %6, i64 %9, i64 %8, ptr align 8 %3), !dbg !45615 call void @diffe_ZN4core5slice3raw14from_raw_parts18precondition_check17h870e7b454a92755dE(ptr %7, ptr %6, i64 8, i64 8, i64 %9, i64 %8), !dbg !45617 ret void } after simplification : ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @preprocess__ZN4core4iter6traits8iterator8Iterator7collect17h6ae3c71085dd2384E(ptr sret([24 x i8]) align 8 %0, ptr %1, ptr %2) unnamed_addr #139 !dbg !45664 { #dbg_value(ptr %1, !45666, !DIExpression(DW_OP_LLVM_fragment, 0, 64), !45667) #dbg_value(ptr %2, !45666, !DIExpression(DW_OP_LLVM_fragment, 64, 64), !45667) call void @"_ZN95_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$core..iter..traits..collect..FromIterator$LT$T$GT$$GT$9from_iter17h5c18e164ed345da8E"(ptr sret([24 x i8]) align 8 %0, ptr %1, ptr %2, ptr align 8 @15) #146, !dbg !45668 ret void, !dbg !45669 } after simplification : ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"preprocess__ZN95_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$core..iter..traits..collect..FromIterator$LT$T$GT$$GT$9from_iter17h5c18e164ed345da8E"(ptr sret([24 x i8]) align 8 %0, ptr %1, ptr %2, ptr align 8 %3) unnamed_addr #139 !dbg !45676 { #dbg_value(ptr %1, !45678, !DIExpression(DW_OP_LLVM_fragment, 0, 64), !45679) #dbg_value(ptr %2, !45678, !DIExpression(DW_OP_LLVM_fragment, 64, 64), !45679) %5 = call { ptr, ptr } @"_ZN63_$LT$I$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h136757b9ecce7a5aE"(ptr %1, ptr %2) #146, !dbg !45680 %6 = extractvalue { ptr, ptr } %5, 0, !dbg !45680 %7 = extractvalue { ptr, ptr } %5, 1, !dbg !45680 call void @"_ZN98_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$GT$9from_iter17h593fdc601e00507dE"(ptr sret([24 x i8]) align 8 %0, ptr %6, ptr %7, ptr align 8 %3) #146, !dbg !45681 ret void, !dbg !45682 } after simplification : ; Function Attrs: mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"preprocess__ZN98_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$GT$9from_iter17h593fdc601e00507dE"(ptr sret([24 x i8]) align 8 %0, ptr %1, ptr %2, ptr align 8 %3) unnamed_addr #142 !dbg !45690 { #dbg_value(ptr %1, !45692, !DIExpression(DW_OP_LLVM_fragment, 0, 64), !45693) #dbg_value(ptr %2, !45692, !DIExpression(DW_OP_LLVM_fragment, 64, 64), !45693) call void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17ha5aa1259dca803c6E"(ptr sret([24 x i8]) align 8 %0, ptr %1, ptr %2, ptr align 8 %3) #146, !dbg !45694 ret void, !dbg !45695 } after simplification : ; Function Attrs: mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"preprocess__ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17ha5aa1259dca803c6E"(ptr sret([24 x i8]) align 8 %0, ptr %1, ptr %2, ptr align 8 %3) unnamed_addr #142 personality ptr @rust_eh_personality !dbg !45702 { %5 = tail call noalias nonnull dereferenceable(24) dereferenceable_or_null(24) ptr @malloc(i64 24), !enzyme_fromstack !5299 %6 = tail call noalias nonnull dereferenceable(24) dereferenceable_or_null(24) ptr @malloc(i64 24), !enzyme_fromstack !5299 %7 = tail call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) ptr @malloc(i64 16), !enzyme_fromstack !5299 store ptr %1, ptr %7, align 8 %8 = getelementptr inbounds i8, ptr %7, i64 8 store ptr %2, ptr %8, align 8 #dbg_declare(ptr %7, !45704, !DIExpression(), !45709) #dbg_declare(ptr %5, !45705, !DIExpression(), !45710) #dbg_value(ptr @1, !2455, !DIExpression(), !45711) #dbg_declare(ptr undef, !2458, !DIExpression(), !45714) #dbg_declare(ptr undef, !2474, !DIExpression(), !45717) call void @"_ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17hd1fcb6f9f24cb1cfE"(ptr sret([24 x i8]) align 8 %6, ptr align 8 %7) #146, !dbg !45719 %9 = getelementptr inbounds i8, ptr %6, i64 8, !dbg !45719 %10 = load i64, ptr %9, align 8, !dbg !45719 %11 = icmp eq i64 %10, 1, !dbg !45720 call void @llvm.assume(i1 %11), !dbg !45720 %12 = getelementptr inbounds i8, ptr %6, i64 8, !dbg !45721 %13 = getelementptr inbounds i8, ptr %12, i64 8, !dbg !45721 %14 = load i64, ptr %13, align 8, !dbg !45721 #dbg_value(i64 %14, !45707, !DIExpression(), !45722) #dbg_value(i64 %14, !2472, !DIExpression(), !45723) #dbg_value(i64 %14, !2464, !DIExpression(), !45724) #dbg_value(i64 %14, !2480, !DIExpression(), !45725) %15 = call { i64, ptr } @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$16with_capacity_in17hc2e07cad7812290fE"(i64 %14, i64 8, i64 8, ptr align 8 %3) #146, !dbg !45726 %16 = extractvalue { i64, ptr } %15, 0, !dbg !45726 %17 = extractvalue { i64, ptr } %15, 1, !dbg !45726 store i64 %16, ptr %5, align 8, !dbg !45727 %18 = getelementptr inbounds i8, ptr %5, i64 8, !dbg !45727 store ptr %17, ptr %18, align 8, !dbg !45727 %19 = getelementptr inbounds i8, ptr %5, i64 16, !dbg !45727 store i64 0, ptr %19, align 8, !dbg !45727 %20 = load ptr, ptr %7, align 8, !dbg !45728 %21 = getelementptr inbounds i8, ptr %7, i64 8, !dbg !45728 %22 = load ptr, ptr %21, align 8, !dbg !45728 call void @"_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$T$C$I$GT$$GT$11spec_extend17hbce9f0b2eddb78ddE"(ptr align 8 %5, ptr %20, ptr %22, ptr align 8 %3) #146, !dbg !45729 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %0, ptr align 8 %5, i64 24, i1 false) #147, !dbg !45730 ret void, !dbg !45731 } after simplification : ; Function Attrs: mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"preprocess__ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$T$C$I$GT$$GT$11spec_extend17hbce9f0b2eddb78ddE"(ptr align 8 %0, ptr %1, ptr %2, ptr align 8 %3) unnamed_addr #142 !dbg !45762 { #dbg_value(ptr %0, !45764, !DIExpression(), !45766) #dbg_value(ptr %1, !45765, !DIExpression(DW_OP_LLVM_fragment, 0, 64), !45766) #dbg_value(ptr %2, !45765, !DIExpression(DW_OP_LLVM_fragment, 64, 64), !45766) call void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17h9fccf647fedf83c0E"(ptr align 8 %0, ptr %1, ptr %2, ptr align 8 %3) #146, !dbg !45767 ret void, !dbg !45768 } after simplification : ; Function Attrs: mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"preprocess__ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17h9fccf647fedf83c0E"(ptr align 8 %0, ptr %1, ptr %2, ptr align 8 %3) unnamed_addr #142 personality ptr @rust_eh_personality !dbg !45776 { %5 = tail call noalias nonnull dereferenceable(24) dereferenceable_or_null(24) ptr @malloc(i64 24), !enzyme_fromstack !5299 %6 = tail call noalias nonnull dereferenceable(24) dereferenceable_or_null(24) ptr @malloc(i64 24), !enzyme_fromstack !5299 %7 = tail call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) ptr @malloc(i64 16), !enzyme_fromstack !5299 store ptr %1, ptr %7, align 8 %8 = getelementptr inbounds i8, ptr %7, i64 8 store ptr %2, ptr %8, align 8 #dbg_value(ptr %0, !45778, !DIExpression(), !45796) #dbg_value(ptr %0, !2710, !DIExpression(), !45797) #dbg_declare(ptr %7, !45779, !DIExpression(), !45799) #dbg_value(i8 0, !45789, !DIExpression(), !45800) #dbg_value(ptr @22, !2726, !DIExpression(), !45801) #dbg_value(ptr @1, !2732, !DIExpression(), !45803) call void @"_ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17hd1fcb6f9f24cb1cfE"(ptr sret([24 x i8]) align 8 %5, ptr align 8 %7) #146, !dbg !45806 %9 = load i64, ptr %5, align 8, !dbg !45807 #dbg_value(i64 %9, !45780, !DIExpression(), !45808) %10 = getelementptr inbounds i8, ptr %5, i64 8, !dbg !45809 %11 = load i64, ptr %10, align 8, !dbg !45809 %12 = getelementptr inbounds i8, ptr %10, i64 8, !dbg !45809 %13 = load i64, ptr %12, align 8, !dbg !45809 #dbg_value(i64 %11, !45782, !DIExpression(DW_OP_LLVM_fragment, 0, 64), !45808) #dbg_value(i64 %13, !45782, !DIExpression(DW_OP_LLVM_fragment, 64, 64), !45808) %14 = icmp eq i64 %11, 1, !dbg !45810 call void @llvm.assume(i1 %14), !dbg !45810 #dbg_value(i64 %13, !45783, !DIExpression(), !45811) call void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hfbf4bb7fa5035d73E"(ptr align 8 %0, i64 %13, ptr align 8 %3) #146, !dbg !45812 #dbg_value(ptr %0, !2746, !DIExpression(), !45813) #dbg_value(ptr %0, !2752, !DIExpression(), !45815) #dbg_value(ptr %0, !2757, !DIExpression(), !45817) %15 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !45819 %16 = load ptr, ptr %15, align 8, !dbg !45819 #dbg_value(ptr %16, !2763, !DIExpression(), !45820) #dbg_value(ptr %16, !2768, !DIExpression(), !45822) #dbg_value(ptr %16, !2773, !DIExpression(), !45824) #dbg_value(ptr %16, !2779, !DIExpression(), !45826) #dbg_value(ptr %16, !2784, !DIExpression(), !45828) #dbg_value(ptr %16, !45792, !DIExpression(), !45830) %17 = getelementptr inbounds i8, ptr %0, i64 16, !dbg !45831 #dbg_value(ptr %17, !2792, !DIExpression(), !45832) %18 = load i64, ptr %17, align 8, !dbg !45834 #dbg_value(ptr %17, !45794, !DIExpression(DW_OP_LLVM_fragment, 0, 64), !45835) #dbg_value(i64 %18, !45794, !DIExpression(DW_OP_LLVM_fragment, 64, 64), !45835) %19 = load ptr, ptr %7, align 8, !dbg !45836 %20 = getelementptr inbounds i8, ptr %7, i64 8, !dbg !45836 %21 = load ptr, ptr %20, align 8, !dbg !45836 %22 = getelementptr inbounds i8, ptr %6, i64 16, !dbg !45837 store ptr %16, ptr %22, align 8, !dbg !45837 store ptr %17, ptr %6, align 8, !dbg !45837 %23 = getelementptr inbounds i8, ptr %6, i64 8, !dbg !45837 store i64 %18, ptr %23, align 8, !dbg !45837 call void @"_ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8for_each17hc080b8e937db1b72E"(ptr %19, ptr %21, ptr align 8 %6) #146, !dbg !45836 ret void, !dbg !45838 } after simplification : ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"preprocess__ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8for_each17hc080b8e937db1b72E"(ptr %0, ptr %1, ptr align 8 %2) unnamed_addr #139 personality ptr @rust_eh_personality !dbg !45902 { %4 = tail call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) ptr @malloc(i64 16), !enzyme_fromstack !5299 store ptr %0, ptr %4, align 8 %5 = getelementptr inbounds i8, ptr %4, i64 8 store ptr %1, ptr %5, align 8 #dbg_declare(ptr %4, !45904, !DIExpression(), !45908) #dbg_declare(ptr %2, !45905, !DIExpression(), !45909) br label %6, !dbg !45910 6: ; preds = %14, %3 %7 = phi i64 [ %8, %14 ], [ 0, %3 ], !dbg !45911 %8 = add nuw nsw i64 %7, 1, !dbg !45911 %9 = call align 4 ptr @"_ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9017ae9fb1553667E"(ptr align 8 %4) #146, !dbg !45911 %10 = ptrtoint ptr %9 to i64, !dbg !45911 %11 = icmp eq i64 %10, 0, !dbg !45911 %12 = select i1 %11, i64 0, i64 1, !dbg !45911 %13 = icmp eq i64 %12, 1, !dbg !45912 br i1 %13, label %14, label %15, !dbg !45912 14: ; preds = %6 #dbg_value(ptr %9, !45906, !DIExpression(), !45913) call void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted28_$u7b$$u7b$closure$u7d$$u7d$17h0955d083c83b577aE"(ptr align 8 %2, ptr align 4 %9) #146, !dbg !45914 br label %6, !dbg !45910 15: ; preds = %6 call void @"_ZN4core3ptr149drop_in_place$LT$alloc..vec..Vec$LT$$RF$mut$u20$f32$GT$..extend_trusted$LT$core..slice..iter..IterMut$LT$f32$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h3fbc7f814c23971eE"(ptr align 8 %2) #146, !dbg !45915 ret void, !dbg !45916 } after simplification : ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal align 4 ptr @"preprocess__ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9017ae9fb1553667E"(ptr align 8 %0) unnamed_addr #139 !dbg !45938 { #dbg_value(ptr %0, !45940, !DIExpression(), !45945) #dbg_value(ptr %0, !2938, !DIExpression(), !45946) #dbg_value(ptr %0, !2946, !DIExpression(), !45948) #dbg_value(i64 1, !2952, !DIExpression(), !45948) #dbg_value(i64 1, !2987, !DIExpression(), !45950) %2 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !45952 #dbg_value(ptr %2, !2991, !DIExpression(), !45953) %3 = load ptr, ptr %2, align 8, !dbg !45955 #dbg_value(ptr %3, !45943, !DIExpression(), !45956) #dbg_value(ptr %3, !2964, !DIExpression(), !45957) #dbg_value(ptr %0, !2975, !DIExpression(), !45960) #dbg_value(ptr undef, !2976, !DIExpression(), !45960) %4 = load ptr, ptr %0, align 8, !dbg !45961 #dbg_value(ptr %4, !2964, !DIExpression(), !45962) %5 = icmp eq ptr %4, %3, !dbg !45961 %6 = zext i1 %5 to i8, !dbg !45961 %7 = trunc i8 %6 to i1, !dbg !45964 br i1 %7, label %13, label %8, !dbg !45964 8: ; preds = %1 %9 = load ptr, ptr %0, align 8, !dbg !45965 #dbg_value(ptr %9, !2953, !DIExpression(), !45966) %10 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !45967 #dbg_value(ptr %10, !3011, !DIExpression(), !45968) #dbg_value(ptr %10, !2958, !DIExpression(), !45970) %11 = load ptr, ptr %0, align 8, !dbg !45971 #dbg_value(ptr %11, !2986, !DIExpression(), !45950) %12 = getelementptr inbounds float, ptr %11, i64 1, !dbg !45972 store ptr %12, ptr %0, align 8, !dbg !45973 #dbg_value(ptr undef, !3027, !DIExpression(), !45974) #dbg_value(ptr %9, !2964, !DIExpression(), !45976) br label %13, !dbg !45978 13: ; preds = %1, %8 %14 = phi ptr [ %9, %8 ], [ null, %1 ], !dbg !45945 ret ptr %14, !dbg !45979 } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal { { ptr, i1 }, ptr, ptr } @"augmented__ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9017ae9fb1553667E"(ptr align 8 %0, ptr align 8 %1) unnamed_addr #139 !dbg !45980 { #dbg_value(ptr %0, !45982, !DIExpression(), !45987) #dbg_value(ptr %0, !2938, !DIExpression(), !45988) #dbg_value(ptr %0, !2946, !DIExpression(), !45990) #dbg_value(i64 1, !2952, !DIExpression(), !45990) #dbg_value(i64 1, !2987, !DIExpression(), !45992) %3 = alloca { { ptr, i1 }, ptr, ptr }, align 8, !dbg !45994 %4 = getelementptr inbounds { { ptr, i1 }, ptr, ptr }, ptr %3, i32 0, i32 0, !dbg !45994 %5 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !45994 #dbg_value(ptr %5, !2991, !DIExpression(), !45995) %6 = load ptr, ptr %5, align 8, !dbg !45997, !alias.scope !45998, !noalias !46001 #dbg_value(ptr %6, !45985, !DIExpression(), !46003) #dbg_value(ptr %6, !2964, !DIExpression(), !46004) #dbg_value(ptr %0, !2975, !DIExpression(), !46007) #dbg_value(ptr undef, !2976, !DIExpression(), !46007) %7 = load ptr, ptr %0, align 8, !dbg !46008, !alias.scope !45998, !noalias !46001 #dbg_value(ptr %7, !2964, !DIExpression(), !46009) %8 = icmp eq ptr %7, %6, !dbg !46008 %9 = getelementptr inbounds { ptr, i1 }, ptr %4, i32 0, i32 1, !dbg !46008 store i1 %8, ptr %9, align 1, !dbg !46008 %10 = zext i1 %8 to i8, !dbg !46008 %11 = trunc i8 %10 to i1, !dbg !46011 br i1 %11, label %20, label %12, !dbg !46011 12: ; preds = %2 %13 = load ptr, ptr %1, align 8, !dbg !46012, !alias.scope !46001, !noalias !45998 %14 = getelementptr inbounds { ptr, i1 }, ptr %4, i32 0, i32 0, !dbg !46012 store ptr %13, ptr %14, align 8, !dbg !46012 %15 = load ptr, ptr %0, align 8, !dbg !46012, !alias.scope !45998, !noalias !46001 #dbg_value(ptr %15, !2953, !DIExpression(), !46013) #dbg_value(ptr undef, !3011, !DIExpression(), !46014) #dbg_value(ptr undef, !2958, !DIExpression(), !46016) %16 = load ptr, ptr %1, align 8, !dbg !46017, !alias.scope !46001, !noalias !45998 %17 = load ptr, ptr %0, align 8, !dbg !46017, !alias.scope !45998, !noalias !46001 #dbg_value(ptr %17, !2986, !DIExpression(), !45992) %18 = getelementptr inbounds float, ptr %16, i64 1, !dbg !46018 %19 = getelementptr inbounds float, ptr %17, i64 1, !dbg !46018 store ptr %18, ptr %1, align 8, !dbg !46019, !alias.scope !46001, !noalias !45998 store ptr %19, ptr %0, align 8, !dbg !46019, !alias.scope !45998, !noalias !46001 #dbg_value(ptr undef, !3027, !DIExpression(), !46020) #dbg_value(ptr %15, !2964, !DIExpression(), !46022) br label %20, !dbg !46024 20: ; preds = %12, %2 %21 = phi ptr [ %13, %12 ], [ null, %2 ], !dbg !45987 %22 = phi ptr [ %15, %12 ], [ null, %2 ], !dbg !45987 %23 = getelementptr inbounds { { ptr, i1 }, ptr, ptr }, ptr %3, i32 0, i32 1, !dbg !46025 store ptr %22, ptr %23, align 8, !dbg !46025 %24 = getelementptr inbounds { { ptr, i1 }, ptr, ptr }, ptr %3, i32 0, i32 2, !dbg !46025 store ptr %21, ptr %24, align 8, !dbg !46025 %25 = load { { ptr, i1 }, ptr, ptr }, ptr %3, align 8, !dbg !46025 ret { { ptr, i1 }, ptr, ptr } %25, !dbg !46025 } after simplification : ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"preprocess__ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted28_$u7b$$u7b$closure$u7d$$u7d$17h0955d083c83b577aE"(ptr align 8 %0, ptr align 4 %1) unnamed_addr #139 !dbg !46032 { #dbg_value(ptr undef, !46035, !DIExpression(DW_OP_deref, DW_OP_plus_uconst, 16), !46037) #dbg_value(ptr undef, !46036, !DIExpression(DW_OP_deref, DW_OP_LLVM_fragment, 0, 64), !46037) #dbg_value(ptr %1, !46034, !DIExpression(), !46037) #dbg_value(ptr %1, !3052, !DIExpression(), !46038) #dbg_value(i64 1, !3068, !DIExpression(), !46040) %3 = getelementptr inbounds i8, ptr %0, i64 16, !dbg !46042 %4 = load ptr, ptr %3, align 8, !dbg !46042 #dbg_value(ptr %4, !3071, !DIExpression(), !46043) #dbg_value(ptr %0, !3080, !DIExpression(), !46045) %5 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !46047 %6 = load i64, ptr %5, align 8, !dbg !46047 #dbg_value(i64 %6, !3076, !DIExpression(), !46043) %7 = getelementptr inbounds ptr, ptr %4, i64 %6, !dbg !46048 #dbg_value(ptr %7, !3057, !DIExpression(), !46038) store ptr %1, ptr %7, align 8, !dbg !46049 #dbg_value(ptr %0, !3067, !DIExpression(), !46040) %8 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !46050 %9 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !46050 %10 = load i64, ptr %9, align 8, !dbg !46050 %11 = add i64 %10, 1, !dbg !46050 store i64 %11, ptr %8, align 8, !dbg !46050 ret void, !dbg !46051 } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal { ptr, i64 } @"augmented__ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted28_$u7b$$u7b$closure$u7d$$u7d$17h0955d083c83b577aE"(ptr align 8 %0, ptr align 8 %1, ptr align 4 %2, ptr align 4 %3) unnamed_addr #139 !dbg !46052 { #dbg_value(ptr undef, !46055, !DIExpression(DW_OP_deref, DW_OP_plus_uconst, 16), !46057) #dbg_value(ptr undef, !46056, !DIExpression(DW_OP_deref, DW_OP_LLVM_fragment, 0, 64), !46057) #dbg_value(ptr %2, !46054, !DIExpression(), !46057) #dbg_value(ptr %2, !3052, !DIExpression(), !46058) #dbg_value(i64 1, !3068, !DIExpression(), !46060) %5 = alloca { ptr, i64 }, align 8, !dbg !46062 %6 = getelementptr inbounds i8, ptr %1, i64 16, !dbg !46062 %7 = getelementptr inbounds i8, ptr %0, i64 16, !dbg !46062 %8 = load ptr, ptr %6, align 8, !dbg !46062, !alias.scope !46063, !noalias !46066 %9 = getelementptr inbounds { ptr, i64 }, ptr %5, i32 0, i32 0, !dbg !46062 store ptr %8, ptr %9, align 8, !dbg !46062 %10 = load ptr, ptr %7, align 8, !dbg !46062, !alias.scope !46066, !noalias !46063 #dbg_value(ptr %10, !3071, !DIExpression(), !46068) #dbg_value(ptr %0, !3080, !DIExpression(), !46070) %11 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !46072 %12 = load i64, ptr %11, align 8, !dbg !46072, !alias.scope !46066, !noalias !46063 #dbg_value(i64 %12, !3076, !DIExpression(), !46068) %13 = getelementptr inbounds { ptr, i64 }, ptr %5, i32 0, i32 1, !dbg !46073 store i64 %12, ptr %13, align 8, !dbg !46073 %14 = getelementptr inbounds ptr, ptr %8, i64 %12, !dbg !46073 %15 = getelementptr inbounds ptr, ptr %10, i64 %12, !dbg !46073 #dbg_value(ptr %15, !3057, !DIExpression(), !46058) store ptr %3, ptr %14, align 8, !dbg !46074, !alias.scope !46075, !noalias !46078 store ptr %2, ptr %15, align 8, !dbg !46074, !alias.scope !46078, !noalias !46075 #dbg_value(ptr %0, !3067, !DIExpression(), !46060) %16 = getelementptr inbounds i8, ptr %1, i64 8, !dbg !46080 %17 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !46080 %18 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !46080 %19 = load i64, ptr %18, align 8, !dbg !46080, !alias.scope !46066, !noalias !46063 %20 = add i64 %19, 1, !dbg !46080 store i64 %20, ptr %16, align 8, !dbg !46080, !alias.scope !46063, !noalias !46066 store i64 %20, ptr %17, align 8, !dbg !46080, !alias.scope !46066, !noalias !46063 %21 = load { ptr, i64 }, ptr %5, align 8, !dbg !46081 ret { ptr, i64 } %21, !dbg !46081 } after simplification : ; Function Attrs: mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"preprocess__ZN4core3ptr149drop_in_place$LT$alloc..vec..Vec$LT$$RF$mut$u20$f32$GT$..extend_trusted$LT$core..slice..iter..IterMut$LT$f32$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h3fbc7f814c23971eE"(ptr align 8 %0) unnamed_addr #142 !dbg !46084 { #dbg_value(ptr %0, !46086, !DIExpression(), !46087) call void @"_ZN4core3ptr62drop_in_place$LT$alloc..vec..set_len_on_drop..SetLenOnDrop$GT$17hec1698d7d5d997d2E"(ptr align 8 %0) #146, !dbg !46088 ret void, !dbg !46088 } after simplification : ; Function Attrs: mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"preprocess__ZN4core3ptr62drop_in_place$LT$alloc..vec..set_len_on_drop..SetLenOnDrop$GT$17hec1698d7d5d997d2E"(ptr align 8 %0) unnamed_addr #142 !dbg !46094 { #dbg_value(ptr %0, !46096, !DIExpression(), !46097) call void @"_ZN83_$LT$alloc..vec..set_len_on_drop..SetLenOnDrop$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbb6bed583408ae61E"(ptr align 8 %0) #146, !dbg !46098 ret void, !dbg !46098 } after simplification : ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"preprocess__ZN83_$LT$alloc..vec..set_len_on_drop..SetLenOnDrop$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbb6bed583408ae61E"(ptr align 8 %0) unnamed_addr #139 !dbg !46104 { #dbg_value(ptr %0, !46106, !DIExpression(), !46107) %2 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !46108 %3 = load i64, ptr %2, align 8, !dbg !46108 %4 = load ptr, ptr %0, align 8, !dbg !46109 store i64 %3, ptr %4, align 8, !dbg !46109 ret void, !dbg !46110 } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal ptr @"augmented__ZN83_$LT$alloc..vec..set_len_on_drop..SetLenOnDrop$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbb6bed583408ae61E"(ptr align 8 %0, ptr align 8 %1) unnamed_addr #139 !dbg !46111 { #dbg_value(ptr %0, !46113, !DIExpression(), !46114) %3 = alloca ptr, align 8, !dbg !46115 %4 = getelementptr inbounds i8, ptr %1, i64 8, !dbg !46115 %5 = getelementptr inbounds i8, ptr %0, i64 8, !dbg !46115 %6 = load i64, ptr %4, align 8, !dbg !46115, !alias.scope !46116, !noalias !46119 %7 = load i64, ptr %5, align 8, !dbg !46115, !alias.scope !46119, !noalias !46116 %8 = load ptr, ptr %1, align 8, !dbg !46121, !alias.scope !46116, !noalias !46119 store ptr %8, ptr %3, align 8, !dbg !46121 %9 = load ptr, ptr %0, align 8, !dbg !46121, !alias.scope !46119, !noalias !46116 store i64 %6, ptr %8, align 8, !dbg !46121, !alias.scope !46122, !noalias !46125 store i64 %7, ptr %9, align 8, !dbg !46121, !alias.scope !46125, !noalias !46122 %10 = load ptr, ptr %3, align 8, !dbg !46127 ret ptr %10, !dbg !46127 } ; Function Attrs: mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal ptr @"augmented__ZN4core3ptr62drop_in_place$LT$alloc..vec..set_len_on_drop..SetLenOnDrop$GT$17hec1698d7d5d997d2E"(ptr align 8 %0, ptr align 8 %1) unnamed_addr #142 !dbg !46123 { #dbg_value(ptr %0, !46125, !DIExpression(), !46126) %3 = alloca ptr, align 8, !dbg !46127 %4 = call ptr @"augmented__ZN83_$LT$alloc..vec..set_len_on_drop..SetLenOnDrop$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbb6bed583408ae61E"(ptr align 8 %0, ptr align 8 %1), !dbg !46127 store ptr %4, ptr %3, align 8, !dbg !46127 %5 = load ptr, ptr %3, align 8, !dbg !46127 ret ptr %5, !dbg !46127 } ; Function Attrs: mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal ptr @"augmented__ZN4core3ptr149drop_in_place$LT$alloc..vec..Vec$LT$$RF$mut$u20$f32$GT$..extend_trusted$LT$core..slice..iter..IterMut$LT$f32$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h3fbc7f814c23971eE"(ptr align 8 %0, ptr align 8 %1) unnamed_addr #142 !dbg !46123 { #dbg_value(ptr %0, !46125, !DIExpression(), !46126) %3 = alloca ptr, align 8, !dbg !46127 %4 = call ptr @"augmented__ZN4core3ptr62drop_in_place$LT$alloc..vec..set_len_on_drop..SetLenOnDrop$GT$17hec1698d7d5d997d2E"(ptr align 8 %0, ptr align 8 %1), !dbg !46127 store ptr %4, ptr %3, align 8, !dbg !46127 %5 = load ptr, ptr %3, align 8, !dbg !46127 ret ptr %5, !dbg !46127 } ; Function Attrs: inlinehint mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal { ptr, ptr, ptr, ptr, ptr, ptr, ptr } @"augmented__ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8for_each17hc080b8e937db1b72E"(ptr %0, ptr %1, ptr %2, ptr %3, ptr align 8 %4, ptr align 8 %5) unnamed_addr #139 personality ptr @rust_eh_personality !dbg !46099 { %7 = alloca { ptr, ptr, ptr, ptr, ptr, ptr, ptr }, align 8 %8 = alloca i64, align 8 %9 = alloca i64, align 8 %10 = alloca ptr, align 8 %11 = alloca ptr, align 8 %12 = alloca ptr, align 8 %13 = alloca ptr, align 8 %14 = tail call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) ptr @malloc(i64 16) %15 = getelementptr inbounds { ptr, ptr, ptr, ptr, ptr, ptr, ptr }, ptr %7, i32 0, i32 0 store ptr %14, ptr %15, align 8 call void @llvm.memset.p0.i64(ptr nonnull dereferenceable(16) dereferenceable_or_null(16) %14, i8 0, i64 16, i1 false) %16 = tail call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) ptr @malloc(i64 16), !enzyme_fromstack !5299 %17 = getelementptr inbounds { ptr, ptr, ptr, ptr, ptr, ptr, ptr }, ptr %7, i32 0, i32 1 store ptr %16, ptr %17, align 8 store ptr %1, ptr %14, align 8, !alias.scope !46105, !noalias !46108 store ptr %0, ptr %16, align 8, !alias.scope !46108, !noalias !46105 %18 = getelementptr inbounds i8, ptr %14, i64 8 %19 = getelementptr inbounds i8, ptr %16, i64 8 store ptr %3, ptr %18, align 8, !alias.scope !46105, !noalias !46108 store ptr %2, ptr %19, align 8, !alias.scope !46108, !noalias !46105 #dbg_declare(ptr %16, !46101, !DIExpression(), !46110) #dbg_declare(ptr %4, !46102, !DIExpression(), !46111) store ptr null, ptr %10, align 8, !dbg !46112 store ptr null, ptr %11, align 8, !dbg !46112 store ptr null, ptr %12, align 8, !dbg !46112 store ptr null, ptr %13, align 8, !dbg !46112 br label %20, !dbg !46112 20: ; preds = %105, %6 %21 = phi i64 [ %22, %105 ], [ 0, %6 ], !dbg !46113 %22 = add nuw nsw i64 %21, 1, !dbg !46113 %23 = load ptr, ptr %13, align 8, !dbg !46113 %24 = and i64 %22, 1, !dbg !46113 %25 = icmp ne i64 %24, 0, !dbg !46113 %26 = call i64 @llvm.ctpop.i64(i64 %22), !dbg !46113 %27 = icmp ult i64 %26, 3, !dbg !46113 %28 = and i1 %27, %25, !dbg !46113 br i1 %28, label %29, label %37, !dbg !46113 29: ; preds = %20 %30 = call i64 @llvm.ctlz.i64(i64 %22, i1 true), !dbg !46113 %31 = sub nuw nsw i64 64, %30, !dbg !46113 %32 = shl i64 16, %31, !dbg !46113 %33 = lshr i64 %32, 1, !dbg !46113 %34 = icmp eq i64 %22, 1, !dbg !46113 %35 = select i1 %34, i64 0, i64 %33, !dbg !46113 %36 = call ptr @realloc(ptr %23, i64 %32), !dbg !46113 br label %37, !dbg !46113 37: ; preds = %20, %29 %38 = phi ptr [ %36, %29 ], [ %23, %20 ], !dbg !46113 %39 = getelementptr inbounds { ptr, ptr, ptr, ptr, ptr, ptr, ptr }, ptr %7, i32 0, i32 5, !dbg !46113 store ptr %38, ptr %39, align 8, !dbg !46113 store ptr %38, ptr %13, align 8, !dbg !46113 %40 = load ptr, ptr %12, align 8, !dbg !46113 %41 = and i64 %22, 1, !dbg !46113 %42 = icmp ne i64 %41, 0, !dbg !46113 %43 = call i64 @llvm.ctpop.i64(i64 %22), !dbg !46113 %44 = icmp ult i64 %43, 3, !dbg !46113 %45 = and i1 %44, %42, !dbg !46113 br i1 %45, label %46, label %54, !dbg !46113 46: ; preds = %37 %47 = call i64 @llvm.ctlz.i64(i64 %22, i1 true), !dbg !46113 %48 = sub nuw nsw i64 64, %47, !dbg !46113 %49 = shl i64 8, %48, !dbg !46113 %50 = lshr i64 %49, 1, !dbg !46113 %51 = icmp eq i64 %22, 1, !dbg !46113 %52 = select i1 %51, i64 0, i64 %50, !dbg !46113 %53 = call ptr @realloc(ptr %40, i64 %49), !dbg !46113 br label %54, !dbg !46113 54: ; preds = %37, %46 %55 = phi ptr [ %53, %46 ], [ %40, %37 ], !dbg !46113 %56 = getelementptr inbounds { ptr, ptr, ptr, ptr, ptr, ptr, ptr }, ptr %7, i32 0, i32 4, !dbg !46113 store ptr %55, ptr %56, align 8, !dbg !46113 store ptr %55, ptr %12, align 8, !dbg !46113 %57 = load ptr, ptr %11, align 8, !dbg !46113 %58 = and i64 %22, 1, !dbg !46113 %59 = icmp ne i64 %58, 0, !dbg !46113 %60 = call i64 @llvm.ctpop.i64(i64 %22), !dbg !46113 %61 = icmp ult i64 %60, 3, !dbg !46113 %62 = and i1 %61, %59, !dbg !46113 br i1 %62, label %63, label %71, !dbg !46113 63: ; preds = %54 %64 = call i64 @llvm.ctlz.i64(i64 %22, i1 true), !dbg !46113 %65 = sub nuw nsw i64 64, %64, !dbg !46113 %66 = shl i64 8, %65, !dbg !46113 %67 = lshr i64 %66, 1, !dbg !46113 %68 = icmp eq i64 %22, 1, !dbg !46113 %69 = select i1 %68, i64 0, i64 %67, !dbg !46113 %70 = call ptr @realloc(ptr %57, i64 %66), !dbg !46113 br label %71, !dbg !46113 71: ; preds = %54, %63 %72 = phi ptr [ %70, %63 ], [ %57, %54 ], !dbg !46113 %73 = getelementptr inbounds { ptr, ptr, ptr, ptr, ptr, ptr, ptr }, ptr %7, i32 0, i32 3, !dbg !46113 store ptr %72, ptr %73, align 8, !dbg !46113 store ptr %72, ptr %11, align 8, !dbg !46113 %74 = load ptr, ptr %10, align 8, !dbg !46113 %75 = and i64 %22, 1, !dbg !46113 %76 = icmp ne i64 %75, 0, !dbg !46113 %77 = call i64 @llvm.ctpop.i64(i64 %22), !dbg !46113 %78 = icmp ult i64 %77, 3, !dbg !46113 %79 = and i1 %78, %76, !dbg !46113 br i1 %79, label %80, label %88, !dbg !46113 80: ; preds = %71 %81 = call i64 @llvm.ctlz.i64(i64 %22, i1 true), !dbg !46113 %82 = sub nuw nsw i64 64, %81, !dbg !46113 %83 = shl i64 16, %82, !dbg !46113 %84 = lshr i64 %83, 1, !dbg !46113 %85 = icmp eq i64 %22, 1, !dbg !46113 %86 = select i1 %85, i64 0, i64 %84, !dbg !46113 %87 = call ptr @realloc(ptr %74, i64 %83), !dbg !46113 br label %88, !dbg !46113 88: ; preds = %71, %80 %89 = phi ptr [ %87, %80 ], [ %74, %71 ], !dbg !46113 %90 = getelementptr inbounds { ptr, ptr, ptr, ptr, ptr, ptr, ptr }, ptr %7, i32 0, i32 2, !dbg !46113 store ptr %89, ptr %90, align 8, !dbg !46113 store ptr %89, ptr %10, align 8, !dbg !46113 %91 = call { { ptr, i1 }, ptr, ptr } @"augmented__ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9017ae9fb1553667E"(ptr align 8 %16, ptr align 8 %14), !dbg !46113 %92 = extractvalue { { ptr, i1 }, ptr, ptr } %91, 0, !dbg !46113 %93 = load ptr, ptr %10, align 8, !dbg !46113, !dereferenceable !5299, !invariant.group !46114 %94 = getelementptr inbounds { ptr, i1 }, ptr %93, i64 %21, !dbg !46113 store { ptr, i1 } %92, ptr %94, align 8, !dbg !46113, !invariant.group !46115 %95 = extractvalue { { ptr, i1 }, ptr, ptr } %91, 1, !dbg !46113 %96 = load ptr, ptr %11, align 8, !dbg !46113, !dereferenceable !5299, !invariant.group !46116 %97 = getelementptr inbounds ptr, ptr %96, i64 %21, !dbg !46113 store ptr %95, ptr %97, align 8, !dbg !46113, !invariant.group !46117 %98 = extractvalue { { ptr, i1 }, ptr, ptr } %91, 2, !dbg !46113 %99 = load ptr, ptr %12, align 8, !dbg !46113, !dereferenceable !5299, !invariant.group !46118 %100 = getelementptr inbounds ptr, ptr %99, i64 %21, !dbg !46113 store ptr %98, ptr %100, align 8, !dbg !46113, !invariant.group !46119 %101 = ptrtoint ptr %95 to i64, !dbg !46113 %102 = icmp eq i64 %101, 0, !dbg !46113 %103 = select i1 %102, i64 0, i64 1, !dbg !46113 %104 = icmp eq i64 %103, 1, !dbg !46120 br i1 %104, label %105, label %109, !dbg !46120 105: ; preds = %88 #dbg_value(ptr %95, !46103, !DIExpression(), !46121) %106 = call { ptr, i64 } @"augmented__ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted28_$u7b$$u7b$closure$u7d$$u7d$17h0955d083c83b577aE"(ptr align 8 %4, ptr align 8 %5, ptr align 4 %95, ptr align 4 %98), !dbg !46122 %107 = load ptr, ptr %13, align 8, !dbg !46122, !dereferenceable !5299, !invariant.group !46123 %108 = getelementptr inbounds { ptr, i64 }, ptr %107, i64 %21, !dbg !46122 store { ptr, i64 } %106, ptr %108, align 8, !dbg !46122, !invariant.group !46124 br label %20, !dbg !46112 109: ; preds = %88 %110 = phi i64 [ %21, %88 ], !dbg !46125 store i64 %110, ptr %9, align 8, !dbg !46125, !invariant.group !46126 %111 = call ptr @"augmented__ZN4core3ptr149drop_in_place$LT$alloc..vec..Vec$LT$$RF$mut$u20$f32$GT$..extend_trusted$LT$core..slice..iter..IterMut$LT$f32$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h3fbc7f814c23971eE"(ptr align 8 %4, ptr align 8 %5), !dbg !46125 %112 = getelementptr inbounds { ptr, ptr, ptr, ptr, ptr, ptr, ptr }, ptr %7, i32 0, i32 6, !dbg !46127 store ptr %111, ptr %112, align 8, !dbg !46127 %113 = load { ptr, ptr, ptr, ptr, ptr, ptr, ptr }, ptr %7, align 8, !dbg !46127 ret { ptr, ptr, ptr, ptr, ptr, ptr, ptr } %113, !dbg !46127 } after simplification : ; Function Attrs: mustprogress nounwind nonlazybind sanitize_hwaddress willreturn define internal void @"preprocess__ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hfbf4bb7fa5035d73E"(ptr align 8 %0, i64 %1, ptr align 8 %2) unnamed_addr #142 !dbg !46143 { #dbg_value(ptr %0, !46145, !DIExpression(), !46147) #dbg_value(i64 %1, !46146, !DIExpression(), !46147) #dbg_value(i64 %1, !2818, !DIExpression(), !46148) #dbg_value(i64 %1, !2828, !DIExpression(), !46150) #dbg_value(i64 %1, !2839, !DIExpression(), !46152) #dbg_value(ptr %0, !2824, !DIExpression(), !46148) %4 = getelementptr inbounds i8, ptr %0, i64 16, !dbg !46154 %5 = load i64, ptr %4, align 8, !dbg !46154 #dbg_value(i64 %5, !2825, !DIExpression(), !46148) #dbg_value(i64 %5, !2835, !DIExpression(), !46150) #dbg_value(i64 %5, !2843, !DIExpression(), !46152) #dbg_value(i64 %5, !2851, !DIExpression(), !46155) #dbg_value(ptr %0, !2834, !DIExpression(), !46150) #dbg_value(ptr %0, !2842, !DIExpression(), !46152) #dbg_value(ptr %0, !2864, !DIExpression(), !46157) #dbg_value(i64 8, !2836, !DIExpression(DW_OP_LLVM_fragment, 0, 64), !46150) #dbg_value(i64 8, !2836, !DIExpression(DW_OP_LLVM_fragment, 64, 64), !46150) #dbg_value(i64 8, !2844, !DIExpression(DW_OP_LLVM_fragment, 0, 64), !46152) #dbg_value(i64 8, !2844, !DIExpression(DW_OP_LLVM_fragment, 64, 64), !46152) #dbg_value(ptr undef, !2873, !DIExpression(), !46159) #dbg_value(i64 8, !2867, !DIExpression(), !46157) %6 = load i64, ptr %0, align 8, !dbg !46161 #dbg_value(i64 %6, !2848, !DIExpression(), !46155) %7 = sub i64 %6, %5, !dbg !46162 %8 = icmp ugt i64 %1, %7, !dbg !46163 br i1 %8, label %9, label %10, !dbg !46164 9: ; preds = %3 call void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$7reserve21do_reserve_and_handle17hf69592d80ba560b8E"(ptr align 8 %0, i64 %5, i64 %1, i64 8, i64 8) #146, !dbg !46165 br label %10, !dbg !46165 10: ; preds = %3, %9 ret void, !dbg !46166 } after simplification : ; Function Attrs: cold mustprogress nonlazybind optsize sanitize_hwaddress willreturn uwtable define internal void @"preprocess__ZN5alloc7raw_vec20RawVecInner$LT$A$GT$7reserve21do_reserve_and_handle17hf69592d80ba560b8E"(ptr noalias noundef align 8 dereferenceable(16) %0, i64 noundef %1, i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %3, i64 noundef %4) unnamed_addr #146 { %6 = tail call { i64, i64 } @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$14grow_amortized17h6d11486032b72786E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %1, i64 noundef %2, i64 noundef %3, i64 noundef %4) #147 %7 = extractvalue { i64, i64 } %6, 0 %8 = icmp eq i64 %7, -9223372036854775807 br i1 %8, label %11, label %9 9: ; preds = %5 %10 = extractvalue { i64, i64 } %6, 1 tail call void @_ZN5alloc7raw_vec12handle_error17hc2481b1ab2b580e1E(i64 noundef %7, i64 %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.bc1f96a755d89187c9c8d9062830de57.5) #148 unreachable 11: ; preds = %5 ret void } after simplification : ; Function Attrs: mustprogress nounwind nonlazybind optsize sanitize_hwaddress willreturn uwtable define internal { i64, i64 } @"preprocess__ZN5alloc7raw_vec20RawVecInner$LT$A$GT$14grow_amortized17h6d11486032b72786E"(ptr noalias nocapture noundef align 8 dereferenceable(16) %0, i64 noundef %1, i64 noundef %2, i64 noundef range(i64 1, -9223372036854775807) %3, i64 noundef %4) unnamed_addr #144 personality ptr @rust_eh_personality { %6 = tail call noalias nonnull dereferenceable(24) dereferenceable_or_null(24) ptr @malloc(i64 24), !enzyme_fromstack !5299 %7 = tail call noalias nonnull dereferenceable(24) dereferenceable_or_null(24) ptr @malloc(i64 24), !enzyme_fromstack !5299 %8 = icmp eq i64 %4, 0 %9 = getelementptr inbounds i8, ptr %6, i64 16 %10 = getelementptr inbounds i8, ptr %6, i64 8 br i1 %8, label %14, label %11 11: ; preds = %5 %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1, i64 %2) #147 %13 = extractvalue { i64, i1 } %12, 1 br i1 %13, label %14, label %19 14: ; preds = %54, %51, %19, %11, %5 %15 = phi i64 [ %57, %54 ], [ undef, %51 ], [ undef, %5 ], [ undef, %11 ], [ undef, %19 ] %16 = phi i64 [ %55, %54 ], [ -9223372036854775807, %51 ], [ 0, %5 ], [ 0, %11 ], [ 0, %19 ] %17 = insertvalue { i64, i64 } poison, i64 %16, 0 %18 = insertvalue { i64, i64 } %17, i64 %15, 1 ret { i64, i64 } %18 19: ; preds = %11 %20 = add nuw i64 %2, %1 %21 = load i64, ptr %0, align 8, !noundef !23 %22 = shl i64 %21, 1 %23 = tail call noundef i64 @llvm.umax.i64(i64 %22, i64 %20) #147 %24 = icmp eq i64 %4, 1 %25 = icmp ult i64 %4, 1025 %26 = select i1 %25, i64 4, i64 1 %27 = select i1 %24, i64 8, i64 %26 %28 = tail call noundef i64 @llvm.umax.i64(i64 %27, i64 %23) #147 %29 = add i64 %3, -1 %30 = add nuw i64 %29, %4 %31 = sub i64 0, %3 %32 = and i64 %30, %31 %33 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %32, i64 %28) #147 %34 = extractvalue { i64, i1 } %33, 0 %35 = extractvalue { i64, i1 } %33, 1 %36 = sub nuw i64 -9223372036854775808, %3 %37 = icmp ugt i64 %34, %36 %38 = select i1 %35, i1 true, i1 %37 br i1 %38, label %14, label %39 39: ; preds = %19 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #147 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #147 tail call void @llvm.experimental.noalias.scope.decl(metadata !16149) #147 tail call void @llvm.experimental.noalias.scope.decl(metadata !16152) #147 %40 = icmp eq i64 %21, 0 br i1 %40, label %45, label %41 41: ; preds = %39 %42 = mul nuw i64 %21, %4 %43 = getelementptr inbounds i8, ptr %0, i64 8 %44 = load ptr, ptr %43, align 8, !alias.scope !16152, !noalias !16149, !nonnull !23, !noundef !23 store ptr %44, ptr %6, align 8, !alias.scope !16149, !noalias !16152 store i64 %3, ptr %10, align 8, !alias.scope !16149, !noalias !16152 br label %45 45: ; preds = %41, %39 %46 = phi ptr [ %9, %41 ], [ %10, %39 ] %47 = phi i64 [ %42, %41 ], [ 0, %39 ] store i64 %47, ptr %46, align 8, !alias.scope !16149, !noalias !16152 call void @_ZN5alloc7raw_vec11finish_grow17hce1ff89b620ba31cE(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %7, i64 noundef %3, i64 noundef %34, ptr noalias nocapture noundef nonnull readonly align 8 dereferenceable(24) %6, ptr noalias nonnull align 1 poison) #147 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #147 %48 = load i64, ptr %7, align 8, !range !5312, !noundef !23 %49 = trunc nuw i64 %48 to i1 %50 = getelementptr inbounds i8, ptr %7, i64 8 br i1 %49, label %54, label %51 51: ; preds = %45 %52 = load ptr, ptr %50, align 8, !nonnull !23, !noundef !23 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #147 %53 = getelementptr inbounds i8, ptr %0, i64 8 store ptr %52, ptr %53, align 8 store i64 %28, ptr %0, align 8 br label %14 54: ; preds = %45 %55 = load i64, ptr %50, align 8, !range !135, !noundef !23 %56 = getelementptr inbounds i8, ptr %7, i64 16 %57 = load i64, ptr %56, align 8 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #147 br label %14 } after simplification : ; Function Attrs: mustprogress noinline nounwind nonlazybind optsize sanitize_hwaddress willreturn uwtable define internal void @preprocess__ZN5alloc7raw_vec11finish_grow17hce1ff89b620ba31cE(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([24 x i8]) align 8 dereferenceable(24) %0, i64 noundef range(i64 1, -9223372036854775807) %1, i64 noundef %2, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %3, ptr noalias nocapture nonnull readnone align 1 %4) unnamed_addr #147 { %6 = getelementptr inbounds i8, ptr %3, i64 8 %7 = load i64, ptr %6, align 8, !range !135, !noundef !23 %8 = icmp eq i64 %7, 0 br i1 %8, label %25, label %9 9: ; preds = %5 %10 = load ptr, ptr %3, align 8, !nonnull !23, !noundef !23 %11 = getelementptr inbounds i8, ptr %3, i64 16 %12 = load i64, ptr %11, align 8, !noundef !23 %13 = icmp eq i64 %7, %1 tail call void @llvm.assume(i1 %13) #148 %14 = icmp eq i64 %12, 0 br i1 %14, label %15, label %22 15: ; preds = %9 %16 = icmp eq i64 %2, 0 br i1 %16, label %17, label %19 17: ; preds = %15 %18 = getelementptr i8, ptr null, i64 %1 br label %32 19: ; preds = %15 %20 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 %21 = tail call noalias noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #149 br label %32 22: ; preds = %9 %23 = icmp ule i64 %12, %2 tail call void @llvm.assume(i1 %23) #148 %24 = tail call noundef ptr @__rust_realloc(ptr noundef nonnull %10, i64 noundef %12, i64 noundef %1, i64 noundef %2) #149 br label %32 25: ; preds = %5 %26 = icmp eq i64 %2, 0 br i1 %26, label %27, label %29 27: ; preds = %25 %28 = getelementptr i8, ptr null, i64 %1 br label %32 29: ; preds = %25 %30 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 %31 = tail call noalias noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #149 br label %32 32: ; preds = %29, %27, %22, %19, %17 %33 = phi ptr [ %24, %22 ], [ %18, %17 ], [ %21, %19 ], [ %28, %27 ], [ %31, %29 ] %34 = icmp eq ptr %33, null %35 = inttoptr i64 %1 to ptr %36 = select i1 %34, ptr %35, ptr %33 %37 = zext i1 %34 to i64 %38 = getelementptr inbounds i8, ptr %0, i64 8 store ptr %36, ptr %38, align 8 %39 = getelementptr inbounds i8, ptr %0, i64 16 store i64 %2, ptr %39, align 8 store i64 %37, ptr %0, align 8 ret void } after simplification : ; Function Attrs: mustprogress sanitize_hwaddress willreturn define internal ptr @preprocess___rust_realloc(ptr %0, i64 %1, i64 %2, i64 %3) #148 { %5 = tail call ptr @__rdl_realloc(ptr %0, i64 %1, i64 %2, i64 %3) #149 ret ptr %5 } error: :0:0: in function preprocess___rdl_realloc ptr (ptr, i64, i64, i64): Enzyme: could not statically determine size of realloc %23 = tail call noundef ptr @realloc(ptr noundef %0, i64 noundef %3) #151 - because of - ptr %0 warning: `ad` (bin "ad") generated 1 warning error: could not compile `ad` (bin "ad"); 1 warning emitted Caused by: process didn't exit successfully: `/home/manuel/.rustup/toolchains/enzyme/bin/rustc --crate-name ad --edition=2021 src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type bin --emit=dep-info,link -C panic=abort -C lto=fat -C codegen-units=1 -C debuginfo=2 --check-cfg 'cfg(docsrs)' --check-cfg 'cfg(feature, values())' -C metadata=29f69dc98f4b369b -C extra-filename=-29f69dc98f4b369b --out-dir /home/manuel/prog/ad/target/debug/deps -C incremental=/home/manuel/prog/ad/target/debug/incremental -L dependency=/home/manuel/prog/ad/target/debug/deps --extern ad=/home/manuel/prog/ad/target/debug/deps/libad-555ba978b46af691.rlib -Z autodiff=LooseTypes,Print` (exit status: 1)