diff --git a/bench/actix-rs/optimized/17w7f2f3gva337g5.ll b/bench/actix-rs/optimized/17w7f2f3gva337g5.ll index b1095dfcb8b..bf4b853cd1a 100644 --- a/bench/actix-rs/optimized/17w7f2f3gva337g5.ll +++ b/bench/actix-rs/optimized/17w7f2f3gva337g5.ll @@ -69,6 +69,7 @@ default.unreachable: ; preds = %15 24: ; preds = %15 %25 = getelementptr i8, ptr %.val, i64 -1 + call void @llvm.assume(i1 true) [ "align"(ptr %25, i64 8) ] %26 = icmp ne ptr %25, null call void @llvm.assume(i1 %26) %27 = getelementptr i8, ptr %.val, i64 15 diff --git a/bench/anki-rs/optimized/22lei7qbgq6q4wqu.ll b/bench/anki-rs/optimized/22lei7qbgq6q4wqu.ll index 1a19ccb22ae..97ae9e377d4 100644 --- a/bench/anki-rs/optimized/22lei7qbgq6q4wqu.ll +++ b/bench/anki-rs/optimized/22lei7qbgq6q4wqu.ll @@ -433,6 +433,7 @@ _ZN5alloc3fmt6format17hce246aee5769fae0E.exit: ; preds = %2 store ptr %63, ptr %13, align 8 %64 = getelementptr inbounds nuw i8, ptr %13, i64 8 store ptr @"_ZN60_$LT$std..io..error..Error$u20$as$u20$core..fmt..Display$GT$3fmt17h903d2f90598a70cbE", ptr %64, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %8), !noalias !104 store ptr @anon.7e169519e0ee15bcf2cc7834854a4ab3.24, ptr %8, align 8, !noalias !115 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 8 @@ -477,6 +478,7 @@ _ZN5alloc3fmt6format17hce246aee5769fae0E.exit: ; preds = %2 store ptr %10, ptr %11, align 8 %77 = getelementptr inbounds nuw i8, ptr %11, i64 8 store ptr @"_ZN66_$LT$alloc..borrow..Cow$LT$B$GT$$u20$as$u20$core..fmt..Display$GT$3fmt17ha070dd5ee76e4394E", ptr %77, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7), !noalias !117 store ptr @anon.7e169519e0ee15bcf2cc7834854a4ab3.19, ptr %7, align 8, !noalias !128 %.sroa.563.0..sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 8 @@ -572,6 +574,7 @@ _ZN5alloc3fmt6format17hce246aee5769fae0E.exit42: ; preds = %72 store ptr %99, ptr %103, align 8 %104 = getelementptr inbounds nuw i8, ptr %15, i64 40 store ptr @"_ZN60_$LT$std..io..error..Error$u20$as$u20$core..fmt..Display$GT$3fmt17h903d2f90598a70cbE", ptr %104, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5), !noalias !141 store ptr @anon.7e169519e0ee15bcf2cc7834854a4ab3.11, ptr %5, align 8, !noalias !152 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 8 @@ -697,6 +700,7 @@ default.unreachable: ; preds = %1 10: ; preds = %1 %11 = getelementptr i8, ptr %.val, i64 -1 + call void @llvm.assume(i1 true) [ "align"(ptr %11, i64 8) ] %12 = icmp ne ptr %11, null tail call void @llvm.assume(i1 %12) %13 = getelementptr i8, ptr %.val, i64 15 @@ -901,6 +905,7 @@ define noundef zeroext i1 @"_ZN66_$LT$anki_io..error..FileIoError$u20$as$u20$cor store ptr @anon.7e169519e0ee15bcf2cc7834854a4ab3.29, ptr %4, align 8, !alias.scope !205, !noalias !208 %11 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 2, ptr %11, align 8, !alias.scope !205, !noalias !208 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %12 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %12, align 8, !alias.scope !205, !noalias !208 %13 = getelementptr inbounds nuw i8, ptr %4, i64 16 diff --git a/bench/anki-rs/optimized/3c6trh22u01k5mzr.ll b/bench/anki-rs/optimized/3c6trh22u01k5mzr.ll index 2e9c36cf9cf..f91acea35ed 100644 --- a/bench/anki-rs/optimized/3c6trh22u01k5mzr.ll +++ b/bench/anki-rs/optimized/3c6trh22u01k5mzr.ll @@ -151,6 +151,7 @@ define hidden void @"_ZN4core3ptr105drop_in_place$LT$alloc..sync..Weak$LT$std..s 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !40 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc7786e16553ac581E.llvm.469525117986682804.exit" @@ -1330,6 +1331,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %9 diff --git a/bench/anki-rs/optimized/3tslueai5mplc1k4.ll b/bench/anki-rs/optimized/3tslueai5mplc1k4.ll index cba5a2c9678..36a78d2085e 100644 --- a/bench/anki-rs/optimized/3tslueai5mplc1k4.ll +++ b/bench/anki-rs/optimized/3tslueai5mplc1k4.ll @@ -35,13 +35,18 @@ define noundef zeroext i1 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u2 %8 = icmp eq ptr %7, %6 br i1 %8, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfda3e178ab080860E.exit.thread", label %9 +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfda3e178ab080860E.exit.thread": ; preds = %5 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] + br label %.loopexit + 9: ; preds = %5 %10 = getelementptr inbounds nuw i8, ptr %7, i64 80 store ptr %10, ptr %0, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %7, i64 8) ] %11 = call zeroext i1 @"_ZN14anki_proto_gen12get_services28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17hf48bab8ca5b1c62bE"(ptr nonnull align 8 %3, ptr nonnull align 8 %7) - br i1 %11, label %5, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfda3e178ab080860E.exit.thread" + br i1 %11, label %5, label %.loopexit -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfda3e178ab080860E.exit.thread": ; preds = %5, %9 +.loopexit: ; preds = %9, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfda3e178ab080860E.exit.thread" ret i1 %8 } @@ -59,19 +64,24 @@ define align 8 ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core. %9 = icmp eq ptr %8, %7 br i1 %9, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfda3e178ab080860E.exit.thread", label %10 +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfda3e178ab080860E.exit.thread": ; preds = %6 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] + br label %15 + 10: ; preds = %6 %11 = getelementptr inbounds nuw i8, ptr %8, i64 80 store ptr %11, ptr %0, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] store ptr %8, ptr %3, align 8 %12 = call zeroext i1 @"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h39c9d34820ec298aE"(ptr nonnull align 8 %4, ptr nonnull align 8 %3) br i1 %12, label %13, label %6 13: ; preds = %10 %14 = load ptr, ptr %3, align 8, !nonnull !3, !align !4, !noundef !3 - br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfda3e178ab080860E.exit.thread" + br label %15 -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfda3e178ab080860E.exit.thread": ; preds = %6, %13 - %.0 = phi ptr [ %14, %13 ], [ null, %6 ] +15: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfda3e178ab080860E.exit.thread", %13 + %.0 = phi ptr [ %14, %13 ], [ null, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfda3e178ab080860E.exit.thread" ] ret ptr %.0 } @@ -89,19 +99,24 @@ define align 8 ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core. %9 = icmp eq ptr %8, %7 br i1 %9, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2054e5925b6848a7E.exit.thread", label %10 +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2054e5925b6848a7E.exit.thread": ; preds = %6 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] + br label %15 + 10: ; preds = %6 %11 = getelementptr inbounds nuw i8, ptr %8, i64 72 store ptr %11, ptr %0, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] store ptr %8, ptr %3, align 8 %12 = call zeroext i1 @"_ZN14anki_proto_gen12get_services28_$u7b$$u7b$closure$u7d$$u7d$17h7f8f8f2e9841dc95E"(ptr nonnull align 8 %4, ptr nonnull align 8 %3) br i1 %12, label %13, label %6 13: ; preds = %10 %14 = load ptr, ptr %3, align 8, !nonnull !3, !align !4, !noundef !3 - br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2054e5925b6848a7E.exit.thread" + br label %15 -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2054e5925b6848a7E.exit.thread": ; preds = %6, %13 - %.0 = phi ptr [ %14, %13 ], [ null, %6 ] +15: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2054e5925b6848a7E.exit.thread", %13 + %.0 = phi ptr [ %14, %13 ], [ null, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2054e5925b6848a7E.exit.thread" ] ret ptr %.0 } @@ -126,6 +141,7 @@ define void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter.. 13: ; preds = %13, %8 %.0 = phi i64 [ 0, %8 ], [ %15, %13 ] %14 = getelementptr inbounds { { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 }, { ptr, [2 x i64] }, { ptr, [2 x i64] } }, ptr %0, i64 %.0 + call void @llvm.assume(i1 true) [ "align"(ptr %14, i64 8) ] call void @"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h99348c2566d8a9b9E"(ptr nonnull align 8 %4, ptr nonnull align 8 %14) %15 = add nuw i64 %.0, 1 %16 = icmp eq i64 %15, %12 @@ -135,7 +151,7 @@ define void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter.. ret void } -; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable +; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable define align 8 ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2054e5925b6848a7E"(ptr nocapture align 8 %0) unnamed_addr #3 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load ptr, ptr %2, align 8, !nonnull !3, !noundef !3 @@ -150,10 +166,11 @@ define align 8 ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core. 8: ; preds = %1, %6 %.0 = phi ptr [ %4, %6 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } -; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable +; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable define align 8 ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfda3e178ab080860E"(ptr nocapture align 8 %0) unnamed_addr #3 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load ptr, ptr %2, align 8, !nonnull !3, !noundef !3 @@ -168,11 +185,12 @@ define align 8 ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core. 8: ; preds = %1, %6 %.0 = phi ptr [ %4, %6 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable -define void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h74391cd1f6bad92aE"(ptr nocapture writeonly sret({ i64, { i64, i64 } }) align 8 initializes((0, 24)) %0, ptr nocapture readonly align 8 %1) unnamed_addr #3 { +define void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h74391cd1f6bad92aE"(ptr nocapture writeonly sret({ i64, { i64, i64 } }) align 8 initializes((0, 24)) %0, ptr nocapture readonly align 8 %1) unnamed_addr #4 { %3 = getelementptr inbounds nuw i8, ptr %1, i64 8 %4 = load ptr, ptr %3, align 8, !nonnull !3, !noundef !3 %5 = load ptr, ptr %1, align 8, !nonnull !3, !noundef !3 @@ -189,7 +207,7 @@ define void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter.. } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable -define void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17ha3eef96efc0e4201E"(ptr nocapture writeonly sret({ i64, { i64, i64 } }) align 8 initializes((0, 24)) %0, ptr nocapture readonly align 8 %1) unnamed_addr #3 { +define void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17ha3eef96efc0e4201E"(ptr nocapture writeonly sret({ i64, { i64, i64 } }) align 8 initializes((0, 24)) %0, ptr nocapture readonly align 8 %1) unnamed_addr #4 { %3 = getelementptr inbounds nuw i8, ptr %1, i64 8 %4 = load ptr, ptr %3, align 8, !nonnull !3, !noundef !3 %5 = load ptr, ptr %1, align 8, !nonnull !3, !noundef !3 @@ -205,7 +223,7 @@ define void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter.. ret void } -; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable +; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable define align 8 ptr @"_ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1cf4768bc629cabcE"(ptr nocapture align 8 %0) unnamed_addr #3 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load ptr, ptr %2, align 8, !nonnull !3, !noundef !3 @@ -220,10 +238,11 @@ define align 8 ptr @"_ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$co 8: ; preds = %1, %6 %.0 = phi ptr [ %4, %6 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } -; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable +; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable define align 8 ptr @"_ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2fef0eef171fbc41E"(ptr nocapture align 8 %0) unnamed_addr #3 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load ptr, ptr %2, align 8, !nonnull !3, !noundef !3 @@ -238,10 +257,11 @@ define align 8 ptr @"_ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$co 8: ; preds = %1, %6 %.0 = phi ptr [ %4, %6 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } -; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable +; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable define align 8 ptr @"_ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h3ecb8020001709afE"(ptr nocapture align 8 %0) unnamed_addr #3 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load ptr, ptr %2, align 8, !nonnull !3, !noundef !3 @@ -256,17 +276,18 @@ define align 8 ptr @"_ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$co 8: ; preds = %1, %6 %.0 = phi ptr [ %4, %6 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } ; Function Attrs: nonlazybind uwtable -declare i32 @rust_eh_personality(i32, i32, i64, ptr, ptr) unnamed_addr #4 +declare i32 @rust_eh_personality(i32, i32, i64, ptr, ptr) unnamed_addr #5 ; Function Attrs: inlinehint nonlazybind uwtable declare hidden zeroext i1 @"_ZN14anki_proto_gen12get_services28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17hf48bab8ca5b1c62bE"(ptr align 8, ptr align 8) unnamed_addr #2 ; Function Attrs: nonlazybind uwtable -declare zeroext i1 @"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h39c9d34820ec298aE"(ptr align 8, ptr align 8) unnamed_addr #4 +declare zeroext i1 @"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h39c9d34820ec298aE"(ptr align 8, ptr align 8) unnamed_addr #5 ; Function Attrs: inlinehint nonlazybind uwtable declare hidden zeroext i1 @"_ZN14anki_proto_gen12get_services28_$u7b$$u7b$closure$u7d$$u7d$17h7f8f8f2e9841dc95E"(ptr align 8, ptr align 8) unnamed_addr #2 @@ -275,14 +296,15 @@ declare hidden zeroext i1 @"_ZN14anki_proto_gen12get_services28_$u7b$$u7b$closur declare void @"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h99348c2566d8a9b9E"(ptr align 8, ptr align 8) unnamed_addr #2 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #5 +declare void @llvm.assume(i1 noundef) #6 attributes #0 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #3 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #4 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #3 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #4 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #5 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #6 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } !llvm.module.flags = !{!0, !1} !llvm.ident = !{!2} diff --git a/bench/base64-rs/optimized/25sh13l3jgkilua2.ll b/bench/base64-rs/optimized/25sh13l3jgkilua2.ll index 6c33289af51..030a889a2bf 100644 --- a/bench/base64-rs/optimized/25sh13l3jgkilua2.ll +++ b/bench/base64-rs/optimized/25sh13l3jgkilua2.ll @@ -69,7 +69,7 @@ define noundef range(i64 0, 4) i64 @_ZN6base646encode11add_padding17h00d4e9c0ee6 br i1 %exitcond11.not, label %._crit_edge, label %.lr.ph 9: ; preds = %.lr.ph - tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %2, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.22e5fd453cee8def79982159f9b88e16.1) #5 + tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %2, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.22e5fd453cee8def79982159f9b88e16.1) #6 unreachable } @@ -80,6 +80,7 @@ define noundef zeroext i1 @"_ZN71_$LT$base64..encode..EncodeSliceError$u20$as$u2 store ptr @anon.22e5fd453cee8def79982159f9b88e16.3, ptr %3, align 8 %4 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %4, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %5 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %5, align 8 %6 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -106,12 +107,16 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #4 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #4 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #5 + attributes #0 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #3 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #5 = { noreturn } +attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #6 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/base64-rs/optimized/r7oyewqnuirpg2o.ll b/bench/base64-rs/optimized/r7oyewqnuirpg2o.ll index e97ab4c4b07..86209f30225 100644 --- a/bench/base64-rs/optimized/r7oyewqnuirpg2o.ll +++ b/bench/base64-rs/optimized/r7oyewqnuirpg2o.ll @@ -95,7 +95,7 @@ define void @_ZN6base648alphabet8Alphabet18from_str_unchecked17h2e156887b9fb6d8f br i1 %exitcond.not, label %7, label %8, !prof !5 7: ; preds = %6 - tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %2, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.77d943629ee838dea50e264cfb34e969.8) #10 + tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %2, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.77d943629ee838dea50e264cfb34e969.8) #11 unreachable 8: ; preds = %6 @@ -198,7 +198,7 @@ define { ptr, i64 } @_ZN6base648alphabet8Alphabet6as_str17h481df87ac0f4bfe4E(ptr call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2), !noalias !6 %6 = getelementptr inbounds nuw i8, ptr %3, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull readonly align 8 dereferenceable(16) %6, i64 16, i1 false) - call void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.77d943629ee838dea50e264cfb34e969.0, i64 noundef 43, ptr noundef nonnull align 1 %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.77d943629ee838dea50e264cfb34e969.1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.77d943629ee838dea50e264cfb34e969.12) #10, !noalias !6 + call void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.77d943629ee838dea50e264cfb34e969.0, i64 noundef 43, ptr noundef nonnull align 1 %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.77d943629ee838dea50e264cfb34e969.1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.77d943629ee838dea50e264cfb34e969.12) #11, !noalias !6 unreachable "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h46081d10d61c1328E.exit": ; preds = %1 @@ -320,6 +320,7 @@ default.unreachable41: ; preds = %2 store ptr @anon.77d943629ee838dea50e264cfb34e969.14, ptr %15, align 8 %18 = getelementptr inbounds nuw i8, ptr %15, i64 8 store i64 1, ptr %18, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %19 = getelementptr inbounds nuw i8, ptr %15, i64 32 store ptr null, ptr %19, align 8 %20 = getelementptr inbounds nuw i8, ptr %15, i64 16 @@ -503,8 +504,11 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #8 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #8 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #9 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #9 +declare void @llvm.experimental.noalias.scope.decl(metadata) #10 attributes #0 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } @@ -515,8 +519,9 @@ attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argm attributes #6 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #7 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #8 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #9 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #10 = { noreturn } +attributes #9 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #10 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #11 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/boost/optimized/channel.ll b/bench/boost/optimized/channel.ll index a111518d516..cf72241bf01 100644 --- a/bench/boost/optimized/channel.ll +++ b/bench/boost/optimized/channel.ll @@ -4780,7 +4780,6 @@ define linkonce_odr hidden noundef ptr @_ZN5boost4asio6detail16thread_info_base8 %29 = select i1 %27, i64 0, i64 %28 %30 = add i64 %29, %24 %31 = tail call noalias ptr @aligned_alloc(i64 noundef %25, i64 noundef %30) #33 - call void @llvm.assume(i1 true) [ "align"(ptr %31, i64 %25) ] %.not.i = icmp eq ptr %31, null br i1 %.not.i, label %32, label %_ZN5boost4asio11aligned_newEmm.exit diff --git a/bench/clap-rs/optimized/41aqvwa12uhzibvi.ll b/bench/clap-rs/optimized/41aqvwa12uhzibvi.ll index 695f7b582f4..5bc7e374ddc 100644 --- a/bench/clap-rs/optimized/41aqvwa12uhzibvi.ll +++ b/bench/clap-rs/optimized/41aqvwa12uhzibvi.ll @@ -16,7 +16,7 @@ define { ptr, i64 } @"_ZN79_$LT$clap_lex..ext..Split$u20$as$u20$core..iter..trai %4 = getelementptr inbounds nuw i8, ptr %0, i64 24 %5 = icmp eq ptr %3, null %6 = load i64, ptr %4, align 8 - br i1 %5, label %21, label %7 + br i1 %5, label %23, label %7 7: ; preds = %1 %8 = load ptr, ptr %0, align 8, !nonnull !5, !align !4, !noundef !5 @@ -26,7 +26,7 @@ define { ptr, i64 } @"_ZN79_$LT$clap_lex..ext..Split$u20$as$u20$core..iter..trai %.fca.0.extract.i = extractvalue { i64, i64 } %11, 0 %switch.i = icmp eq i64 %.fca.0.extract.i, 0 %.fca.1.extract.i = extractvalue { i64, i64 } %11, 1 - br i1 %switch.i, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$10split_once17h509237bc95af7a93E.exit.thread", label %12 + br i1 %switch.i, label %18, label %12 12: ; preds = %7 %13 = add i64 %.fca.1.extract.i, %10 @@ -34,35 +34,39 @@ define { ptr, i64 } @"_ZN79_$LT$clap_lex..ext..Split$u20$as$u20$core..iter..trai br i1 %14, label %15, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2e16e49de880e58eE.llvm.8584779980762939608.exit.i" 15: ; preds = %12 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.fca.1.extract.i, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.6.llvm.8584779980762939608) #2, !noalias !9 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.fca.1.extract.i, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.6.llvm.8584779980762939608) #3, !noalias !9 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2e16e49de880e58eE.llvm.8584779980762939608.exit.i": ; preds = %12 %16 = icmp ugt i64 %13, %6 - br i1 %16, label %17, label %18 + br i1 %16, label %17, label %19 17: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2e16e49de880e58eE.llvm.8584779980762939608.exit.i" - tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %13, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.7.llvm.8584779980762939608) #2, !noalias !6 + tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %13, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.7.llvm.8584779980762939608) #3, !noalias !6 unreachable -18: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2e16e49de880e58eE.llvm.8584779980762939608.exit.i" - %19 = sub nuw i64 %6, %13 - %20 = getelementptr inbounds i8, ptr %3, i64 %13 - br label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$10split_once17h509237bc95af7a93E.exit.thread" +18: ; preds = %7 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] + br label %22 -"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$10split_once17h509237bc95af7a93E.exit.thread": ; preds = %7, %18 - %storemerge9 = phi ptr [ %20, %18 ], [ null, %7 ] - %storemerge = phi i64 [ %19, %18 ], [ undef, %7 ] - %.sroa.4.1 = phi i64 [ %.fca.1.extract.i, %18 ], [ %6, %7 ] +19: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2e16e49de880e58eE.llvm.8584779980762939608.exit.i" + %20 = sub nuw i64 %6, %13 + %21 = getelementptr inbounds i8, ptr %3, i64 %13 + br label %22 + +22: ; preds = %19, %18 + %storemerge9 = phi ptr [ %21, %19 ], [ null, %18 ] + %storemerge = phi i64 [ %20, %19 ], [ undef, %18 ] + %.sroa.4.1 = phi i64 [ %.fca.1.extract.i, %19 ], [ %6, %18 ] store ptr %storemerge9, ptr %2, align 8 store i64 %storemerge, ptr %4, align 8 - br label %21 + br label %23 -21: ; preds = %1, %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$10split_once17h509237bc95af7a93E.exit.thread" - %.sroa.4.0 = phi i64 [ %.sroa.4.1, %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$10split_once17h509237bc95af7a93E.exit.thread" ], [ undef, %1 ] - %22 = insertvalue { ptr, i64 } poison, ptr %3, 0 - %23 = insertvalue { ptr, i64 } %22, i64 %.sroa.4.0, 1 - ret { ptr, i64 } %23 +23: ; preds = %1, %22 + %.sroa.4.0 = phi i64 [ %.sroa.4.1, %22 ], [ undef, %1 ] + %24 = insertvalue { ptr, i64 } poison, ptr %3, 0 + %25 = insertvalue { ptr, i64 } %24, i64 %.sroa.4.0, 1 + ret { ptr, i64 } %25 } ; Function Attrs: nonlazybind uwtable @@ -71,7 +75,7 @@ define hidden void @_ZN8clap_lex3ext8split_at17hf432e678d412a774E(ptr noalias no br i1 %.not, label %5, label %6 5: ; preds = %4 - tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.fc1c78a371a506ea9d587e654a45c3a3.1.llvm.9337090908805262772, i64 noundef 35, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fc1c78a371a506ea9d587e654a45c3a3.3.llvm.9337090908805262772) #2 + tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.fc1c78a371a506ea9d587e654a45c3a3.1.llvm.9337090908805262772, i64 noundef 35, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fc1c78a371a506ea9d587e654a45c3a3.3.llvm.9337090908805262772) #3 unreachable 6: ; preds = %4 @@ -99,9 +103,13 @@ declare { i64, i64 } @"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ex ; Function Attrs: cold noreturn nonlazybind uwtable declare void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #1 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #2 + attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #2 = { noreturn } +attributes #2 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #3 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/clap-rs/optimized/4r6y4qxwk52m92uh.ll b/bench/clap-rs/optimized/4r6y4qxwk52m92uh.ll index bdb121a6455..e5728d1ff05 100644 --- a/bench/clap-rs/optimized/4r6y4qxwk52m92uh.ll +++ b/bench/clap-rs/optimized/4r6y4qxwk52m92uh.ll @@ -115,6 +115,7 @@ _ZN8clap_lex7RawArgs7next_os17h900686034d40f235E.exit.thread: ; preds = %2 %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 %9 = load ptr, ptr %8, align 8, !alias.scope !10, !noalias !13, !nonnull !4 %10 = getelementptr inbounds { { { { i64, ptr }, i64 } } }, ptr %9, i64 %5 + call void @llvm.assume(i1 true) [ "align"(ptr %10, i64 8) ] %11 = getelementptr inbounds nuw i8, ptr %10, i64 8 %12 = load ptr, ptr %11, align 8, !noalias !15, !nonnull !4, !noundef !4 %13 = getelementptr inbounds nuw i8, ptr %10, i64 16 @@ -132,7 +133,7 @@ _ZN8clap_lex7RawArgs7next_os17h900686034d40f235E.exit.thread: ; preds = %2 ret { ptr, i64 } %18 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, argmem: readwrite, inaccessiblemem: none) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, argmem: readwrite, inaccessiblemem: write) uwtable define { ptr, i64 } @_ZN8clap_lex7RawArgs7next_os17h900686034d40f235E(ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %0, ptr noalias nocapture noundef align 8 dereferenceable(8) %1) unnamed_addr #5 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 %4 = load i64, ptr %3, align 8, !noundef !4 @@ -144,6 +145,7 @@ define { ptr, i64 } @_ZN8clap_lex7RawArgs7next_os17h900686034d40f235E(ptr noalia %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 %8 = load ptr, ptr %7, align 8, !nonnull !4 %9 = getelementptr inbounds { { { { i64, ptr }, i64 } } }, ptr %8, i64 %5 + call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 8) ] %10 = getelementptr inbounds nuw i8, ptr %9, i64 8 %11 = load ptr, ptr %10, align 8, !nonnull !4, !noundef !4 %12 = getelementptr inbounds nuw i8, ptr %9, i64 16 @@ -160,7 +162,7 @@ define { ptr, i64 } @_ZN8clap_lex7RawArgs7next_os17h900686034d40f235E(ptr noalia ret { ptr, i64 } %17 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, inaccessiblemem: readwrite) uwtable define { ptr, i64 } @_ZN8clap_lex7RawArgs4peek17h9c091d774d1c058fE(ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %1) unnamed_addr #6 { tail call void @llvm.experimental.noalias.scope.decl(metadata !16) tail call void @llvm.experimental.noalias.scope.decl(metadata !19) @@ -174,6 +176,7 @@ define { ptr, i64 } @_ZN8clap_lex7RawArgs4peek17h9c091d774d1c058fE(ptr noalias n %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 %8 = load ptr, ptr %7, align 8, !alias.scope !16, !noalias !19, !nonnull !4 %9 = getelementptr inbounds { { { { i64, ptr }, i64 } } }, ptr %8, i64 %5 + call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 8) ] %10 = getelementptr inbounds nuw i8, ptr %9, i64 8 %11 = load ptr, ptr %10, align 8, !noalias !21, !nonnull !4, !noundef !4 %12 = getelementptr inbounds nuw i8, ptr %9, i64 16 @@ -188,7 +191,7 @@ _ZN8clap_lex7RawArgs7peek_os17he56275292fcdee6aE.exit.thread: ; preds = %2, %6 ret { ptr, i64 } %15 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, inaccessiblemem: none) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, inaccessiblemem: write) uwtable define { ptr, i64 } @_ZN8clap_lex7RawArgs7peek_os17he56275292fcdee6aE(ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %1) unnamed_addr #7 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 %4 = load i64, ptr %3, align 8, !noundef !4 @@ -200,6 +203,7 @@ define { ptr, i64 } @_ZN8clap_lex7RawArgs7peek_os17he56275292fcdee6aE(ptr noalia %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 %8 = load ptr, ptr %7, align 8, !nonnull !4 %9 = getelementptr inbounds { { { { i64, ptr }, i64 } } }, ptr %8, i64 %5 + call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 8) ] %10 = getelementptr inbounds nuw i8, ptr %9, i64 8 %11 = load ptr, ptr %10, align 8, !nonnull !4, !noundef !4 %12 = getelementptr inbounds nuw i8, ptr %9, i64 16 @@ -223,7 +227,7 @@ define { ptr, ptr } @_ZN8clap_lex7RawArgs9remaining17h51b7b126f9c1f904E(ptr noal br i1 %5, label %6, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hfb34af44b3b02965E.exit" 6: ; preds = %2 - tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %3, i64 noundef %.val2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.248846a2e22cbdbe35d199858cf2b949.23) #23, !noalias !22 + tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %3, i64 noundef %.val2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.248846a2e22cbdbe35d199858cf2b949.23) #24, !noalias !22 unreachable "_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hfb34af44b3b02965E.exit": ; preds = %2 @@ -273,15 +277,24 @@ default.unreachable5: ; preds = %3 ret void } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: read) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: readwrite) uwtable define noundef zeroext i1 @_ZN8clap_lex7RawArgs6is_end17hec9b8e6ac185e850E(ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %1) unnamed_addr #9 { -_ZN8clap_lex7RawArgs7peek_os17he56275292fcdee6aE.exit: tail call void @llvm.experimental.noalias.scope.decl(metadata !26) tail call void @llvm.experimental.noalias.scope.decl(metadata !29) - %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %3 = load i64, ptr %2, align 8, !alias.scope !26, !noalias !29, !noundef !4 - %4 = load i64, ptr %1, align 8, !alias.scope !29, !noalias !26, !noundef !4 - %.not.i = icmp uge i64 %4, %3 + %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %4 = load i64, ptr %3, align 8, !alias.scope !26, !noalias !29, !noundef !4 + %5 = load i64, ptr %1, align 8, !alias.scope !29, !noalias !26, !noundef !4 + %.not.i = icmp uge i64 %5, %4 + br i1 %.not.i, label %_ZN8clap_lex7RawArgs7peek_os17he56275292fcdee6aE.exit, label %6 + +6: ; preds = %2 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %8 = load ptr, ptr %7, align 8, !alias.scope !26, !noalias !29, !nonnull !4 + %9 = getelementptr inbounds { { { { i64, ptr }, i64 } } }, ptr %8, i64 %5 + call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 8) ] + br label %_ZN8clap_lex7RawArgs7peek_os17he56275292fcdee6aE.exit + +_ZN8clap_lex7RawArgs7peek_os17he56275292fcdee6aE.exit: ; preds = %2, %6 ret i1 %.not.i } @@ -294,7 +307,7 @@ define noundef zeroext i1 @_ZN8clap_lex9ParsedArg8is_empty17hab8d97135551e35fE(p } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, inaccessiblemem: none) uwtable -define noundef zeroext i1 @_ZN8clap_lex9ParsedArg8is_stdio17h271c674752b2467fE(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0) unnamed_addr #7 { +define noundef zeroext i1 @_ZN8clap_lex9ParsedArg8is_stdio17h271c674752b2467fE(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0) unnamed_addr #11 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load i64, ptr %2, align 8, !noundef !4 %.not.i = icmp eq i64 %3, 1 @@ -312,7 +325,7 @@ define noundef zeroext i1 @_ZN8clap_lex9ParsedArg8is_stdio17h271c674752b2467fE(p } ; Function Attrs: mustprogress nofree nounwind nonlazybind willreturn memory(read, inaccessiblemem: none) uwtable -define noundef zeroext i1 @_ZN8clap_lex9ParsedArg9is_escape17haa756d593069b7efE(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0) unnamed_addr #11 { +define noundef zeroext i1 @_ZN8clap_lex9ParsedArg9is_escape17haa756d593069b7efE(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0) unnamed_addr #12 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load i64, ptr %2, align 8, !noundef !4 %.not.i = icmp eq i64 %3, 2 @@ -461,7 +474,7 @@ define void @_ZN8clap_lex9ParsedArg7to_long17hdc1aac1c7ed190f0E(ptr noalias noca br i1 %17, label %18, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2e16e49de880e58eE.llvm.8584779980762939608.exit.i" 18: ; preds = %15 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.fca.1.extract.i20, i64 noundef %.fca.1.extract.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.6.llvm.8584779980762939608) #23, !noalias !52 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.fca.1.extract.i20, i64 noundef %.fca.1.extract.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.6.llvm.8584779980762939608) #24, !noalias !52 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2e16e49de880e58eE.llvm.8584779980762939608.exit.i": ; preds = %15 @@ -469,7 +482,7 @@ define void @_ZN8clap_lex9ParsedArg7to_long17hdc1aac1c7ed190f0E(ptr noalias noca br i1 %19, label %20, label %22 20: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2e16e49de880e58eE.llvm.8584779980762939608.exit.i" - tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %16, i64 noundef %.fca.1.extract.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.7.llvm.8584779980762939608) #23, !noalias !49 + tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %16, i64 noundef %.fca.1.extract.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.7.llvm.8584779980762939608) #24, !noalias !49 unreachable 21: ; preds = %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$10split_once17h509237bc95af7a93E.exit.thread", %12, %11 @@ -508,7 +521,7 @@ define void @_ZN8clap_lex9ParsedArg7to_long17hdc1aac1c7ed190f0E(ptr noalias noca } ; Function Attrs: mustprogress nofree nounwind nonlazybind willreturn memory(read, inaccessiblemem: none) uwtable -define noundef zeroext i1 @_ZN8clap_lex9ParsedArg7is_long17h0d06ccc45c5ff929E(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0) unnamed_addr #11 { +define noundef zeroext i1 @_ZN8clap_lex9ParsedArg7is_long17h0d06ccc45c5ff929E(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0) unnamed_addr #12 { %2 = load ptr, ptr %0, align 8, !nonnull !4, !align !31, !noundef !4 %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load i64, ptr %3, align 8, !noundef !4 @@ -581,6 +594,7 @@ define void @_ZN8clap_lex9ParsedArg8to_short17h5708d56a9045f7a7E(ptr noalias noc %20 = load ptr, ptr %18, align 8, !noalias !72, !nonnull !4, !align !31, !noundef !4 %21 = getelementptr inbounds nuw i8, ptr %5, i64 16 %22 = load i64, ptr %21, align 8, !noalias !72, !noundef !4 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] br label %_ZN8clap_lex10ShortFlags3new17hc050306f15f417c3E.exit 23: ; preds = %16 @@ -589,7 +603,7 @@ define void @_ZN8clap_lex9ParsedArg8to_short17h5708d56a9045f7a7E(ptr noalias noc br i1 %.not.i.i.i, label %24, label %_ZN8clap_lex3ext8split_at17hf432e678d412a774E.exit.i.i 24: ; preds = %23 - tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.fc1c78a371a506ea9d587e654a45c3a3.1.llvm.9337090908805262772, i64 noundef 35, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fc1c78a371a506ea9d587e654a45c3a3.3.llvm.9337090908805262772) #23, !noalias !80 + tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.fc1c78a371a506ea9d587e654a45c3a3.1.llvm.9337090908805262772, i64 noundef 35, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fc1c78a371a506ea9d587e654a45c3a3.3.llvm.9337090908805262772) #24, !noalias !80 unreachable _ZN8clap_lex3ext8split_at17hf432e678d412a774E.exit.i.i: ; preds = %23 @@ -604,7 +618,7 @@ _ZN8clap_lex3ext8split_at17hf432e678d412a774E.exit.i.i: ; preds = %23 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3), !noalias !87 %27 = getelementptr inbounds nuw i8, ptr %4, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull readonly align 8 dereferenceable(16) %27, i64 16, i1 false), !noalias !72 - call void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.248846a2e22cbdbe35d199858cf2b949.15, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.248846a2e22cbdbe35d199858cf2b949.16, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.248846a2e22cbdbe35d199858cf2b949.30) #23, !noalias !88 + call void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.248846a2e22cbdbe35d199858cf2b949.15, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.248846a2e22cbdbe35d199858cf2b949.16, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.248846a2e22cbdbe35d199858cf2b949.30) #24, !noalias !88 unreachable "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17he9d986bffa271cbbE.exit.i.i": ; preds = %_ZN8clap_lex3ext8split_at17hf432e678d412a774E.exit.i.i @@ -644,7 +658,7 @@ _ZN8clap_lex10ShortFlags3new17hc050306f15f417c3E.exit: ; preds = %19, %"_ZN4core } ; Function Attrs: mustprogress nofree nounwind nonlazybind willreturn memory(read, inaccessiblemem: none) uwtable -define noundef zeroext i1 @_ZN8clap_lex9ParsedArg8is_short17h4f124932d060574aE(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0) unnamed_addr #11 { +define noundef zeroext i1 @_ZN8clap_lex9ParsedArg8is_short17h4f124932d060574aE(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0) unnamed_addr #12 { %2 = load ptr, ptr %0, align 8, !nonnull !4, !align !31, !noundef !4 %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load i64, ptr %3, align 8, !noundef !4 @@ -713,7 +727,7 @@ define void @_ZN8clap_lex9ParsedArg7display17h9976f60a07ce43b9E(ptr noalias noca } ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: readwrite) uwtable -define { i64, i64 } @_ZN8clap_lex10ShortFlags10advance_by17hd7b5dc76a7f69860E(ptr noalias nocapture noundef align 8 dereferenceable(56) %0, i64 noundef %1) unnamed_addr #12 { +define { i64, i64 } @_ZN8clap_lex10ShortFlags10advance_by17hd7b5dc76a7f69860E(ptr noalias nocapture noundef align 8 dereferenceable(56) %0, i64 noundef %1) unnamed_addr #13 { %.not = icmp eq i64 %1, 0 br i1 %.not, label %.thread, label %.lr.ph @@ -810,6 +824,7 @@ define { i64, i64 } @_ZN8clap_lex10ShortFlags10advance_by17hd7b5dc76a7f69860E(pt ret { i64, i64 } %50 "_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h31f21a5a37aaecaaE.exit": ; preds = %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread.i.i" + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] store ptr null, ptr %47, align 8, !alias.scope !131, !noalias !108 br label %.thread } @@ -829,7 +844,7 @@ define noundef zeroext i1 @_ZN8clap_lex10ShortFlags8is_empty17h0654b78f2bbd285aE } ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: none) uwtable -define noundef zeroext i1 @_ZN8clap_lex10ShortFlags18is_negative_number17hfbe51699063bd852E(ptr noalias nocapture noundef readonly align 8 dereferenceable(56) %0) unnamed_addr #13 personality ptr @rust_eh_personality { +define noundef zeroext i1 @_ZN8clap_lex10ShortFlags18is_negative_number17hfbe51699063bd852E(ptr noalias nocapture noundef readonly align 8 dereferenceable(56) %0) unnamed_addr #14 personality ptr @rust_eh_personality { %2 = getelementptr inbounds nuw i8, ptr %0, i64 40 %3 = load ptr, ptr %2, align 8, !noundef !4 %.not = icmp eq ptr %3, null @@ -1002,6 +1017,7 @@ define void @_ZN8clap_lex10ShortFlags9next_flag17ha2bfb32424d88ce6E(ptr noalias 56: ; preds = %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread" %57 = getelementptr inbounds nuw i8, ptr %1, i64 48 %58 = load i64, ptr %57, align 8, !noundef !4 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] store ptr null, ptr %53, align 8 %59 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %54, ptr %59, align 8 @@ -1071,6 +1087,7 @@ define { ptr, i64 } @_ZN8clap_lex10ShortFlags13next_value_os17hb3f4ea668f9a5a12E %39 = load i64, ptr %38, align 8, !alias.scope !160, !noundef !4 store ptr @anon.248846a2e22cbdbe35d199858cf2b949.5, ptr %2, align 8 store ptr @anon.248846a2e22cbdbe35d199858cf2b949.5, ptr %3, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] %40 = getelementptr inbounds nuw i8, ptr %0, i64 8 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %38, i8 0, i64 16, i1 false) %41 = load i64, ptr %40, align 8, !noundef !4 @@ -1078,7 +1095,7 @@ define { ptr, i64 } @_ZN8clap_lex10ShortFlags13next_value_os17hb3f4ea668f9a5a12E br i1 %.not.i, label %42, label %_ZN8clap_lex3ext8split_at17hf432e678d412a774E.exit 42: ; preds = %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit" - tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.fc1c78a371a506ea9d587e654a45c3a3.1.llvm.9337090908805262772, i64 noundef 35, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fc1c78a371a506ea9d587e654a45c3a3.3.llvm.9337090908805262772) #23, !noalias !173 + tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.fc1c78a371a506ea9d587e654a45c3a3.1.llvm.9337090908805262772, i64 noundef 35, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fc1c78a371a506ea9d587e654a45c3a3.3.llvm.9337090908805262772) #24, !noalias !173 unreachable _ZN8clap_lex3ext8split_at17hf432e678d412a774E.exit: ; preds = %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit" @@ -1103,6 +1120,7 @@ _ZN8clap_lex3ext8split_at17hf432e678d412a774E.exit: ; preds = %"_ZN87_$LT$core.. 51: ; preds = %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread" %52 = getelementptr inbounds nuw i8, ptr %0, i64 48 %53 = load i64, ptr %52, align 8, !noundef !4 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] store ptr null, ptr %46, align 8 br label %48 } @@ -1202,6 +1220,7 @@ define void @"_ZN79_$LT$clap_lex..ShortFlags$u20$as$u20$core..iter..traits..iter 55: ; preds = %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit.thread.i" %56 = getelementptr inbounds nuw i8, ptr %1, i64 48 %57 = load i64, ptr %56, align 8, !alias.scope !180, !noalias !177, !noundef !4 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] store ptr null, ptr %53, align 8, !alias.scope !180, !noalias !177 %58 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %54, ptr %58, align 8, !alias.scope !177, !noalias !180 @@ -1216,16 +1235,16 @@ _ZN8clap_lex10ShortFlags9next_flag17ha2bfb32424d88ce6E.exit: ; preds = %"_ZN87_$ } ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #14 +declare void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #15 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #14 +declare void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #15 ; Function Attrs: nonlazybind uwtable declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #2 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #14 +declare void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #15 ; Function Attrs: nonlazybind uwtable declare noundef zeroext i1 @"_ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h54d4af2b1bb3d966E"(ptr noalias noundef readonly align 8 dereferenceable(8), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #2 @@ -1237,13 +1256,13 @@ declare noundef zeroext i1 @"_ZN4core3fmt3num55_$LT$impl$u20$core..fmt..UpperHex declare noundef zeroext i1 @"_ZN4core3fmt3num55_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$usize$GT$3fmt17h2a402146377b71d4E"(ptr noalias noundef readonly align 8 dereferenceable(8), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #2 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #15 +declare void @llvm.assume(i1 noundef) #16 ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #16 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #17 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(24), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #14 +declare void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(24), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #15 ; Function Attrs: nonlazybind uwtable declare hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h549e976294cfdefbE"(ptr noalias noundef readonly align 8 dereferenceable(8), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #2 @@ -1255,13 +1274,13 @@ declare noundef zeroext i1 @_ZN4core3fmt9Formatter26debug_struct_field2_finish17 declare void @_ZN3std3env7args_os17hed93c8a6329ab8d3E(ptr noalias nocapture noundef sret({ { { ptr, i64, ptr, ptr, {}, { {} } } } }) align 8 dereferenceable(32)) unnamed_addr #2 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.uadd.sat.i64(i64, i64) #17 +declare i64 @llvm.uadd.sat.i64(i64, i64) #18 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.sadd.sat.i64(i64, i64) #17 +declare i64 @llvm.sadd.sat.i64(i64, i64) #18 ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #18 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #19 ; Function Attrs: nonlazybind uwtable declare void @_ZN3std3sys4unix6os_str5Slice6to_str17hb7eb6028d668e4c5E(ptr noalias nocapture noundef sret({ i64, [2 x i64] }) align 8 dereferenceable(24), ptr noalias noundef nonnull readonly align 1, i64 noundef) unnamed_addr #2 @@ -1270,10 +1289,10 @@ declare void @_ZN3std3sys4unix6os_str5Slice6to_str17hb7eb6028d668e4c5E(ptr noali declare void @_ZN3std3sys4unix6os_str5Slice15to_string_lossy17haa60bcab43d2d9d6E(ptr noalias nocapture noundef sret({ i64, [2 x i64] }) align 8 dereferenceable(24), ptr noalias noundef nonnull readonly align 1, i64 noundef) unnamed_addr #2 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #19 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #20 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #19 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #20 ; Function Attrs: nonlazybind uwtable declare void @_ZN4core3str8converts9from_utf817hc5206d8edcf9d82eE(ptr noalias nocapture noundef sret({ i64, [2 x i64] }) align 8 dereferenceable(24), ptr noalias noundef nonnull readonly align 1, i64 noundef) unnamed_addr #2 @@ -1288,41 +1307,42 @@ declare { i64, i64 } @"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ex declare hidden 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_iter17h00e38767325b73daE.llvm.7284672168644095767"(ptr noalias nocapture noundef sret({ { i64, ptr }, i64 }) align 8 dereferenceable(24), ptr noalias nocapture noundef align 8 dereferenceable(32)) unnamed_addr #2 ; Function Attrs: nofree nounwind nonlazybind willreturn memory(argmem: read) -declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #20 +declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #21 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #21 +declare void @llvm.experimental.noalias.scope.decl(metadata) #22 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.smax.i64(i64, i64) #22 +declare i64 @llvm.smax.i64(i64, i64) #23 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #22 +declare i64 @llvm.umin.i64(i64, i64) #23 attributes #0 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, argmem: readwrite, inaccessiblemem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #5 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, argmem: readwrite, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #6 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #7 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #5 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, argmem: readwrite, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #6 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, inaccessiblemem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #7 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #8 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #9 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #9 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #10 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #11 = { mustprogress nofree nounwind nonlazybind willreturn memory(read, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #12 = { nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #13 = { nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #14 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #15 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #16 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #17 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #18 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #19 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #20 = { nofree nounwind nonlazybind willreturn memory(argmem: read) } -attributes #21 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #22 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #23 = { noreturn } +attributes #11 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #12 = { mustprogress nofree nounwind nonlazybind willreturn memory(read, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #13 = { nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #14 = { nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #15 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #16 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #17 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #18 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #19 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #20 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #21 = { nofree nounwind nonlazybind willreturn memory(argmem: read) } +attributes #22 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #23 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #24 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/cpython/optimized/specialize.ll b/bench/cpython/optimized/specialize.ll index 44356739680..0d91d2cb899 100644 --- a/bench/cpython/optimized/specialize.ll +++ b/bench/cpython/optimized/specialize.ll @@ -1855,7 +1855,7 @@ if.then12: ; preds = %if.end8 br i1 %cmp15.not, label %if.end18, label %fail if.end18: ; preds = %if.then12 - %conv13 = trunc i64 %call4 to i16 + %conv13 = trunc nuw i64 %call4 to i16 %call19 = tail call i32 @_PyDictKeys_GetVersionForCurrentState(ptr noundef %5, ptr noundef nonnull %1) #7 %6 = add i32 %call19, -1 %or.cond38 = icmp ult i32 %6, 65535 diff --git a/bench/darktable/optimized/introspection_colorbalancergb.c.ll b/bench/darktable/optimized/introspection_colorbalancergb.c.ll index 7da3d34a560..6746f00f819 100644 --- a/bench/darktable/optimized/introspection_colorbalancergb.c.ll +++ b/bench/darktable/optimized/introspection_colorbalancergb.c.ll @@ -362,7 +362,7 @@ define void @init_presets(ptr noundef %0) local_unnamed_addr #1 { declare void @dt_gui_presets_add_generic(ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #3 ; Function Attrs: nounwind uwtable -define void @process(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noundef %2, ptr noundef %3, ptr nocapture noundef readnone %4, ptr nocapture noundef readonly %5) local_unnamed_addr #9 { +define void @process(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef writeonly %3, ptr nocapture noundef readnone %4, ptr nocapture noundef readonly %5) local_unnamed_addr #9 { %7 = alloca [4 x float], align 16 %8 = getelementptr inbounds nuw i8, ptr %1, i64 16 %9 = load ptr, ptr %8, align 16, !tbaa !29 @@ -503,8 +503,6 @@ define void @process(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noun %142 = fadd reassoc nsz arcp contract afn <2 x float> %134, %135 %143 = fadd reassoc nsz arcp contract afn <2 x float> %128, %131 %144 = fadd reassoc nsz arcp contract afn <2 x float> %140, %141 - call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 64) ] - call void @llvm.assume(i1 true) [ "align"(ptr %3, i64 64) ] %145 = getelementptr inbounds nuw i8, ptr %9, i64 168 %146 = load ptr, ptr %145, align 8, !tbaa !46 call void @llvm.assume(i1 true) [ "align"(ptr %146, i64 64) ] diff --git a/bench/egg-rs/optimized/208b1a9t1vdfvafq.ll b/bench/egg-rs/optimized/208b1a9t1vdfvafq.ll index c54bb1db7a2..c62755810d5 100644 --- a/bench/egg-rs/optimized/208b1a9t1vdfvafq.ll +++ b/bench/egg-rs/optimized/208b1a9t1vdfvafq.ll @@ -358,6 +358,7 @@ _ZN4core10intrinsics10typed_swap17h54f84bb71b663d01E.exit: ; preds = %.preheader 60: ; preds = %.lr.ph51 %61 = sub nsw i64 0, %.sroa.024.0.i.i49 %gep90 = getelementptr i64, ptr %invariant.gep89, i64 %61 + call void @llvm.assume(i1 true) [ "align"(ptr %gep90, i64 8) ] %.val4.i = load i64, ptr %gep90, align 8, !noalias !31, !noundef !7 %62 = icmp ult i64 %.val4.i, %3 br i1 %62, label %64, label %63, !prof !35 @@ -504,6 +505,7 @@ common.resume: ; preds = %119, %54 %129 = sub nsw i64 0, %.sroa.08.0.i.i47 %130 = getelementptr inbounds i64, ptr %122, i64 %129 %131 = getelementptr inbounds i8, ptr %130, i64 -8 + call void @llvm.assume(i1 true) [ "align"(ptr %131, i64 8) ] %.val4.i1843 = load i64, ptr %131, align 8, !noalias !51, !noundef !7 %132 = icmp ult i64 %.val4.i1843, %3 br i1 %132, label %.lr.ph, label %._crit_edge, !prof !55 @@ -513,6 +515,7 @@ _ZN4core3ptr19swap_nonoverlapping17hf866f6a6feb866b4E.exit.loopexit: ; preds = % %.val.i16 = load ptr, ptr %0, align 8, !alias.scope !56, !noalias !58, !nonnull !7, !noundef !7 %133 = getelementptr inbounds i64, ptr %.val.i16, i64 %129 %134 = getelementptr inbounds i8, ptr %133, i64 -8 + call void @llvm.assume(i1 true) [ "align"(ptr %134, i64 8) ] %.val4.i18 = load i64, ptr %134, align 8, !noalias !59, !noundef !7 %135 = icmp ult i64 %.val4.i18, %3 br i1 %135, label %.lr.ph, label %._crit_edge, !prof !60 diff --git a/bench/egg-rs/optimized/3r699r9ar80tn3x1.ll b/bench/egg-rs/optimized/3r699r9ar80tn3x1.ll index c6b3a524994..b1703b64f08 100644 --- a/bench/egg-rs/optimized/3r699r9ar80tn3x1.ll +++ b/bench/egg-rs/optimized/3r699r9ar80tn3x1.ll @@ -210,7 +210,7 @@ define noundef zeroext i1 @_ZN3egg4util12pretty_print17h5ad8ff4d4dbfe793E(ptr no 27: ; preds = %30, %19 %28 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h7cbf3d3894bee245E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %12) #9 + invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h7cbf3d3894bee245E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %12) #10 to label %common.resume unwind label %31, !noalias !43 29: ; preds = %19 @@ -218,7 +218,7 @@ define noundef zeroext i1 @_ZN3egg4util12pretty_print17h5ad8ff4d4dbfe793E(ptr no br i1 %26, label %30, label %"_ZN45_$LT$T$u20$as$u20$alloc..string..ToString$GT$9to_string17h0054053b79b5a646E.exit" 30: ; preds = %29 - invoke void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.d55da4c88b9271d24c0c7ca1e1ce25b7.2, i64 noundef 55, ptr noundef nonnull align 1 %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.d55da4c88b9271d24c0c7ca1e1ce25b7.16, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.d55da4c88b9271d24c0c7ca1e1ce25b7.4) #10 + invoke void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.d55da4c88b9271d24c0c7ca1e1ce25b7.2, i64 noundef 55, ptr noundef nonnull align 1 %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.d55da4c88b9271d24c0c7ca1e1ce25b7.16, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.d55da4c88b9271d24c0c7ca1e1ce25b7.4) #11 to label %.noexc.i unwind label %27, !noalias !43 .noexc.i: ; preds = %30 @@ -227,7 +227,7 @@ define noundef zeroext i1 @_ZN3egg4util12pretty_print17h5ad8ff4d4dbfe793E(ptr no 31: ; preds = %27 %32 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #11, !noalias !43 + call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #12, !noalias !43 unreachable common.resume: ; preds = %145, %110, %27 @@ -297,6 +297,7 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i: ; pr %.sroa.080.0124.us = phi ptr [ %62, %75 ], [ %55, %.lr.ph ] %62 = getelementptr inbounds nuw i8, ptr %.sroa.080.0124.us, i64 32 %63 = add nuw nsw i64 %.sroa.881.0125.us, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.080.0124.us, i64 8) ] %64 = call noundef zeroext i1 @_ZN3egg4util12pretty_print17h5ad8ff4d4dbfe793E(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %.sroa.080.0124.us, i64 noundef %2, i64 noundef %60) br i1 %64, label %.loopexit122, label %65 @@ -338,6 +339,7 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i62.us: %.sroa.080.0124.us127 = phi ptr [ %77, %89 ], [ %55, %.lr.ph.split ] %77 = getelementptr inbounds nuw i8, ptr %.sroa.080.0124.us127, i64 32 %78 = add nuw nsw i64 %.sroa.881.0125.us126, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.080.0124.us127, i64 8) ] %.not130 = icmp eq i64 %.sroa.881.0125.us126, 0 br i1 %.not130, label %..loopexit_crit_edge.us, label %_ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i46.us @@ -425,7 +427,7 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i54.us: 110: ; preds = %113, %102 %111 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h7cbf3d3894bee245E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %9) #9 + invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h7cbf3d3894bee245E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %9) #10 to label %common.resume unwind label %114, !noalias !135 112: ; preds = %102 @@ -433,7 +435,7 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i54.us: br i1 %109, label %113, label %"_ZN45_$LT$T$u20$as$u20$alloc..string..ToString$GT$9to_string17h0054053b79b5a646E.exit36" 113: ; preds = %112 - invoke void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.d55da4c88b9271d24c0c7ca1e1ce25b7.2, i64 noundef 55, ptr noundef nonnull align 1 %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.d55da4c88b9271d24c0c7ca1e1ce25b7.16, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.d55da4c88b9271d24c0c7ca1e1ce25b7.4) #10 + invoke void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.d55da4c88b9271d24c0c7ca1e1ce25b7.2, i64 noundef 55, ptr noundef nonnull align 1 %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.d55da4c88b9271d24c0c7ca1e1ce25b7.16, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.d55da4c88b9271d24c0c7ca1e1ce25b7.4) #11 to label %.noexc.i35 unwind label %110, !noalias !135 .noexc.i35: ; preds = %113 @@ -442,7 +444,7 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i54.us: 114: ; preds = %110 %115 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #11, !noalias !135 + call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #12, !noalias !135 unreachable "_ZN45_$LT$T$u20$as$u20$alloc..string..ToString$GT$9to_string17h0054053b79b5a646E.exit36": ; preds = %112 @@ -483,6 +485,7 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i38: ; %.sroa.080.0124 = phi ptr [ %130, %143 ], [ %55, %.lr.ph.split ] %130 = getelementptr inbounds nuw i8, ptr %.sroa.080.0124, i64 32 %131 = add nuw nsw i64 %.sroa.881.0125, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.080.0124, i64 8) ] %.not129 = icmp eq i64 %.sroa.881.0125, 0 br i1 %.not129, label %132, label %_ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i46 @@ -522,7 +525,7 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i46: ; 145: ; preds = %147, %"_ZN45_$LT$T$u20$as$u20$alloc..string..ToString$GT$9to_string17h0054053b79b5a646E.exit36" %146 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h7cbf3d3894bee245E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %13) #9 + invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h7cbf3d3894bee245E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %13) #10 to label %common.resume unwind label %160 147: ; preds = %"_ZN45_$LT$T$u20$as$u20$alloc..string..ToString$GT$9to_string17h0054053b79b5a646E.exit36" @@ -573,7 +576,7 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i46: ; 160: ; preds = %145 %161 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #11 + call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #12 unreachable } @@ -628,8 +631,11 @@ declare hidden { ptr, i64 } @"_ZN4core3str21_$LT$impl$u20$str$GT$12trim_matches1 ; Function Attrs: cold nonlazybind uwtable declare hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h1c0fae69676066daE"(ptr noalias noundef align 8 dereferenceable(16), i64 noundef, i64 noundef) unnamed_addr #7 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #8 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #8 +declare void @llvm.experimental.noalias.scope.decl(metadata) #9 attributes #0 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } @@ -639,10 +645,11 @@ attributes #4 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inli attributes #5 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #7 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #8 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #9 = { cold } -attributes #10 = { noreturn } -attributes #11 = { cold noreturn nounwind } +attributes #8 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #9 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #10 = { cold } +attributes #11 = { noreturn } +attributes #12 = { cold noreturn nounwind } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/egg-rs/optimized/c6cke9vz8fsxl18.ll b/bench/egg-rs/optimized/c6cke9vz8fsxl18.ll index 2a63e1b1f4f..67aa1bea1a3 100644 --- a/bench/egg-rs/optimized/c6cke9vz8fsxl18.ll +++ b/bench/egg-rs/optimized/c6cke9vz8fsxl18.ll @@ -20,11 +20,10 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G define hidden noundef zeroext i1 @_ZN4core3fmt5Write9write_fmt17h99abb614cb790a50E(ptr noalias noundef align 8 dereferenceable(24) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(48) %1) unnamed_addr #0 { _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i: %2 = alloca [48 x i8], align 8 - tail call void @llvm.experimental.noalias.scope.decl(metadata !6) - call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %2), !noalias !9 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %2, ptr noundef nonnull readonly align 8 dereferenceable(48) %1, i64 48, i1 false), !noalias !11 - %3 = call noundef zeroext i1 @_ZN4core3fmt5write17hc090a2ffd6b28c4aE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.2e2ef50e4ef086242c7f8f93cf51bb3b.12, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %2), !noalias !6 - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %2), !noalias !9 + call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %2), !noalias !6 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %2, ptr noundef nonnull readonly align 8 dereferenceable(48) %1, i64 48, i1 false), !noalias !10 + %3 = call noundef zeroext i1 @_ZN4core3fmt5write17hc090a2ffd6b28c4aE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.2e2ef50e4ef086242c7f8f93cf51bb3b.12, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %2), !noalias !11 + call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %2), !noalias !6 ret i1 %3 } @@ -216,12 +215,12 @@ attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessib !3 = !{!"rustc version 1.79.0 (129f3b996 2024-06-10)"} !4 = !{} !5 = !{i64 8} -!6 = !{!7} -!7 = distinct !{!7, !8, !"_ZN75_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write..write_fmt..SpecWriteFmt$GT$14spec_write_fmt17h58974d819ee04e51E: argument 1"} +!6 = !{!7, !9} +!7 = distinct !{!7, !8, !"_ZN75_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write..write_fmt..SpecWriteFmt$GT$14spec_write_fmt17h58974d819ee04e51E: argument 0"} !8 = distinct !{!8, !"_ZN75_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write..write_fmt..SpecWriteFmt$GT$14spec_write_fmt17h58974d819ee04e51E"} -!9 = !{!10, !7} -!10 = distinct !{!10, !8, !"_ZN75_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write..write_fmt..SpecWriteFmt$GT$14spec_write_fmt17h58974d819ee04e51E: argument 0"} -!11 = !{!10} +!9 = distinct !{!9, !8, !"_ZN75_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt..Write..write_fmt..SpecWriteFmt$GT$14spec_write_fmt17h58974d819ee04e51E: argument 1"} +!10 = !{!7} +!11 = !{!9} !12 = !{!13} !13 = distinct !{!13, !14, !"_ZN5alloc6string6String4push17h73faea9791f3dabaE: argument 0"} !14 = distinct !{!14, !"_ZN5alloc6string6String4push17h73faea9791f3dabaE"} diff --git a/bench/egg-rs/optimized/oegfwufxyvm4x2w.ll b/bench/egg-rs/optimized/oegfwufxyvm4x2w.ll index d7035dc4d9b..5102ae15a8d 100644 --- a/bench/egg-rs/optimized/oegfwufxyvm4x2w.ll +++ b/bench/egg-rs/optimized/oegfwufxyvm4x2w.ll @@ -115,7 +115,7 @@ define void @"_ZN62_$LT$egg..subst..Var$u20$as$u20$core..str..traits..FromStr$GT br i1 %18, label %20, label %19 19: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hb97b2eada704aeb2E.exit.i" - tail call void @_ZN4core3str16slice_error_fail17h11278fc6a58fee91E(ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2, i64 noundef 2, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e831b41a1e1a17865136bdabba0554f7.8) #13 + tail call void @_ZN4core3str16slice_error_fail17h11278fc6a58fee91E(ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2, i64 noundef 2, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e831b41a1e1a17865136bdabba0554f7.8) #14 unreachable 20: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hb97b2eada704aeb2E.exit.i", %14 @@ -147,7 +147,7 @@ define void @"_ZN62_$LT$egg..subst..Var$u20$as$u20$core..str..traits..FromStr$GT 32: ; preds = %27 %33 = load i64, ptr %31, align 8, !noalias !13 - tail call void @_ZN5alloc7raw_vec12handle_error17h0fc9691652206c4fE(i64 noundef %30, i64 %33) #13, !noalias !13 + tail call void @_ZN5alloc7raw_vec12handle_error17h0fc9691652206c4fE(i64 noundef %30, i64 %33) #14, !noalias !13 unreachable "_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17hcb45ce4629ffffbeE.exit": ; preds = %27 @@ -178,7 +178,7 @@ define void @"_ZN62_$LT$egg..subst..Var$u20$as$u20$core..str..traits..FromStr$GT 40: ; preds = %.thread49 %41 = load i64, ptr %39, align 8, !noalias !20 - tail call void @_ZN5alloc7raw_vec12handle_error17h0fc9691652206c4fE(i64 noundef %38, i64 %41) #13, !noalias !20 + tail call void @_ZN5alloc7raw_vec12handle_error17h0fc9691652206c4fE(i64 noundef %38, i64 %41) #14, !noalias !20 unreachable "_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17hcb45ce4629ffffbeE.exit36": ; preds = %.thread49 @@ -369,7 +369,7 @@ define void @_ZN3egg5subst5Subst13with_capacity17h5981487634b63fb7E(ptr dead_on_ 5: ; preds = %10, %9, %2 %6 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr101drop_in_place$LT$smallvec..SmallVec$LT$$u5b$$LP$egg..subst..Var$C$egg..Id$RP$$u3b$$u20$3$u5d$$GT$$GT$17ha894c8cda1384575E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %3) #14 + invoke void @"_ZN4core3ptr101drop_in_place$LT$smallvec..SmallVec$LT$$u5b$$LP$egg..subst..Var$C$egg..Id$RP$$u3b$$u20$3$u5d$$GT$$GT$17ha894c8cda1384575E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %3) #15 to label %14 unwind label %12, !noalias !50 7: ; preds = %2 @@ -380,7 +380,7 @@ define void @_ZN3egg5subst5Subst13with_capacity17h5981487634b63fb7E(ptr dead_on_ ] 9: ; preds = %7 - invoke void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.2c703d1b4d91991e05c77a3eb1866866.9.llvm.5520512306816613332, i64 noundef 17, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.2c703d1b4d91991e05c77a3eb1866866.10.llvm.5520512306816613332) #13 + invoke void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.2c703d1b4d91991e05c77a3eb1866866.9.llvm.5520512306816613332, i64 noundef 17, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.2c703d1b4d91991e05c77a3eb1866866.10.llvm.5520512306816613332) #14 to label %.noexc.i unwind label %5, !noalias !50 .noexc.i: ; preds = %9 @@ -388,7 +388,7 @@ define void @_ZN3egg5subst5Subst13with_capacity17h5981487634b63fb7E(ptr dead_on_ 10: ; preds = %7 %11 = extractvalue { i64, i64 } %4, 1 - invoke void @_ZN5alloc5alloc18handle_alloc_error17hc735483c05842e7cE(i64 noundef %8, i64 noundef %11) #13 + invoke void @_ZN5alloc5alloc18handle_alloc_error17hc735483c05842e7cE(i64 noundef %8, i64 noundef %11) #14 to label %.noexc1.i unwind label %5, !noalias !50 .noexc1.i: ; preds = %10 @@ -397,7 +397,7 @@ define void @_ZN3egg5subst5Subst13with_capacity17h5981487634b63fb7E(ptr dead_on_ 12: ; preds = %5 %13 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #15, !noalias !50 + call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #16, !noalias !50 unreachable 14: ; preds = %5 @@ -451,12 +451,15 @@ define { i32, i32 } @_ZN3egg5subst5Subst6insert17h001a6dccb19c8f51E(ptr noalias %23 = phi i64 [ %.pre.i, %20 ], [ %18, %13 ] %.sroa.01.0.i = phi ptr [ %22, %20 ], [ %.sink10.i.i, %13 ] %.sroa.0.0.i6 = phi ptr [ %21, %20 ], [ %.sink11.i.i, %13 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.01.0.i, i64 8) ] %24 = getelementptr inbounds { { { i32, [1 x i32] } }, i32 }, ptr %.sroa.0.0.i6, i64 %23 store i32 %1, ptr %24, align 4 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %24, i64 4 store i32 %2, ptr %.sroa.4.0..sroa_idx, align 4 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %24, i64 8 store i32 %3, ptr %.sroa.5.0..sroa_idx, align 4 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.01.0.i, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.01.0.i, i64 8) ] %25 = load i64, ptr %.sroa.01.0.i, align 8, !alias.scope !67, !noalias !68, !noundef !4 %26 = add i64 %25, 1 store i64 %26, ptr %.sroa.01.0.i, align 8, !alias.scope !67, !noalias !68 @@ -582,7 +585,7 @@ define noundef nonnull align 4 dereferenceable(4) ptr @"_ZN84_$LT$egg..subst..Su store ptr %5, ptr %30, align 8 %31 = getelementptr inbounds nuw i8, ptr %6, i64 24 store i64 3, ptr %31, align 8 - call void @_ZN4core9panicking9panic_fmt17hdc63834ffaaefae5E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3) #13 + call void @_ZN4core9panicking9panic_fmt17hdc63834ffaaefae5E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3) #14 unreachable 32: ; preds = %20 @@ -645,7 +648,7 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.llvm.1169273 br i1 %26, label %_ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.llvm.1169273610523334441.exit29, label %27, !prof !115 27: ; preds = %22 - call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.sroa.012.061, i64 noundef %25, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e831b41a1e1a17865136bdabba0554f7.20) #13, !noalias !116 + call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.sroa.012.061, i64 noundef %25, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e831b41a1e1a17865136bdabba0554f7.20) #14, !noalias !116 unreachable _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.llvm.1169273610523334441.exit29: ; preds = %22 @@ -779,6 +782,9 @@ declare hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$15try_allocate_in17h ; Function Attrs: cold noreturn nonlazybind uwtable declare void @_ZN5alloc7raw_vec12handle_error17h0fc9691652206c4fE(i64 noundef, i64) unnamed_addr #7 +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #8 + ; Function Attrs: nonlazybind uwtable declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #4 @@ -786,7 +792,7 @@ declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, declare hidden { i64, i64 } @"_ZN8smallvec17SmallVec$LT$A$GT$17try_reserve_exact17hd412f62a3d8d1d36E"(ptr noalias noundef align 8 dereferenceable(48), i64 noundef) unnamed_addr #4 ; Function Attrs: cold noreturn nounwind nonlazybind uwtable -declare void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() unnamed_addr #8 +declare void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() unnamed_addr #9 ; Function Attrs: cold noreturn nonlazybind uwtable declare void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #7 @@ -825,10 +831,10 @@ declare hidden noundef zeroext i1 @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Displa declare hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17hbeafa4111eddcd1dE"(ptr noalias noundef readonly align 8 dereferenceable(8), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #4 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #9 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #10 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #9 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #10 ; Function Attrs: nonlazybind uwtable declare hidden void @"_ZN4core3ptr101drop_in_place$LT$smallvec..SmallVec$LT$$u5b$$LP$egg..subst..Var$C$egg..Id$RP$$u3b$$u20$3$u5d$$GT$$GT$17ha894c8cda1384575E"(ptr noalias noundef align 8 dereferenceable(48)) unnamed_addr #4 @@ -846,13 +852,13 @@ declare hidden void @"_ZN8smallvec17SmallVec$LT$A$GT$6triple17h3f7e1b662adfb680E declare void @_ZN5alloc5alloc18handle_alloc_error17hc735483c05842e7cE(i64 noundef, i64 noundef) unnamed_addr #7 ; Function Attrs: cold nonlazybind uwtable -declare hidden void @"_ZN8smallvec17SmallVec$LT$A$GT$21reserve_one_unchecked17h2d359845b034ba5aE"(ptr noalias noundef align 8 dereferenceable(48)) unnamed_addr #10 +declare hidden void @"_ZN8smallvec17SmallVec$LT$A$GT$21reserve_one_unchecked17h2d359845b034ba5aE"(ptr noalias noundef align 8 dereferenceable(48)) unnamed_addr #11 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #11 +declare void @llvm.experimental.noalias.scope.decl(metadata) #12 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #12 +declare i64 @llvm.umax.i64(i64, i64) #13 attributes #0 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } @@ -862,14 +868,15 @@ attributes #4 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x attributes #5 = { nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #7 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #8 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #9 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #10 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #11 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #12 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #13 = { noreturn } -attributes #14 = { cold } -attributes #15 = { cold noreturn nounwind } +attributes #8 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #9 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #10 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #11 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #12 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #13 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #14 = { noreturn } +attributes #15 = { cold } +attributes #16 = { cold noreturn nounwind } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/folly/optimized/CPUThreadPoolExecutor.cpp.ll b/bench/folly/optimized/CPUThreadPoolExecutor.cpp.ll index 2f5a2842cf4..982423a18e2 100644 --- a/bench/folly/optimized/CPUThreadPoolExecutor.cpp.ll +++ b/bench/folly/optimized/CPUThreadPoolExecutor.cpp.ll @@ -1109,7 +1109,6 @@ entry: tail call void @llvm.experimental.noalias.scope.decl(metadata !13) store ptr null, ptr %agg.result, align 8, !tbaa !16, !alias.scope !13 %call5.i.i.i17.i.i.i.i = tail call noalias noundef nonnull align 64 dereferenceable(128) ptr @_ZnwmSt11align_val_t(i64 noundef 128, i64 noundef 64) #37, !noalias !13 - call void @llvm.assume(i1 true) [ "align"(ptr %call5.i.i.i17.i.i.i.i, i64 64) ] %_M_use_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i17.i.i.i.i, i64 8 store i32 1, ptr %_M_use_count.i.i.i.i.i.i, align 8, !tbaa !18, !noalias !13 %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i17.i.i.i.i, i64 12 @@ -24202,7 +24201,6 @@ _ZNSt12_Vector_baseIN5folly9MPMCQueueINS0_21CPUThreadPoolExecutor7CPUTaskESt6ato %sub.ptr.sub.i32 = sub i64 %sub.ptr.lhs.cast.i30, %sub.ptr.rhs.cast.i %mul.i.i.i = mul nuw nsw i64 %__n, 640 %call5.i.i.i = tail call noalias noundef nonnull align 128 ptr @_ZnwmSt11align_val_t(i64 noundef %mul.i.i.i, i64 noundef 128) #37 - call void @llvm.assume(i1 true) [ "align"(ptr %call5.i.i.i, i64 128) ] %cmp.not6.i.i.i = icmp eq ptr %1, %2 br i1 %cmp.not6.i.i.i, label %_ZNSt6vectorIN5folly9MPMCQueueINS0_21CPUThreadPoolExecutor7CPUTaskESt6atomicLb0EEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit, label %for.body.i.i.i @@ -25337,7 +25335,6 @@ _ZNKSt6vectorIN5folly9MPMCQueueINS0_21CPUThreadPoolExecutor7CPUTaskESt6atomicLb0 tail call void @llvm.assume(i1 %cmp.not.i) %mul.i.i.i = mul nuw nsw i64 %cond.i, 640 %call5.i.i.i = tail call noalias noundef nonnull align 128 ptr @_ZnwmSt11align_val_t(i64 noundef %mul.i.i.i, i64 noundef 128) #37 - call void @llvm.assume(i1 true) [ "align"(ptr %call5.i.i.i, i64 128) ] %add.ptr = getelementptr inbounds i8, ptr %call5.i.i.i, i64 %sub.ptr.sub.i %3 = load i64, ptr %__args, align 8, !tbaa !146 invoke void @_ZN5folly9MPMCQueueINS_21CPUThreadPoolExecutor7CPUTaskESt6atomicLb0EEC2Em(ptr noundef nonnull align 128 dereferenceable(640) %add.ptr, i64 noundef %3) @@ -25369,23 +25366,23 @@ for.body.i.i.i: ; preds = %invoke.cont, %for.b %dcapacity_.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__cur.08.i.i.i, i64 32 %dcapacity_4.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.07.i.i.i, i64 32 %12 = load atomic i64, ptr %dcapacity_4.i.i.i.i.i.i.i.i monotonic, align 8, !alias.scope !771, !noalias !768 - store i64 %12, ptr %dcapacity_.i.i.i.i.i.i.i.i, align 32, !tbaa !43, !alias.scope !768, !noalias !771 + store i64 %12, ptr %dcapacity_.i.i.i.i.i.i.i.i, align 8, !tbaa !43, !alias.scope !768, !noalias !771 %pushTicket_.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__cur.08.i.i.i, i64 128 %pushTicket_6.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.07.i.i.i, i64 128 %13 = load atomic i64, ptr %pushTicket_6.i.i.i.i.i.i.i.i monotonic, align 8, !alias.scope !771, !noalias !768 - store i64 %13, ptr %pushTicket_.i.i.i.i.i.i.i.i, align 128, !tbaa !43, !alias.scope !768, !noalias !771 + store i64 %13, ptr %pushTicket_.i.i.i.i.i.i.i.i, align 8, !tbaa !43, !alias.scope !768, !noalias !771 %popTicket_.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__cur.08.i.i.i, i64 256 %popTicket_8.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.07.i.i.i, i64 256 %14 = load atomic i64, ptr %popTicket_8.i.i.i.i.i.i.i.i monotonic, align 8, !alias.scope !771, !noalias !768 - store i64 %14, ptr %popTicket_.i.i.i.i.i.i.i.i, align 128, !tbaa !43, !alias.scope !768, !noalias !771 + store i64 %14, ptr %popTicket_.i.i.i.i.i.i.i.i, align 8, !tbaa !43, !alias.scope !768, !noalias !771 %pushSpinCutoff_.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__cur.08.i.i.i, i64 384 %pushSpinCutoff_10.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.07.i.i.i, i64 384 %15 = load atomic i32, ptr %pushSpinCutoff_10.i.i.i.i.i.i.i.i monotonic, align 4, !alias.scope !771, !noalias !768 - store i32 %15, ptr %pushSpinCutoff_.i.i.i.i.i.i.i.i, align 128, !tbaa !44, !alias.scope !768, !noalias !771 + store i32 %15, ptr %pushSpinCutoff_.i.i.i.i.i.i.i.i, align 4, !tbaa !44, !alias.scope !768, !noalias !771 %popSpinCutoff_.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__cur.08.i.i.i, i64 512 %popSpinCutoff_12.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.07.i.i.i, i64 512 %16 = load atomic i32, ptr %popSpinCutoff_12.i.i.i.i.i.i.i.i monotonic, align 4, !alias.scope !771, !noalias !768 - store i32 %16, ptr %popSpinCutoff_.i.i.i.i.i.i.i.i, align 128, !tbaa !44, !alias.scope !768, !noalias !771 + store i32 %16, ptr %popSpinCutoff_.i.i.i.i.i.i.i.i, align 4, !tbaa !44, !alias.scope !768, !noalias !771 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 128 dereferenceable(20) %__first.addr.07.i.i.i, i8 0, i64 20, i1 false), !alias.scope !771, !noalias !768 store atomic i64 0, ptr %dstate_3.i.i.i.i.i.i.i.i monotonic, align 8, !alias.scope !771, !noalias !768 store atomic i64 0, ptr %dcapacity_4.i.i.i.i.i.i.i.i monotonic, align 8, !alias.scope !771, !noalias !768 diff --git a/bench/glslang/optimized/ParseHelper.cpp.ll b/bench/glslang/optimized/ParseHelper.cpp.ll index 0573585f41c..83fc8d90ea1 100644 --- a/bench/glslang/optimized/ParseHelper.cpp.ll +++ b/bench/glslang/optimized/ParseHelper.cpp.ll @@ -62107,7 +62107,7 @@ _ZN7glslang10TQualifier17getGeometryStringENS_15TLayoutGeometryE.exit241: ; pred br i1 %141, label %switch.lookup358, label %_ZN7glslang10TQualifier17getGeometryStringENS_15TLayoutGeometryE.exit243 switch.lookup358: ; preds = %140 - %switch.tableidx359 = add i32 %81, -1 + %switch.tableidx359 = add nsw i32 %81, -1 %142 = sext i32 %switch.tableidx359 to i64 %switch.gep360 = getelementptr inbounds [9 x ptr], ptr @switch.table._ZN7glslang13TParseContext33updateStandaloneQualifierDefaultsERKNS_10TSourceLocERKNS_11TPublicTypeE.75, i64 0, i64 %142 %switch.load361 = load ptr, ptr %switch.gep360, align 8 @@ -62166,7 +62166,7 @@ _ZN7glslang13TIntermediate16setVertexSpacingENS_14TVertexSpacingE.exit: ; preds br i1 %163, label %switch.lookup365, label %_ZN7glslang10TQualifier22getVertexSpacingStringENS_14TVertexSpacingE.exit switch.lookup365: ; preds = %162 - %switch.tableidx366 = add i32 %150, -1 + %switch.tableidx366 = add nsw i32 %150, -1 %164 = sext i32 %switch.tableidx366 to i64 %switch.gep367 = getelementptr inbounds [3 x ptr], ptr @switch.table._ZN7glslang13TParseContext33updateStandaloneQualifierDefaultsERKNS_10TSourceLocERKNS_11TPublicTypeE.78, i64 0, i64 %164 %switch.load368 = load ptr, ptr %switch.gep367, align 8 @@ -62185,7 +62185,7 @@ _ZN7glslang10TQualifier22getVertexSpacingStringENS_14TVertexSpacingE.exit: ; pre br i1 %169, label %switch.lookup369, label %_ZN7glslang10TQualifier22getVertexSpacingStringENS_14TVertexSpacingE.exit249 switch.lookup369: ; preds = %168 - %switch.tableidx370 = add i32 %150, -1 + %switch.tableidx370 = add nsw i32 %150, -1 %170 = sext i32 %switch.tableidx370 to i64 %switch.gep371 = getelementptr inbounds [3 x ptr], ptr @switch.table._ZN7glslang13TParseContext33updateStandaloneQualifierDefaultsERKNS_10TSourceLocERKNS_11TPublicTypeE.78, i64 0, i64 %170 %switch.load372 = load ptr, ptr %switch.gep371, align 8 @@ -62998,7 +62998,7 @@ _ZN7glslang13TIntermediate20setInterlockOrderingENS_18TInterlockOrderingE.exit: br i1 %571, label %switch.lookup373, label %_ZN7glslang10TQualifier26getInterlockOrderingStringENS_18TInterlockOrderingE.exit switch.lookup373: ; preds = %570 - %switch.tableidx374 = add i32 %560, -1 + %switch.tableidx374 = add nsw i32 %560, -1 %572 = sext i32 %switch.tableidx374 to i64 %switch.gep375 = getelementptr inbounds [6 x ptr], ptr @switch.table._ZN7glslang13TParseContext33updateStandaloneQualifierDefaultsERKNS_10TSourceLocERKNS_11TPublicTypeE.80, i64 0, i64 %572 %switch.load376 = load ptr, ptr %switch.gep375, align 8 @@ -63017,7 +63017,7 @@ _ZN7glslang10TQualifier26getInterlockOrderingStringENS_18TInterlockOrderingE.exi br i1 %577, label %switch.lookup377, label %_ZN7glslang10TQualifier26getInterlockOrderingStringENS_18TInterlockOrderingE.exit274 switch.lookup377: ; preds = %576 - %switch.tableidx378 = add i32 %560, -1 + %switch.tableidx378 = add nsw i32 %560, -1 %578 = sext i32 %switch.tableidx378 to i64 %switch.gep379 = getelementptr inbounds [6 x ptr], ptr @switch.table._ZN7glslang13TParseContext33updateStandaloneQualifierDefaultsERKNS_10TSourceLocERKNS_11TPublicTypeE.80, i64 0, i64 %578 %switch.load380 = load ptr, ptr %switch.gep379, align 8 diff --git a/bench/hermes/optimized/BytecodeDisassembler.cpp.ll b/bench/hermes/optimized/BytecodeDisassembler.cpp.ll index 47cf02c300e..7a849a88f68 100644 --- a/bench/hermes/optimized/BytecodeDisassembler.cpp.ll +++ b/bench/hermes/optimized/BytecodeDisassembler.cpp.ll @@ -1652,7 +1652,7 @@ while.end: ; preds = %while.cond.loopexit } ; Function Attrs: mustprogress nounwind uwtable -define internal fastcc void @_ZN6hermes3hbc12_GLOBAL__N_111SLPToStringB5cxx11EhPKhPi(ptr noalias nonnull align 8 %agg.result, i8 noundef zeroext %tag, ptr noundef %buff, ptr nocapture noundef nonnull %ind) unnamed_addr #1 { +define internal fastcc void @_ZN6hermes3hbc12_GLOBAL__N_111SLPToStringB5cxx11EhPKhPi(ptr noalias nonnull align 8 %agg.result, i8 noundef zeroext %tag, ptr nocapture noundef readonly %buff, ptr nocapture noundef nonnull %ind) unnamed_addr #1 { entry: %rBracket = alloca %"class.std::__cxx11::basic_string", align 8 %ref.tmp = alloca %"class.std::allocator", align 1 @@ -1702,7 +1702,6 @@ sw.bb: ; preds = %entry %1 = load i32, ptr %ind, align 4 %idx.ext = sext i32 %1 to i64 %add.ptr = getelementptr inbounds i8, ptr %buff, i64 %idx.ext - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr, i64 1) ] %ret.0.copyload.i = load i8, ptr %add.ptr, align 1 %add = add nsw i32 %1, 1 store i32 %add, ptr %ind, align 4 @@ -1746,7 +1745,6 @@ sw.bb6: ; preds = %entry %2 = load i32, ptr %ind, align 4 %idx.ext8 = sext i32 %2 to i64 %add.ptr9 = getelementptr inbounds i8, ptr %buff, i64 %idx.ext8 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr9, i64 1) ] %ret.0.copyload.i19 = load i16, ptr %add.ptr9, align 1 %add11 = add nsw i32 %2, 2 store i32 %add11, ptr %ind, align 4 @@ -1790,7 +1788,6 @@ sw.bb17: ; preds = %entry %3 = load i32, ptr %ind, align 4 %idx.ext19 = sext i32 %3 to i64 %add.ptr20 = getelementptr inbounds i8, ptr %buff, i64 %idx.ext19 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr20, i64 1) ] %ret.0.copyload.i38 = load i32, ptr %add.ptr20, align 1 %add22 = add nsw i32 %3, 4 store i32 %add22, ptr %ind, align 4 @@ -1833,7 +1830,6 @@ sw.bb27: ; preds = %entry %4 = load i32, ptr %ind, align 4 %idx.ext29 = sext i32 %4 to i64 %add.ptr30 = getelementptr inbounds i8, ptr %buff, i64 %idx.ext29 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr30, i64 1) ] %ret.0.copyload.i57 = load double, ptr %add.ptr30, align 1 %add32 = add nsw i32 %4, 8 store i32 %add32, ptr %ind, align 4 @@ -1876,7 +1872,6 @@ sw.bb37: ; preds = %entry %5 = load i32, ptr %ind, align 4 %idx.ext39 = sext i32 %5 to i64 %add.ptr40 = getelementptr inbounds i8, ptr %buff, i64 %idx.ext39 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr40, i64 1) ] %ret.0.copyload.i76 = load i32, ptr %add.ptr40, align 1 %add42 = add nsw i32 %5, 4 store i32 %add42, ptr %ind, align 4 diff --git a/bench/hermes/optimized/ConsecutiveStringStorage.cpp.ll b/bench/hermes/optimized/ConsecutiveStringStorage.cpp.ll index 36fbe57617b..2240dac7343 100644 --- a/bench/hermes/optimized/ConsecutiveStringStorage.cpp.ll +++ b/bench/hermes/optimized/ConsecutiveStringStorage.cpp.ll @@ -4151,8 +4151,7 @@ for.body: ; preds = %for.body.preheader, %cursor.029 = phi ptr [ %add.ptr, %for.body ], [ %add.ptr.i.i, %for.body.preheader ] %__begin2.028 = phi ptr [ %incdec.ptr, %for.body ], [ %u16Storage.coerce0, %for.body.preheader ] %9 = load i16, ptr %__begin2.028, align 2 - call void @llvm.assume(i1 true) [ "align"(ptr %cursor.029, i64 2) ] - store i16 %9, ptr %cursor.029, align 2 + store i16 %9, ptr %cursor.029, align 1 %add.ptr = getelementptr inbounds nuw i8, ptr %cursor.029, i64 2 %incdec.ptr = getelementptr inbounds nuw i8, ptr %__begin2.028, i64 2 %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i diff --git a/bench/hermes/optimized/MD5.cpp.ll b/bench/hermes/optimized/MD5.cpp.ll index 2e0dea46697..7a287fdee80 100644 --- a/bench/hermes/optimized/MD5.cpp.ll +++ b/bench/hermes/optimized/MD5.cpp.ll @@ -951,8 +951,8 @@ _ZN4llvh3MD56updateENS_8ArrayRefIhEE.exit: ; preds = %if.then13.i, %if.en ret void } -; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable -define hidden void @_ZN4llvh3MD55finalERNS0_9MD5ResultE(ptr noundef nonnull align 4 dereferenceable(152) %this, ptr noundef nonnull align 1 dereferenceable(16) %Result) local_unnamed_addr #4 align 2 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable +define hidden void @_ZN4llvh3MD55finalERNS0_9MD5ResultE(ptr noundef nonnull align 4 dereferenceable(152) %this, ptr nocapture noundef nonnull writeonly align 1 dereferenceable(16) initializes((0, 16)) %Result) local_unnamed_addr #0 align 2 { entry: %lo = getelementptr inbounds nuw i8, ptr %this, i64 20 %0 = load i32, ptr %lo, align 4 @@ -983,40 +983,34 @@ if.end: ; preds = %if.then, %entry %shl = shl i32 %1, 3 store i32 %shl, ptr %lo, align 4 %arrayidx11 = getelementptr inbounds nuw i8, ptr %this, i64 80 - call void @llvm.assume(i1 true) [ "align"(ptr %arrayidx11, i64 1) ] store i32 %shl, ptr %arrayidx11, align 4 %arrayidx14 = getelementptr inbounds nuw i8, ptr %this, i64 84 %hi = getelementptr inbounds nuw i8, ptr %this, i64 16 %2 = load i32, ptr %hi, align 4 - call void @llvm.assume(i1 true) [ "align"(ptr %arrayidx14, i64 1) ] store i32 %2, ptr %arrayidx14, align 4 %call19 = tail call noundef ptr @_ZN4llvh3MD54bodyENS_8ArrayRefIhEE(ptr noundef nonnull align 4 dereferenceable(152) %this, ptr nonnull %buffer, i64 64) %3 = load i32, ptr %this, align 4 - call void @llvm.assume(i1 true) [ "align"(ptr %Result, i64 1) ] store i32 %3, ptr %Result, align 1 %arrayidx.i.i.i = getelementptr inbounds nuw i8, ptr %Result, i64 4 %b = getelementptr inbounds nuw i8, ptr %this, i64 4 %4 = load i32, ptr %b, align 4 - call void @llvm.assume(i1 true) [ "align"(ptr %arrayidx.i.i.i, i64 1) ] store i32 %4, ptr %arrayidx.i.i.i, align 1 %arrayidx.i.i.i11 = getelementptr inbounds nuw i8, ptr %Result, i64 8 %c = getelementptr inbounds nuw i8, ptr %this, i64 8 %5 = load i32, ptr %c, align 4 - call void @llvm.assume(i1 true) [ "align"(ptr %arrayidx.i.i.i11, i64 1) ] store i32 %5, ptr %arrayidx.i.i.i11, align 1 %arrayidx.i.i.i12 = getelementptr inbounds nuw i8, ptr %Result, i64 12 %d = getelementptr inbounds nuw i8, ptr %this, i64 12 %6 = load i32, ptr %d, align 4 - call void @llvm.assume(i1 true) [ "align"(ptr %arrayidx.i.i.i12, i64 1) ] store i32 %6, ptr %arrayidx.i.i.i12, align 1 ret void } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4 ; Function Attrs: mustprogress nounwind uwtable -define hidden void @_ZNK4llvh3MD59MD5Result6digestEv(ptr noalias sret(%"class.llvh::SmallString") align 8 %agg.result, ptr nocapture noundef nonnull readonly align 1 dereferenceable(16) %this) local_unnamed_addr #6 align 2 { +define hidden void @_ZNK4llvh3MD59MD5Result6digestEv(ptr noalias sret(%"class.llvh::SmallString") align 8 %agg.result, ptr nocapture noundef nonnull readonly align 1 dereferenceable(16) %this) local_unnamed_addr #5 align 2 { entry: %Res = alloca %"class.llvh::raw_svector_ostream", align 8 %ref.tmp = alloca %"class.llvh::format_object", align 8 @@ -1033,7 +1027,7 @@ entry: store ptr getelementptr inbounds nuw (i8, ptr @_ZTVN4llvh19raw_svector_ostreamE, i64 16), ptr %Res, align 8 %OS.i = getelementptr inbounds nuw i8, ptr %Res, i64 40 store ptr %agg.result, ptr %OS.i, align 8 - call void @_ZN4llvh11raw_ostream16SetBufferAndModeEPcmNS0_10BufferKindE(ptr noundef nonnull align 8 dereferenceable(48) %Res, ptr noundef null, i64 noundef 0, i32 noundef 0) #16 + call void @_ZN4llvh11raw_ostream16SetBufferAndModeEPcmNS0_10BufferKindE(ptr noundef nonnull align 8 dereferenceable(48) %Res, ptr noundef null, i64 noundef 0, i32 noundef 0) #13 %Fmt.i.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 8 %Vals.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp, i64 16 br label %for.body @@ -1046,20 +1040,20 @@ for.body: ; preds = %entry, %for.body store ptr getelementptr inbounds nuw (i8, ptr @_ZTVN4llvh13format_objectIJhEEE, i64 16), ptr %ref.tmp, align 8, !alias.scope !6 %0 = load i8, ptr %arrayidx.i.i, align 1, !noalias !6 store i8 %0, ptr %Vals.i.i, align 8, !alias.scope !6 - %call2 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN4llvh11raw_ostreamlsERKNS_18format_object_baseE(ptr noundef nonnull align 8 dereferenceable(36) %Res, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp) #16 + %call2 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN4llvh11raw_ostreamlsERKNS_18format_object_baseE(ptr noundef nonnull align 8 dereferenceable(36) %Res, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp) #13 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 16 br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !9 for.end: ; preds = %for.body - call void @_ZN4llvh11raw_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %Res) #16 + call void @_ZN4llvh11raw_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %Res) #13 ret void } -declare noundef nonnull align 8 dereferenceable(36) ptr @_ZN4llvh11raw_ostreamlsERKNS_18format_object_baseE(ptr noundef nonnull align 8 dereferenceable(36), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #7 +declare noundef nonnull align 8 dereferenceable(36) ptr @_ZN4llvh11raw_ostreamlsERKNS_18format_object_baseE(ptr noundef nonnull align 8 dereferenceable(36), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #6 ; Function Attrs: mustprogress nounwind uwtable -define hidden void @_ZN4llvh3MD515stringifyResultERNS0_9MD5ResultERNS_11SmallStringILj32EEE(ptr nocapture noundef nonnull readonly align 1 dereferenceable(16) %Result, ptr noundef nonnull align 8 dereferenceable(48) %Str) local_unnamed_addr #6 align 2 { +define hidden void @_ZN4llvh3MD515stringifyResultERNS0_9MD5ResultERNS_11SmallStringILj32EEE(ptr nocapture noundef nonnull readonly align 1 dereferenceable(16) %Result, ptr noundef nonnull align 8 dereferenceable(48) %Str) local_unnamed_addr #5 align 2 { entry: %Res.i = alloca %"class.llvh::raw_svector_ostream", align 8 %ref.tmp.i = alloca %"class.llvh::format_object", align 8 @@ -1080,7 +1074,7 @@ entry: store ptr getelementptr inbounds nuw (i8, ptr @_ZTVN4llvh19raw_svector_ostreamE, i64 16), ptr %Res.i, align 8, !noalias !10 %OS.i.i = getelementptr inbounds nuw i8, ptr %Res.i, i64 40 store ptr %ref.tmp, ptr %OS.i.i, align 8, !noalias !10 - call void @_ZN4llvh11raw_ostream16SetBufferAndModeEPcmNS0_10BufferKindE(ptr noundef nonnull align 8 dereferenceable(48) %Res.i, ptr noundef null, i64 noundef 0, i32 noundef 0) #16 + call void @_ZN4llvh11raw_ostream16SetBufferAndModeEPcmNS0_10BufferKindE(ptr noundef nonnull align 8 dereferenceable(48) %Res.i, ptr noundef null, i64 noundef 0, i32 noundef 0) #13 %Fmt.i.i.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp.i, i64 8 %Vals.i.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp.i, i64 16 br label %for.body.i @@ -1093,13 +1087,13 @@ for.body.i: ; preds = %for.body.i, %entry store ptr getelementptr inbounds nuw (i8, ptr @_ZTVN4llvh13format_objectIJhEEE, i64 16), ptr %ref.tmp.i, align 8, !alias.scope !13, !noalias !10 %0 = load i8, ptr %arrayidx.i.i.i, align 1, !noalias !16 store i8 %0, ptr %Vals.i.i.i, align 8, !alias.scope !13, !noalias !10 - %call2.i = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN4llvh11raw_ostreamlsERKNS_18format_object_baseE(ptr noundef nonnull align 8 dereferenceable(36) %Res.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i) #16 + %call2.i = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN4llvh11raw_ostreamlsERKNS_18format_object_baseE(ptr noundef nonnull align 8 dereferenceable(36) %Res.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i) #13 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 16 br i1 %exitcond.not.i, label %_ZNK4llvh3MD59MD5Result6digestEv.exit, label %for.body.i, !llvm.loop !9 _ZNK4llvh3MD59MD5Result6digestEv.exit: ; preds = %for.body.i - call void @_ZN4llvh11raw_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %Res.i) #16 + call void @_ZN4llvh11raw_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %Res.i) #13 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %Res.i) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %ref.tmp.i) %cmp.i = icmp eq ptr %Str, %ref.tmp @@ -1118,7 +1112,7 @@ if.then2.i: ; preds = %if.end.i br i1 %cmp.i26.i, label %if.end8.i, label %if.then6.i if.then6.i: ; preds = %if.then2.i - call void @free(ptr noundef %2) #16 + call void @free(ptr noundef %2) #13 %.pre.i = load ptr, ptr %ref.tmp, align 8 br label %if.end8.i @@ -1165,7 +1159,7 @@ if.end24.i: ; preds = %if.end12.i if.then27.i: ; preds = %if.end24.i store i32 0, ptr %Size.i31.i, align 8 %add.ptr.i.i.i.i = getelementptr inbounds nuw i8, ptr %Str, i64 16 - call void @_ZN4llvh15SmallVectorBase8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(48) %Str, ptr noundef nonnull %add.ptr.i.i.i.i, i64 noundef %conv.i30.i, i64 noundef 1) #16 + call void @_ZN4llvh15SmallVectorBase8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(48) %Str, ptr noundef nonnull %add.ptr.i.i.i.i, i64 noundef %conv.i30.i, i64 noundef 1) #13 br label %if.end37.i if.else.i: ; preds = %if.end24.i @@ -1207,15 +1201,15 @@ _ZN4llvh15SmallVectorImplIcEaSEOS1_.exit: ; preds = %_ZN4llvh15SmallVect br i1 %cmp.i.i.i.i, label %_ZN4llvh11SmallStringILj32EED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %_ZN4llvh15SmallVectorImplIcEaSEOS1_.exit - call void @free(ptr noundef %14) #16 + call void @free(ptr noundef %14) #13 br label %_ZN4llvh11SmallStringILj32EED2Ev.exit _ZN4llvh11SmallStringILj32EED2Ev.exit: ; preds = %_ZN4llvh15SmallVectorImplIcEaSEOS1_.exit, %if.then.i.i.i ret void } -; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable -define hidden { i64, i64 } @_ZN4llvh3MD54hashENS_8ArrayRefIhEE(ptr %Data.coerce0, i64 %Data.coerce1) local_unnamed_addr #8 align 2 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable +define hidden { i64, i64 } @_ZN4llvh3MD54hashENS_8ArrayRefIhEE(ptr %Data.coerce0, i64 %Data.coerce1) local_unnamed_addr #2 align 2 { if.end21.i: %Hash = alloca %"class.llvh::MD5", align 8 store i32 1732584193, ptr %Hash, align 8 @@ -1275,11 +1269,9 @@ _ZN4llvh3MD55finalERNS0_9MD5ResultE.exit: ; preds = %_ZN4llvh3MD56update %shl.i = shl i32 %3, 3 store i32 %shl.i, ptr %lo.i, align 4 %arrayidx11.i = getelementptr inbounds nuw i8, ptr %Hash, i64 80 - call void @llvm.assume(i1 true) [ "align"(ptr %arrayidx11.i, i64 1) ] store i32 %shl.i, ptr %arrayidx11.i, align 8 %arrayidx14.i = getelementptr inbounds nuw i8, ptr %Hash, i64 84 %4 = load i32, ptr %hi.i, align 8 - call void @llvm.assume(i1 true) [ "align"(ptr %arrayidx14.i, i64 1) ] store i32 %4, ptr %arrayidx14.i, align 4 %call19.i = call noundef ptr @_ZN4llvh3MD54bodyENS_8ArrayRefIhEE(ptr noundef nonnull align 4 dereferenceable(152) %Hash, ptr nonnull %buffer30.i, i64 64) %5 = load i64, ptr %Hash, align 8 @@ -1289,26 +1281,23 @@ _ZN4llvh3MD55finalERNS0_9MD5ResultE.exit: ; preds = %_ZN4llvh3MD56update ret { i64, i64 } %.fca.1.insert.i } -; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #9 - -declare void @_ZN4llvh11raw_ostream16SetBufferAndModeEPcmNS0_10BufferKindE(ptr noundef nonnull align 8 dereferenceable(36), ptr noundef, i64 noundef, i32 noundef) local_unnamed_addr #7 +declare void @_ZN4llvh11raw_ostream16SetBufferAndModeEPcmNS0_10BufferKindE(ptr noundef nonnull align 8 dereferenceable(36), ptr noundef, i64 noundef, i32 noundef) local_unnamed_addr #6 ; Function Attrs: nounwind -declare void @_ZN4llvh11raw_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(36)) unnamed_addr #10 +declare void @_ZN4llvh11raw_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(36)) unnamed_addr #7 ; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) -declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #11 +declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #8 ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #3 -declare void @_ZN4llvh15SmallVectorBase8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #7 +declare void @_ZN4llvh15SmallVectorBase8grow_podEPvmm(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #6 -declare void @_ZN4llvh18format_object_base4homeEv(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #7 +declare void @_ZN4llvh18format_object_base4homeEv(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #6 ; Function Attrs: mustprogress nounwind uwtable -define linkonce_odr hidden noundef i32 @_ZNK4llvh13format_objectIJhEE7snprintEPcj(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef %Buffer, i32 noundef %BufferSize) unnamed_addr #6 comdat align 2 { +define linkonce_odr hidden noundef i32 @_ZNK4llvh13format_objectIJhEE7snprintEPcj(ptr noundef nonnull align 8 dereferenceable(24) %this, ptr noundef %Buffer, i32 noundef %BufferSize) unnamed_addr #5 comdat align 2 { entry: %conv.i = zext i32 %BufferSize to i64 %Fmt.i = getelementptr inbounds nuw i8, ptr %this, i64 8 @@ -1316,42 +1305,39 @@ entry: %Vals.i = getelementptr inbounds nuw i8, ptr %this, i64 16 %1 = load i8, ptr %Vals.i, align 8 %conv2.i = zext i8 %1 to i32 - %call3.i = tail call noundef i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %Buffer, i64 noundef %conv.i, ptr noundef %0, i32 noundef %conv2.i) #16 + %call3.i = tail call noundef i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %Buffer, i64 noundef %conv.i, ptr noundef %0, i32 noundef %conv2.i) #13 ret i32 %call3.i } ; Function Attrs: nofree nounwind -declare noundef i32 @snprintf(ptr noalias nocapture noundef writeonly, i64 noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #12 +declare noundef i32 @snprintf(ptr noalias nocapture noundef writeonly, i64 noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #9 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.fshl.i32(i32, i32, i32) #13 +declare i32 @llvm.fshl.i32(i32, i32, i32) #10 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #14 +declare void @llvm.experimental.noalias.scope.decl(metadata) #11 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #15 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #12 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #15 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #12 attributes #0 = { mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #4 = { mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #6 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { mustprogress nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #10 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #11 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #12 = { nofree nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #13 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #14 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #15 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #16 = { nounwind } +attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #5 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #8 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { nofree nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #10 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #11 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #12 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #13 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/hyper-rs/optimized/4lwa0ukf5hd0n1ju.ll b/bench/hyper-rs/optimized/4lwa0ukf5hd0n1ju.ll index 44230b45357..041a71844e7 100644 --- a/bench/hyper-rs/optimized/4lwa0ukf5hd0n1ju.ll +++ b/bench/hyper-rs/optimized/4lwa0ukf5hd0n1ju.ll @@ -141,6 +141,7 @@ define void @"_ZN74_$LT$hyper..upgrade..OnUpgrade$u20$as$u20$core..future..futur br i1 %7, label %8, label %11 8: ; preds = %3 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] %9 = tail call noundef nonnull align 8 ptr @_ZN5alloc5alloc15exchange_malloc17hbe31f2048284b3faE.llvm.15489473380671106129(i64 noundef 24, i64 noundef 8), !noalias !59 store ptr null, ptr %9, align 8 %.sroa.41.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %9, i64 16 @@ -184,6 +185,7 @@ _ZN3std3sys4unix5locks11futex_mutex5Mutex4lock17h2824c483f8557e8fE.exit: ; preds 25: ; preds = %"_ZN3std4sync5mutex19MutexGuard$LT$T$GT$3new17he50ff36318313e8aE.exit" call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4), !noalias !65 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] store ptr %12, ptr %4, align 8, !noalias !65 %26 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i8 %.0.i.i.i, ptr %26, align 8, !noalias !65 @@ -210,6 +212,7 @@ common.resume: ; preds = %34, %27 resume { ptr, i32 } %common.resume.op "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h33b222dedd73d0cdE.exit": ; preds = %"_ZN3std4sync5mutex19MutexGuard$LT$T$GT$3new17he50ff36318313e8aE.exit" + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] %32 = getelementptr inbounds nuw i8, ptr %6, i64 24 invoke void @"_ZN88_$LT$tokio..sync..oneshot..Receiver$LT$T$GT$$u20$as$u20$core..future..future..Future$GT$4poll17ha1c3207cbce60fc9E"(ptr noalias nocapture noundef nonnull sret({ i64, [6 x i64] }) align 8 dereferenceable(56) %5, ptr noalias noundef nonnull align 8 dereferenceable(8) %32, ptr noalias noundef nonnull align 8 dereferenceable(8) %2) to label %36 unwind label %34 @@ -220,6 +223,7 @@ common.resume: ; preds = %34, %27 34: ; preds = %.noexc, %42, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h33b222dedd73d0cdE.exit" %35 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] invoke fastcc void @"_ZN4core3ptr169drop_in_place$LT$std..sync..mutex..MutexGuard$LT$tokio..sync..oneshot..Receiver$LT$core..result..Result$LT$hyper..upgrade..Upgraded$C$hyper..error..Error$GT$$GT$$GT$$GT$17h2f6c31385455227aE"(ptr nonnull %12, i8 %.0.i.i.i) #11 to label %common.resume unwind label %61 @@ -243,6 +247,7 @@ common.resume: ; preds = %34, %27 br i1 %41, label %46, label %45 42: ; preds = %39 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] %43 = invoke noundef nonnull align 8 ptr @_ZN5alloc5alloc15exchange_malloc17hbe31f2048284b3faE.llvm.15489473380671106129(i64 noundef 24, i64 noundef 8) to label %.noexc unwind label %34 @@ -258,6 +263,7 @@ common.resume: ; preds = %34, %27 br label %"_ZN74_$LT$hyper..upgrade..OnUpgrade$u20$as$u20$core..future..future..Future$GT$4poll28_$u7b$$u7b$closure$u7d$$u7d$17h602be501d17ab61aE.exit" 46: ; preds = %40 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.528.0.copyload, i64 8) ] %47 = icmp ne ptr %.sroa.528.0.copyload, null tail call void @llvm.assume(i1 %47) br label %"_ZN74_$LT$hyper..upgrade..OnUpgrade$u20$as$u20$core..future..future..Future$GT$4poll28_$u7b$$u7b$closure$u7d$$u7d$17h602be501d17ab61aE.exit" @@ -280,6 +286,7 @@ common.resume: ; preds = %34, %27 br label %50 50: ; preds = %"_ZN74_$LT$hyper..upgrade..OnUpgrade$u20$as$u20$core..future..future..Future$GT$4poll28_$u7b$$u7b$closure$u7d$$u7d$17h602be501d17ab61aE.exit", %48 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] %51 = trunc nuw i8 %.0.i.i.i to i1 br i1 %51, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i, label %52 diff --git a/bench/hyper-rs/optimized/5drhzjx8c241ue20.ll b/bench/hyper-rs/optimized/5drhzjx8c241ue20.ll index 62f7d3805bf..5c871f9b223 100644 --- a/bench/hyper-rs/optimized/5drhzjx8c241ue20.ll +++ b/bench/hyper-rs/optimized/5drhzjx8c241ue20.ll @@ -215,6 +215,7 @@ define noundef zeroext i1 @_ZN5hyper5error5Error10is_timeout17h1bdf15bba89e103aE .lr.ph.i: ; preds = %11, %.lr.ph.preheader.i %.sroa.0.014.i = phi ptr [ %.sroa.0.0.i, %11 ], [ %3, %.lr.ph.preheader.i ] %.sroa.4.013.i = phi ptr [ %.sroa.4.0.i, %11 ], [ %6, %.lr.ph.preheader.i ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.4.013.i, i64 8) ] %7 = icmp ne ptr %.sroa.4.013.i, null tail call void @llvm.assume(i1 %7) tail call void @llvm.experimental.noalias.scope.decl(metadata !16) @@ -244,6 +245,7 @@ define hidden noalias noundef nonnull align 8 ptr @_ZN5hyper5error5Error3new17h1 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) %3 = getelementptr inbounds nuw i8, ptr %2, i64 16 store i8 %0, ptr %3, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] store ptr null, ptr %2, align 8 %4 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !19 %5 = tail call noundef align 8 dereferenceable_or_null(24) ptr @__rust_alloc(i64 noundef 24, i64 noundef range(i64 1, -9223372036854775807) 8) #14, !noalias !19 @@ -284,6 +286,7 @@ define hidden noalias noundef nonnull align 8 ptr @_ZN5hyper5error5Error12new_ca call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %1) %2 = getelementptr inbounds nuw i8, ptr %1, i64 16 store i8 4, ptr %2, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] store ptr null, ptr %1, align 8 %3 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !22 %4 = tail call noundef align 8 dereferenceable_or_null(24) ptr @__rust_alloc(i64 noundef 24, i64 noundef range(i64 1, -9223372036854775807) 8) #14, !noalias !22 @@ -324,6 +327,7 @@ define hidden noalias noundef nonnull align 8 ptr @_ZN5hyper5error5Error8new_use call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %1) %2 = getelementptr inbounds nuw i8, ptr %1, i64 16 store i8 3, ptr %2, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] store ptr null, ptr %1, align 8 %3 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !25 %4 = tail call noundef align 8 dereferenceable_or_null(24) ptr @__rust_alloc(i64 noundef 24, i64 noundef range(i64 1, -9223372036854775807) 8) #14, !noalias !25 @@ -364,6 +368,7 @@ define hidden noalias noundef nonnull align 8 ptr @_ZN5hyper5error5Error19new_us call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %1) %2 = getelementptr inbounds nuw i8, ptr %1, i64 16 store i8 3, ptr %2, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] store ptr null, ptr %1, align 8 %3 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !28 %4 = tail call noundef align 8 dereferenceable_or_null(24) ptr @__rust_alloc(i64 noundef 24, i64 noundef range(i64 1, -9223372036854775807) 8) #14, !noalias !28 @@ -483,6 +488,7 @@ define noalias noundef nonnull align 8 ptr @"_ZN86_$LT$hyper..error..Error$u20$a call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) %3 = getelementptr inbounds nuw i8, ptr %2, i64 16 store i8 %0, ptr %3, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] store ptr null, ptr %2, align 8 %4 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !31 %5 = tail call noundef align 8 dereferenceable_or_null(24) ptr @__rust_alloc(i64 noundef 24, i64 noundef range(i64 1, -9223372036854775807) 8) #14, !noalias !31 diff --git a/bench/hyperscan/optimized/hwlm.c.ll b/bench/hyperscan/optimized/hwlm.c.ll index aa96957f073..76c4b4dff64 100644 --- a/bench/hyperscan/optimized/hwlm.c.ll +++ b/bench/hyperscan/optimized/hwlm.c.ll @@ -1115,7 +1115,6 @@ for.cond15.i2137.i: ; preds = %for.body19.i2141.i, br i1 %cmp17.i2139.i, label %for.body19.i2141.i, label %cond.false40.i260.i for.body19.i2141.i: ; preds = %for.cond15.i2137.i - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i2121.1.idx.sroa.phi.i, i64 16) ] %102 = load <16 x i8>, ptr %buf.addr.i2121.1.idx.sroa.phi.i, align 16 %cmp.i3681.i = icmp eq <16 x i8> %vecinit15.i2881.i, %102 %103 = bitcast <16 x i1> %cmp.i3681.i to i16 @@ -1123,7 +1122,7 @@ for.body19.i2141.i: ; preds = %for.cond15.i2137.i br i1 %tobool29.i2147.not.i, label %for.cond15.i2137.i, label %cond.end30.i254.i, !llvm.loop !8 cond.end30.i254.i: ; preds = %for.body19.i2141.i - %104 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %103, i1 true) + %104 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %103, i1 true) %idx.ext39.i2155.i = zext nneg i16 %104 to i64 %add.ptr40.i2156.i = getelementptr inbounds nuw i8, ptr %buf.addr.i2121.1.idx.sroa.phi.i, i64 %idx.ext39.i2155.i br label %run_hwlm_accel.exit117.i @@ -1134,7 +1133,7 @@ cond.false40.i260.i: ; preds = %for.cond15.i2137.i %cmp.i3809.i = icmp eq <16 x i8> %vecinit15.i2881.i, %105 %106 = bitcast <16 x i1> %cmp.i3809.i to i16 %tobool3.i1444.not.i = icmp eq i16 %106, 0 - %107 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %106, i1 true) + %107 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %106, i1 true) %idx.ext.i1451.i = zext nneg i16 %107 to i64 %add.ptr.i1452.i = getelementptr inbounds nuw i8, ptr %add.ptr41.i261.i, i64 %idx.ext.i1451.i %cond49.i268.i = select i1 %tobool3.i1444.not.i, ptr %add.ptr39.i, ptr %add.ptr.i1452.i @@ -1153,7 +1152,6 @@ for.cond18.i1685.i: ; preds = %for.body22.i1689.i, br i1 %cmp20.i1687.i, label %for.body22.i1689.i, label %cond.true37.i349.i for.body22.i1689.i: ; preds = %for.cond18.i1685.i - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i1667.1.idx.sroa.phi.i, i64 16) ] %109 = load <16 x i8>, ptr %buf.addr.i1667.1.idx.sroa.phi.i, align 16 %110 = and <16 x i8> %109, splat (i8 -33) %cmp.i3765.i = icmp eq <16 x i8> %vecinit15.i2848.i, %110 @@ -1162,7 +1160,7 @@ for.body22.i1689.i: ; preds = %for.cond18.i1685.i br i1 %tobool33.i1696.not.i, label %for.cond18.i1685.i, label %cond.end30.i333.i, !llvm.loop !10 cond.end30.i333.i: ; preds = %for.body22.i1689.i - %112 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %111, i1 true) + %112 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %111, i1 true) %idx.ext43.i1704.i = zext nneg i16 %112 to i64 %add.ptr44.i1705.i = getelementptr inbounds nuw i8, ptr %buf.addr.i1667.1.idx.sroa.phi.i, i64 %idx.ext43.i1704.i br label %run_hwlm_accel.exit117.i @@ -1174,7 +1172,7 @@ cond.true37.i349.i: ; preds = %for.cond18.i1685.i %cmp.i3865.i = icmp eq <16 x i8> %vecinit15.i2848.i, %114 %115 = bitcast <16 x i1> %cmp.i3865.i to i16 %tobool5.i1088.not.i = icmp eq i16 %115, 0 - %116 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %115, i1 true) + %116 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %115, i1 true) %idx.ext.i1095.i = zext nneg i16 %116 to i64 %add.ptr.i1096.i = getelementptr inbounds nuw i8, ptr %add.ptr38.i350.i, i64 %idx.ext.i1095.i %cond49.i347.i = select i1 %tobool5.i1088.not.i, ptr %add.ptr39.i, ptr %add.ptr.i1096.i @@ -1199,7 +1197,6 @@ for.cond.i6262.i: ; preds = %if.end.i6278.i, %sw br i1 %cmp.i6264.i, label %for.body.i6266.i, label %cond.false25.i664.i for.body.i6266.i: ; preds = %for.cond.i6262.i - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i6257.0.idx.sroa.phi.i, i64 16) ] %119 = load <16 x i8>, ptr %buf.addr.i6257.0.idx.sroa.phi.i, align 16 %cmp.i25.i6267.i = icmp eq <16 x i8> %vecinit15.i2617.i, %119 %cmp.i.i6269.i = icmp eq <16 x i8> %vecinit15.i2584.i, %119 @@ -1227,7 +1224,7 @@ cond.end15.i658.split.loop.exit.i: ; preds = %land.lhs.true.i6288 cond.end15.i658.i: ; preds = %if.end.i6278.i, %cond.end15.i658.split.loop.exit.i %z.i6260.01873.in.i = phi i16 [ %125, %cond.end15.i658.split.loop.exit.i ], [ %122, %if.end.i6278.i ] - %126 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %z.i6260.01873.in.i, i1 true) + %126 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %z.i6260.01873.in.i, i1 true) %idx.ext.i6286.i = zext nneg i16 %126 to i64 %add.ptr19.i6287.i = getelementptr inbounds nuw i8, ptr %buf.addr.i6257.0.idx.sroa.phi.i, i64 %idx.ext.i6286.i br label %run_hwlm_accel.exit117.i @@ -1243,7 +1240,7 @@ cond.false25.i664.i: ; preds = %for.cond.i6262.i %129 = select <16 x i1> %cmp.i12.i5359.i, <16 x i1> %128, <16 x i1> zeroinitializer %130 = bitcast <16 x i1> %129 to i16 %tobool.i5366.not.i = icmp eq i16 %130, 0 - %131 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %130, i1 true) + %131 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %130, i1 true) %idx.ext.i5372.i = zext nneg i16 %131 to i64 %add.ptr.i5373.i = getelementptr inbounds nuw i8, ptr %add.ptr26.i665.i, i64 %idx.ext.i5372.i br i1 %tobool.i5366.not.i, label %if.end32.i670.i, label %run_hwlm_accel.exit117.i @@ -1273,7 +1270,6 @@ for.cond.i5751.i: ; preds = %if.end.i5769.i, %sw br i1 %cmp.i5753.i, label %for.body.i5755.i, label %cond.true22.i754.i for.body.i5755.i: ; preds = %for.cond.i5751.i - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i5728.0.idx.sroa.phi.i, i64 16) ] %135 = load <16 x i8>, ptr %buf.addr.i5728.0.idx.sroa.phi.i, align 16 %136 = and <16 x i8> %135, splat (i8 -33) %cmp.i30.i5757.i = icmp eq <16 x i8> %vecinit15.i2551.i, %136 @@ -1304,7 +1300,7 @@ cond.end15.i727.split.loop.exit.i: ; preds = %land.lhs.true.i5779 cond.end15.i727.i: ; preds = %if.end.i5769.i, %cond.end15.i727.split.loop.exit.i %z.i5733.01879.in.i = phi i16 [ %144, %cond.end15.i727.split.loop.exit.i ], [ %139, %if.end.i5769.i ] - %145 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %z.i5733.01879.in.i, i1 true) + %145 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %z.i5733.01879.in.i, i1 true) %idx.ext.i5777.i = zext nneg i16 %145 to i64 %add.ptr22.i5778.i = getelementptr inbounds nuw i8, ptr %buf.addr.i5728.0.idx.sroa.phi.i, i64 %idx.ext.i5777.i br label %run_hwlm_accel.exit117.i @@ -1321,7 +1317,7 @@ cond.true22.i754.i: ; preds = %for.cond.i5751.i %149 = select <16 x i1> %cmp.i16.i4626.i, <16 x i1> %148, <16 x i1> zeroinitializer %150 = bitcast <16 x i1> %149 to i16 %tobool.i4633.not.i = icmp eq i16 %150, 0 - %151 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %150, i1 true) + %151 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %150, i1 true) %idx.ext.i4639.i = zext nneg i16 %151 to i64 %add.ptr.i4640.i = getelementptr inbounds nuw i8, ptr %add.ptr23.i755.i, i64 %idx.ext.i4639.i br i1 %tobool.i4633.not.i, label %if.end32.i739.i, label %run_hwlm_accel.exit117.i diff --git a/bench/influxdb-rs/optimized/3a0j6phgxkq6hdnl.ll b/bench/influxdb-rs/optimized/3a0j6phgxkq6hdnl.ll index e7b1c2fcc54..54bd12e997f 100644 --- a/bench/influxdb-rs/optimized/3a0j6phgxkq6hdnl.ll +++ b/bench/influxdb-rs/optimized/3a0j6phgxkq6hdnl.ll @@ -2611,7 +2611,7 @@ common.resume: ; preds = %"_ZN4core3ptr73drop %.ptr196 = getelementptr i8, ptr %103, i64 16 tail call void @llvm.experimental.noalias.scope.decl(metadata !447) %104 = icmp eq i64 %102, 0 - br i1 %104, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8for_each17h404a635d9894b31eE.exit", label %.lr.ph.i.preheader + br i1 %104, label %.loopexit202, label %.lr.ph.i.preheader .lr.ph.i.preheader: ; preds = %98 %.ptr = getelementptr inbounds nuw i8, ptr %100, i64 16 @@ -2620,6 +2620,7 @@ common.resume: ; preds = %"_ZN4core3ptr73drop .lr.ph.i: ; preds = %.lr.ph.i.preheader, %"_ZN9arrow_csv6writer15Writer$LT$W$GT$5write28_$u7b$$u7b$closure$u7d$$u7d$17hef6ef9a1149124cbE.exit.i" %.sroa.0.07.i = phi ptr [ %105, %"_ZN9arrow_csv6writer15Writer$LT$W$GT$5write28_$u7b$$u7b$closure$u7d$$u7d$17hef6ef9a1149124cbE.exit.i" ], [ %.ptr, %.lr.ph.i.preheader ] %105 = getelementptr inbounds nuw i8, ptr %.sroa.0.07.i, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.07.i, i64 8) ] %.val3.i = load ptr, ptr %.sroa.0.07.i, align 8, !noalias !447, !nonnull !4, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15), !noalias !447 %106 = getelementptr inbounds nuw i8, ptr %.val3.i, i64 72 @@ -2662,7 +2663,7 @@ common.resume: ; preds = %"_ZN4core3ptr73drop store i64 %119, ptr %94, align 8, !alias.scope !450, !noalias !453 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15), !noalias !447 %120 = icmp eq ptr %105, %.ptr196 - br i1 %120, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8for_each17h404a635d9894b31eE.exit.loopexit", label %.lr.ph.i + br i1 %120, label %.loopexit202.loopexit, label %.lr.ph.i 121: ; preds = %.lr.ph.i %122 = landingpad { ptr, i32 } @@ -2683,24 +2684,25 @@ common.resume: ; preds = %"_ZN4core3ptr73drop invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17hce967a660be2357aE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %26) to label %"_ZN4core3ptr73drop_in_place$LT$alloc..sync..Arc$LT$arrow_schema..schema..Schema$GT$$GT$17hb11158dd45d13de4E.llvm.924007400533848899.exit" unwind label %285 -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8for_each17h404a635d9894b31eE.exit.loopexit": ; preds = %"_ZN9arrow_csv6writer15Writer$LT$W$GT$5write28_$u7b$$u7b$closure$u7d$$u7d$17hef6ef9a1149124cbE.exit.i" +.loopexit202.loopexit: ; preds = %"_ZN9arrow_csv6writer15Writer$LT$W$GT$5write28_$u7b$$u7b$closure$u7d$$u7d$17hef6ef9a1149124cbE.exit.i" %.pre = load ptr, ptr %26, align 8, !alias.scope !462 - br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8for_each17h404a635d9894b31eE.exit" + br label %.loopexit202 -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8for_each17h404a635d9894b31eE.exit": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8for_each17h404a635d9894b31eE.exit.loopexit", %98 - %127 = phi ptr [ %.pre, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8for_each17h404a635d9894b31eE.exit.loopexit" ], [ %95, %98 ] +.loopexit202: ; preds = %.loopexit202.loopexit, %98 + %127 = phi ptr [ %.pre, %.loopexit202.loopexit ], [ %95, %98 ] + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] call void @llvm.experimental.noalias.scope.decl(metadata !467) call void @llvm.experimental.noalias.scope.decl(metadata !468) %128 = atomicrmw sub ptr %127, i64 1 release, align 8, !noalias !462 %129 = icmp eq i64 %128, 1 br i1 %129, label %130, label %131 -130: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8for_each17h404a635d9894b31eE.exit" +130: ; preds = %.loopexit202 fence acquire invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17hce967a660be2357aE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %26) to label %131 unwind label %96 -131: ; preds = %130, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8for_each17h404a635d9894b31eE.exit" +131: ; preds = %130, %.loopexit202 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %.sroa.5) %.val = load ptr, ptr %27, align 8, !nonnull !4, !noundef !4 @@ -2874,9 +2876,9 @@ common.resume: ; preds = %"_ZN4core3ptr73drop %175 = getelementptr inbounds nuw i8, ptr %2, i64 32 %176 = load i64, ptr %175, align 8, !noundef !4 %.not = icmp eq i64 %176, 0 - br i1 %.not, label %._crit_edge255, label %.lr.ph254 + br i1 %.not, label %._crit_edge256, label %.lr.ph255 -.lr.ph254: ; preds = %174 +.lr.ph255: ; preds = %174 %177 = getelementptr inbounds nuw i8, ptr %20, i64 8 %.sroa.5172.0..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 8 br label %185 @@ -2896,7 +2898,7 @@ common.resume: ; preds = %"_ZN4core3ptr73drop cleanup br label %.body147 -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke369, %.invoke, %194, %._crit_edge255, %"_ZN9arrow_csv6writer15Writer$LT$W$GT$5write28_$u7b$$u7b$closure$u7d$$u7d$17hd3e4d645118bbb4dE.exit.i", %252, %263 +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke370, %.invoke, %194, %._crit_edge256, %"_ZN9arrow_csv6writer15Writer$LT$W$GT$5write28_$u7b$$u7b$closure$u7d$$u7d$17hd3e4d645118bbb4dE.exit.i", %252, %263 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %.body147 @@ -2906,11 +2908,11 @@ common.resume: ; preds = %"_ZN4core3ptr73drop invoke void @"_ZN4core3ptr49drop_in_place$LT$csv..byte_record..ByteRecord$GT$17h30830cce557d706aE"(ptr noalias noundef nonnull align 8 dereferenceable(8) %22) #18 to label %.body137 unwind label %285 -._crit_edge255: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h1cafc1e9ba804f9aE.exit145.thread", %174 +._crit_edge256: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h1cafc1e9ba804f9aE.exit145.thread", %174 %178 = invoke noundef ptr @"_ZN3csv6writer15Writer$LT$W$GT$9flush_buf17ha296408b96e7bb69E.llvm.14933412330345768097"(ptr noalias noundef nonnull align 8 dereferenceable(376) %1) to label %.noexc139 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp -.noexc139: ; preds = %._crit_edge255 +.noexc139: ; preds = %._crit_edge256 %179 = icmp eq ptr %178, null %180 = getelementptr inbounds nuw i8, ptr %1, i64 352 %181 = load ptr, ptr %180, align 8, !alias.scope !481 @@ -2927,9 +2929,9 @@ common.resume: ; preds = %"_ZN4core3ptr73drop .cont: ; preds = %.invoke unreachable -185: ; preds = %.lr.ph254, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h1cafc1e9ba804f9aE.exit145.thread" - %.sroa.020.0252 = phi i64 [ 0, %.lr.ph254 ], [ %186, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h1cafc1e9ba804f9aE.exit145.thread" ] - %186 = add i64 %.sroa.020.0252, 1 +185: ; preds = %.lr.ph255, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h1cafc1e9ba804f9aE.exit145.thread" + %.sroa.020.0253 = phi i64 [ 0, %.lr.ph255 ], [ %186, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h1cafc1e9ba804f9aE.exit145.thread" ] + %186 = add i64 %.sroa.020.0253, 1 %187 = load ptr, ptr %22, align 8, !nonnull !4, !align !5, !noundef !4 %188 = getelementptr inbounds nuw i8, ptr %187, i64 80 store i64 0, ptr %188, align 8 @@ -2998,20 +3000,23 @@ common.resume: ; preds = %"_ZN4core3ptr73drop to label %"_ZN4core3ptr49drop_in_place$LT$csv..byte_record..ByteRecord$GT$17h30830cce557d706aE.exit" unwind label %172 ._crit_edge: ; preds = %272, %185 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %.sroa.5172) %207 = invoke noundef align 8 ptr @"_ZN3csv6writer15Writer$LT$W$GT$17write_byte_record17h835c55a83dffa7afE"(ptr noalias noundef nonnull align 8 dereferenceable(376) %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %22) to label %210 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit .lr.ph: ; preds = %185, %272 - %.sroa.8167.0251 = phi i64 [ %209, %272 ], [ 0, %185 ] - %.sroa.0166.0250 = phi ptr [ %208, %272 ], [ %189, %185 ] - %208 = getelementptr inbounds nuw i8, ptr %.sroa.0166.0250, i64 24 - %209 = add i64 %.sroa.8167.0251, 1 + %.sroa.8167.0252 = phi i64 [ %209, %272 ], [ 0, %185 ] + %.sroa.0166.0251 = phi ptr [ %208, %272 ], [ %189, %185 ] + %208 = getelementptr inbounds nuw i8, ptr %.sroa.0166.0251, i64 24 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0166.0251, i64 8) ] + %209 = add i64 %.sroa.8167.0252, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0166.0251, i64 8) ] store i64 0, ptr %.sroa.576.0..sroa_idx, align 8 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %21) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) - store i64 %.sroa.020.0252, ptr %177, align 8 - store ptr %.sroa.0166.0250, ptr %20, align 8 + store i64 %.sroa.020.0253, ptr %177, align 8 + store ptr %.sroa.0166.0251, ptr %20, align 8 invoke void @_ZN10arrow_cast7display14ValueFormatter5write17h4eb20de32acb0458E(ptr noalias nocapture noundef nonnull sret({ i64, [4 x i64] }) align 8 dereferenceable(40) %21, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %20, ptr noundef nonnull align 1 %23, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7f594b1cc0dc9c97352e1e787ce274d2.8) to label %215 unwind label %.loopexit.split-lp.loopexit @@ -3034,7 +3039,7 @@ common.resume: ; preds = %"_ZN4core3ptr73drop "_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h1cafc1e9ba804f9aE.exit145.thread": ; preds = %210, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h1cafc1e9ba804f9aE.exit145" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.5172) %exitcond.not = icmp eq i64 %186, %176 - br i1 %exitcond.not, label %._crit_edge255, label %185 + br i1 %exitcond.not, label %._crit_edge256, label %185 214: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h1cafc1e9ba804f9aE.exit145" call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.2104, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.5172, i64 32, i1 false) @@ -3071,6 +3076,7 @@ common.resume: ; preds = %"_ZN4core3ptr73drop store ptr %10, ptr %222, align 8, !noalias !502 %223 = getelementptr inbounds nuw i8, ptr %8, i64 40 store ptr @"_ZN70_$LT$arrow_schema..error..ArrowError$u20$as$u20$core..fmt..Display$GT$3fmt17h8e47182293816c3eE", ptr %223, align 8, !noalias !502 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5), !noalias !506 store ptr @anon.7f594b1cc0dc9c97352e1e787ce274d2.38, ptr %5, align 8, !noalias !517 %.sroa.5.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %5, i64 8 @@ -3118,16 +3124,16 @@ common.resume: ; preds = %"_ZN4core3ptr73drop %234 = getelementptr inbounds nuw i8, ptr %.val121, i64 72 %.val5.i.i = load i64, ptr %234, align 8, !alias.scope !520, !noalias !523, !noundef !4 %235 = icmp ugt i64 %233, %.val5.i.i - br i1 %235, label %.invoke369, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hc4f148022b2f004fE.exit.i.i" + br i1 %235, label %.invoke370, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hc4f148022b2f004fE.exit.i.i" -.invoke369: ; preds = %250, %228 +.invoke370: ; preds = %250, %228 %236 = phi i64 [ %233, %228 ], [ %243, %250 ] %237 = phi i64 [ %.val5.i.i, %228 ], [ %.val1.i, %250 ] %238 = phi ptr [ @anon.7f594b1cc0dc9c97352e1e787ce274d2.6, %228 ], [ @anon.7f594b1cc0dc9c97352e1e787ce274d2.1, %250 ] invoke void @_ZN4core5slice5index24slice_end_index_len_fail17he4b3fef0dd07c6e1E(i64 noundef %236, i64 noundef %237, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %238) #19 - to label %.cont370 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp + to label %.cont371 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp -.cont370: ; preds = %.invoke369 +.cont371: ; preds = %.invoke370 unreachable "_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hc4f148022b2f004fE.exit.i.i": ; preds = %228 @@ -3138,7 +3144,9 @@ common.resume: ; preds = %"_ZN4core3ptr73drop %.val.i.i = load ptr, ptr %231, align 8, !alias.scope !520, !noalias !523, !nonnull !4, !noundef !4 %240 = add i64 %233, -1 %241 = getelementptr inbounds [0 x i64], ptr %.val.i.i, i64 0, i64 %240 + call void @llvm.assume(i1 true) [ "align"(ptr %241, i64 8) ] %242 = load i64, ptr %241, align 8, !noalias !526, !noundef !4 + call void @llvm.assume(i1 true) [ "align"(ptr %241, i64 8) ] br label %_ZN3csv11byte_record6Bounds3end17h4453fd335d968684E.exit8.i _ZN3csv11byte_record6Bounds3end17h4453fd335d968684E.exit8.i: ; preds = %239, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hc4f148022b2f004fE.exit.i.i" @@ -3162,7 +3170,7 @@ _ZN3csv11byte_record6Bounds3end17h4453fd335d968684E.exit8.i: ; preds = %239, %"_ 250: ; preds = %._crit_edge.i %251 = icmp ugt i64 %243, %.val1.i - br i1 %251, label %.invoke369, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h0ed213980287b77aE.exit.i" + br i1 %251, label %.invoke370, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h0ed213980287b77aE.exit.i" 252: ; preds = %._crit_edge.i invoke void @_ZN4core5slice5index22slice_index_order_fail17h0cf4df47d0fb97e4E(i64 noundef %..sroa.5.0.i2.i, i64 noundef %243, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7f594b1cc0dc9c97352e1e787ce274d2.1) #19 diff --git a/bench/influxdb-rs/optimized/59k85oi3tgixgpod.ll b/bench/influxdb-rs/optimized/59k85oi3tgixgpod.ll index 5fd97afea29..7be9708a9b0 100644 --- a/bench/influxdb-rs/optimized/59k85oi3tgixgpod.ll +++ b/bench/influxdb-rs/optimized/59k85oi3tgixgpod.ll @@ -45,6 +45,7 @@ define hidden void @"_ZN17crossbeam_channel7counter15Sender$LT$C$GT$7release17h0 br i1 %5, label %6, label %23 6: ; preds = %1 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 128) ] %7 = getelementptr inbounds nuw i8, ptr %2, i64 400 %8 = load i64, ptr %7, align 16, !noundef !4 %9 = getelementptr inbounds nuw i8, ptr %2, i64 128 @@ -94,6 +95,7 @@ define hidden void @"_ZN17crossbeam_channel7counter15Sender$LT$C$GT$7release17h1 br i1 %5, label %6, label %15 6: ; preds = %1 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] %7 = tail call noundef zeroext i1 @"_ZN17crossbeam_channel7flavors4zero16Channel$LT$T$GT$10disconnect17h4a9a70e1272ba287E"(ptr noundef nonnull align 8 %2) %8 = getelementptr inbounds nuw i8, ptr %2, i64 128 %9 = atomicrmw xchg ptr %8, i8 1 acq_rel, align 1 @@ -128,6 +130,7 @@ define hidden void @"_ZN17crossbeam_channel7counter15Sender$LT$C$GT$7release17h2 br i1 %5, label %6, label %26 6: ; preds = %1 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 128) ] %7 = getelementptr inbounds nuw i8, ptr %2, i64 128 %8 = atomicrmw or ptr %7, i64 1 seq_cst, align 8 %9 = and i64 %8, 1 @@ -194,6 +197,7 @@ define hidden void @"_ZN17crossbeam_channel7counter15Sender$LT$C$GT$7release17h2 br i1 %5, label %6, label %15 6: ; preds = %1 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] %7 = tail call noundef zeroext i1 @"_ZN17crossbeam_channel7flavors4zero16Channel$LT$T$GT$10disconnect17h6f4d9783333a324cE"(ptr noundef nonnull align 8 %2) %8 = getelementptr inbounds nuw i8, ptr %2, i64 128 %9 = atomicrmw xchg ptr %8, i8 1 acq_rel, align 1 @@ -228,6 +232,7 @@ define hidden void @"_ZN17crossbeam_channel7counter15Sender$LT$C$GT$7release17h6 br i1 %5, label %6, label %23 6: ; preds = %1 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 128) ] %7 = getelementptr inbounds nuw i8, ptr %2, i64 400 %8 = load i64, ptr %7, align 16, !noundef !4 %9 = getelementptr inbounds nuw i8, ptr %2, i64 128 @@ -277,6 +282,7 @@ define hidden void @"_ZN17crossbeam_channel7counter15Sender$LT$C$GT$7release17h8 br i1 %5, label %6, label %26 6: ; preds = %1 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 128) ] %7 = getelementptr inbounds nuw i8, ptr %2, i64 128 %8 = atomicrmw or ptr %7, i64 1 seq_cst, align 8 %9 = and i64 %8, 1 @@ -343,6 +349,7 @@ define hidden void @"_ZN17crossbeam_channel7counter17Receiver$LT$C$GT$7release17 br i1 %5, label %6, label %25 6: ; preds = %1 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 128) ] %7 = getelementptr inbounds nuw i8, ptr %2, i64 128 %8 = atomicrmw or ptr %7, i64 1 seq_cst, align 8 %9 = and i64 %8, 1 @@ -408,6 +415,7 @@ define hidden void @"_ZN17crossbeam_channel7counter17Receiver$LT$C$GT$7release17 br i1 %5, label %6, label %23 6: ; preds = %1 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 128) ] %7 = getelementptr inbounds nuw i8, ptr %2, i64 400 %8 = load i64, ptr %7, align 16, !noundef !4 %9 = getelementptr inbounds nuw i8, ptr %2, i64 128 @@ -457,6 +465,7 @@ define hidden void @"_ZN17crossbeam_channel7counter17Receiver$LT$C$GT$7release17 br i1 %5, label %6, label %23 6: ; preds = %1 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 128) ] %7 = getelementptr inbounds nuw i8, ptr %2, i64 400 %8 = load i64, ptr %7, align 16, !noundef !4 %9 = getelementptr inbounds nuw i8, ptr %2, i64 128 @@ -506,6 +515,7 @@ define hidden void @"_ZN17crossbeam_channel7counter17Receiver$LT$C$GT$7release17 br i1 %5, label %6, label %15 6: ; preds = %1 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] %7 = tail call noundef zeroext i1 @"_ZN17crossbeam_channel7flavors4zero16Channel$LT$T$GT$10disconnect17h4a9a70e1272ba287E"(ptr noundef nonnull align 8 %2) %8 = getelementptr inbounds nuw i8, ptr %2, i64 128 %9 = atomicrmw xchg ptr %8, i8 1 acq_rel, align 1 @@ -540,6 +550,7 @@ define hidden void @"_ZN17crossbeam_channel7counter17Receiver$LT$C$GT$7release17 br i1 %5, label %6, label %15 6: ; preds = %1 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] %7 = tail call noundef zeroext i1 @"_ZN17crossbeam_channel7flavors4zero16Channel$LT$T$GT$10disconnect17h6f4d9783333a324cE"(ptr noundef nonnull align 8 %2) %8 = getelementptr inbounds nuw i8, ptr %2, i64 128 %9 = atomicrmw xchg ptr %8, i8 1 acq_rel, align 1 @@ -574,6 +585,7 @@ define hidden void @"_ZN17crossbeam_channel7counter17Receiver$LT$C$GT$7release17 br i1 %5, label %6, label %25 6: ; preds = %1 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 128) ] %7 = getelementptr inbounds nuw i8, ptr %2, i64 128 %8 = atomicrmw or ptr %7, i64 1 seq_cst, align 8 %9 = and i64 %8, 1 @@ -1062,6 +1074,7 @@ define hidden noundef ptr @_ZN4core4sync6atomic11atomic_load17h5023207247967b8fE store ptr @anon.e208aac8e7bdb0bb4451e98d70003dfe.6, ptr %4, align 8 %9 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %9, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %10 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %10, align 8 %11 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -1080,6 +1093,7 @@ define hidden noundef ptr @_ZN4core4sync6atomic11atomic_load17h5023207247967b8fE store ptr @anon.e208aac8e7bdb0bb4451e98d70003dfe.10, ptr %3, align 8 %16 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %16, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %17 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %17, align 8 %18 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -1123,6 +1137,7 @@ define hidden noundef i64 @_ZN4core4sync6atomic11atomic_load17h98087698d4ec158fE store ptr @anon.e208aac8e7bdb0bb4451e98d70003dfe.6, ptr %4, align 8 %9 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %9, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %10 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %10, align 8 %11 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -1141,6 +1156,7 @@ define hidden noundef i64 @_ZN4core4sync6atomic11atomic_load17h98087698d4ec158fE store ptr @anon.e208aac8e7bdb0bb4451e98d70003dfe.10, ptr %3, align 8 %16 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %16, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %17 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %17, align 8 %18 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -5296,6 +5312,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h622 store ptr @anon.e208aac8e7bdb0bb4451e98d70003dfe.29, ptr %3, align 8 %7 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %7, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %8 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %8, align 8 %9 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -5358,6 +5375,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h97a store ptr @anon.e208aac8e7bdb0bb4451e98d70003dfe.29, ptr %3, align 8 %7 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %7, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %8 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %8, align 8 %9 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -6418,6 +6436,7 @@ define hidden noundef ptr @"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$9load_next1 store ptr @anon.e208aac8e7bdb0bb4451e98d70003dfe.6, ptr %4, align 8 %10 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %10, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %11 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %11, align 8 %12 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -6436,6 +6455,7 @@ define hidden noundef ptr @"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$9load_next1 store ptr @anon.e208aac8e7bdb0bb4451e98d70003dfe.10, ptr %3, align 8 %17 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %17, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %18 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %18, align 8 %19 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -6467,6 +6487,7 @@ define hidden { ptr, ptr } @_ZN5tokio4sync4mpsc7bounded7channel17hda52e15d47eab3 store ptr @anon.e208aac8e7bdb0bb4451e98d70003dfe.39.llvm.4074410953282169344, ptr %4, align 8 %6 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %6, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %7 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %7, align 8 %8 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -7396,6 +7417,7 @@ define hidden noundef nonnull align 8 dereferenceable(64) ptr @"_ZN9once_cell4ra 22: ; preds = %"_ZN9once_cell4race8once_box16OnceBox$LT$T$GT$11get_or_init28_$u7b$$u7b$closure$u7d$$u7d$17hd9a2896e7976b29bE.exit", %19, %1 %.0 = phi ptr [ %6, %1 ], [ %21, %19 ], [ %13, %"_ZN9once_cell4race8once_box16OnceBox$LT$T$GT$11get_or_init28_$u7b$$u7b$closure$u7d$$u7d$17hd9a2896e7976b29bE.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] %23 = icmp ne ptr %.0, null call void @llvm.assume(i1 %23) ret ptr %.0 @@ -7510,6 +7532,7 @@ common.resume: ; preds = %14, %43 44: ; preds = %"_ZN9once_cell4race8once_box16OnceBox$LT$T$GT$11get_or_init28_$u7b$$u7b$closure$u7d$$u7d$17h9fb1ca584a11e972E.exit", %"_ZN4core3ptr158drop_in_place$LT$alloc..boxed..Box$LT$alloc..boxed..Box$LT$dyn$u20$ahash..random_state..RandomSource$u2b$core..marker..Send$u2b$core..marker..Sync$GT$$GT$$GT$17ha5936d01acdee3ffE.exit", %1 %.0 = phi ptr [ %3, %1 ], [ %23, %"_ZN4core3ptr158drop_in_place$LT$alloc..boxed..Box$LT$alloc..boxed..Box$LT$dyn$u20$ahash..random_state..RandomSource$u2b$core..marker..Send$u2b$core..marker..Sync$GT$$GT$$GT$17ha5936d01acdee3ffE.exit" ], [ %11, %"_ZN9once_cell4race8once_box16OnceBox$LT$T$GT$11get_or_init28_$u7b$$u7b$closure$u7d$$u7d$17h9fb1ca584a11e972E.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] %45 = icmp ne ptr %.0, null tail call void @llvm.assume(i1 %45) ret ptr %.0 diff --git a/bench/jemalloc/optimized/jemalloc_cpp.ll b/bench/jemalloc/optimized/jemalloc_cpp.ll index b9bcb7a3b2f..fbf06e0c3c6 100644 --- a/bench/jemalloc/optimized/jemalloc_cpp.ll +++ b/bench/jemalloc/optimized/jemalloc_cpp.ll @@ -257,7 +257,7 @@ terminate.lpad.i: ; preds = %if.end.i, %if.then9 %2 = landingpad { ptr, i32 } catch ptr null %3 = extractvalue { ptr, i32 } %2, 0 - tail call void @__clang_call_terminate(ptr %3) #16 + tail call void @__clang_call_terminate(ptr %3) #15 unreachable if.end11.i: ; preds = %entry @@ -292,7 +292,7 @@ terminate.lpad.i55: ; preds = %if.end.i59, %if.the %8 = landingpad { ptr, i32 } catch ptr null %9 = extractvalue { ptr, i32 } %8, 0 - tail call void @__clang_call_terminate(ptr %9) #16 + tail call void @__clang_call_terminate(ptr %9) #15 unreachable if.end30.i: ; preds = %if.end11.i @@ -343,7 +343,7 @@ terminate.lpad.i63: ; preds = %if.end.i67, %if.end %18 = landingpad { ptr, i32 } catch ptr null %19 = extractvalue { ptr, i32 } %18, 0 - tail call void @__clang_call_terminate(ptr %19) #16 + tail call void @__clang_call_terminate(ptr %19) #15 unreachable _ZL16imalloc_fastpathmPFPvmE.exit.sink.split: ; preds = %if.then39.i, %if.then43.i @@ -383,7 +383,7 @@ terminate.lpad.i: ; preds = %if.end.i, %if.then9 %2 = landingpad { ptr, i32 } catch ptr null %3 = extractvalue { ptr, i32 } %2, 0 - tail call void @__clang_call_terminate(ptr %3) #16 + tail call void @__clang_call_terminate(ptr %3) #15 unreachable if.end11.i: ; preds = %entry @@ -418,7 +418,7 @@ terminate.lpad.i55: ; preds = %if.end.i59, %if.the %8 = landingpad { ptr, i32 } catch ptr null %9 = extractvalue { ptr, i32 } %8, 0 - tail call void @__clang_call_terminate(ptr %9) #16 + tail call void @__clang_call_terminate(ptr %9) #15 unreachable if.end30.i: ; preds = %if.end11.i @@ -469,7 +469,7 @@ terminate.lpad.i63: ; preds = %if.end.i67, %if.end %18 = landingpad { ptr, i32 } catch ptr null %19 = extractvalue { ptr, i32 } %18, 0 - tail call void @__clang_call_terminate(ptr %19) #16 + tail call void @__clang_call_terminate(ptr %19) #15 unreachable _ZL16imalloc_fastpathmPFPvmE.exit.sink.split: ; preds = %if.then39.i, %if.then43.i @@ -489,8 +489,7 @@ _ZL16imalloc_fastpathmPFPvmE.exit: ; preds = %_ZL16imalloc_fastpa ; Function Attrs: mustprogress nobuiltin allocsize(0) uwtable define dso_local noalias noundef nonnull ptr @_ZnwmSt11align_val_t(i64 noundef %size, i64 noundef %alignment) local_unnamed_addr #0 { entry: - %call.i = tail call noalias ptr @aligned_alloc(i64 noundef %alignment, i64 noundef %size) #17 - call void @llvm.assume(i1 true) [ "align"(ptr %call.i, i64 %alignment) ] + %call.i = tail call noalias ptr @aligned_alloc(i64 noundef %alignment, i64 noundef %size) #16 %cmp.i.not = icmp eq ptr %call.i, null br i1 %cmp.i.not, label %if.end.i, label %_ZL14alignedNewImplILb0EEPvmSt11align_val_t.exit @@ -506,8 +505,7 @@ _ZL14alignedNewImplILb0EEPvmSt11align_val_t.exit: ; preds = %entry, %if.end.i ; Function Attrs: mustprogress nobuiltin allocsize(0) uwtable define dso_local noalias noundef nonnull ptr @_ZnamSt11align_val_t(i64 noundef %size, i64 noundef %alignment) local_unnamed_addr #0 { entry: - %call.i = tail call noalias ptr @aligned_alloc(i64 noundef %alignment, i64 noundef %size) #17 - call void @llvm.assume(i1 true) [ "align"(ptr %call.i, i64 %alignment) ] + %call.i = tail call noalias ptr @aligned_alloc(i64 noundef %alignment, i64 noundef %size) #16 %cmp.i.not = icmp eq ptr %call.i, null br i1 %cmp.i.not, label %if.end.i, label %_ZL14alignedNewImplILb0EEPvmSt11align_val_t.exit @@ -523,8 +521,7 @@ _ZL14alignedNewImplILb0EEPvmSt11align_val_t.exit: ; preds = %entry, %if.end.i ; Function Attrs: mustprogress nobuiltin nounwind allocsize(0) uwtable define dso_local noalias noundef ptr @_ZnwmSt11align_val_tRKSt9nothrow_t(i64 noundef %size, i64 noundef %alignment, ptr noundef nonnull align 1 dereferenceable(1) %0) local_unnamed_addr #1 personality ptr @__gxx_personality_v0 { entry: - %call.i = tail call noalias ptr @aligned_alloc(i64 noundef %alignment, i64 noundef %size) #17 - call void @llvm.assume(i1 true) [ "align"(ptr %call.i, i64 %alignment) ] + %call.i = tail call noalias ptr @aligned_alloc(i64 noundef %alignment, i64 noundef %size) #16 %cmp.i.not = icmp eq ptr %call.i, null br i1 %cmp.i.not, label %if.end.i, label %_ZL14alignedNewImplILb1EEPvmSt11align_val_t.exit @@ -536,7 +533,7 @@ terminate.lpad.i: ; preds = %if.end.i %1 = landingpad { ptr, i32 } catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 - tail call void @__clang_call_terminate(ptr %2) #16 + tail call void @__clang_call_terminate(ptr %2) #15 unreachable _ZL14alignedNewImplILb1EEPvmSt11align_val_t.exit: ; preds = %if.end.i, %entry @@ -547,8 +544,7 @@ _ZL14alignedNewImplILb1EEPvmSt11align_val_t.exit: ; preds = %if.end.i, %entry ; Function Attrs: mustprogress nobuiltin nounwind allocsize(0) uwtable define dso_local noalias noundef ptr @_ZnamSt11align_val_tRKSt9nothrow_t(i64 noundef %size, i64 noundef %alignment, ptr noundef nonnull align 1 dereferenceable(1) %0) local_unnamed_addr #1 personality ptr @__gxx_personality_v0 { entry: - %call.i = tail call noalias ptr @aligned_alloc(i64 noundef %alignment, i64 noundef %size) #17 - call void @llvm.assume(i1 true) [ "align"(ptr %call.i, i64 %alignment) ] + %call.i = tail call noalias ptr @aligned_alloc(i64 noundef %alignment, i64 noundef %size) #16 %cmp.i.not = icmp eq ptr %call.i, null br i1 %cmp.i.not, label %if.end.i, label %_ZL14alignedNewImplILb1EEPvmSt11align_val_t.exit @@ -560,7 +556,7 @@ terminate.lpad.i: ; preds = %if.end.i %1 = landingpad { ptr, i32 } catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 - tail call void @__clang_call_terminate(ptr %2) #16 + tail call void @__clang_call_terminate(ptr %2) #15 unreachable _ZL14alignedNewImplILb1EEPvmSt11align_val_t.exit: ; preds = %if.end.i, %entry @@ -630,7 +626,7 @@ terminate.lpad.i: ; preds = %if.then.i %13 = landingpad { ptr, i32 } catch ptr null %14 = extractvalue { ptr, i32 } %13, 0 - tail call void @__clang_call_terminate(ptr %14) #16 + tail call void @__clang_call_terminate(ptr %14) #15 unreachable _ZL12je_free_implPv.exit: ; preds = %if.end.i50, %if.then.i @@ -699,7 +695,7 @@ terminate.lpad.i: ; preds = %if.then.i %13 = landingpad { ptr, i32 } catch ptr null %14 = extractvalue { ptr, i32 } %13, 0 - tail call void @__clang_call_terminate(ptr %14) #16 + tail call void @__clang_call_terminate(ptr %14) #15 unreachable _ZL12je_free_implPv.exit: ; preds = %if.end.i50, %if.then.i @@ -768,7 +764,7 @@ terminate.lpad.i: ; preds = %if.then.i %14 = landingpad { ptr, i32 } catch ptr null %15 = extractvalue { ptr, i32 } %14, 0 - tail call void @__clang_call_terminate(ptr %15) #16 + tail call void @__clang_call_terminate(ptr %15) #15 unreachable _ZL12je_free_implPv.exit: ; preds = %if.end.i50, %if.then.i @@ -837,7 +833,7 @@ terminate.lpad.i: ; preds = %if.then.i %14 = landingpad { ptr, i32 } catch ptr null %15 = extractvalue { ptr, i32 } %14, 0 - tail call void @__clang_call_terminate(ptr %15) #16 + tail call void @__clang_call_terminate(ptr %15) #15 unreachable _ZL12je_free_implPv.exit: ; preds = %if.end.i50, %if.then.i @@ -906,7 +902,7 @@ terminate.lpad.i: ; preds = %if.then.i %14 = landingpad { ptr, i32 } catch ptr null %15 = extractvalue { ptr, i32 } %14, 0 - tail call void @__clang_call_terminate(ptr %15) #16 + tail call void @__clang_call_terminate(ptr %15) #15 unreachable _ZL12je_free_implPv.exit: ; preds = %if.end.i50, %if.then.i @@ -975,7 +971,7 @@ terminate.lpad.i: ; preds = %if.then.i %14 = landingpad { ptr, i32 } catch ptr null %15 = extractvalue { ptr, i32 } %14, 0 - tail call void @__clang_call_terminate(ptr %15) #16 + tail call void @__clang_call_terminate(ptr %15) #15 unreachable _ZL12je_free_implPv.exit: ; preds = %if.end.i50, %if.then.i @@ -1044,7 +1040,7 @@ terminate.lpad.i: ; preds = %if.then.i %15 = landingpad { ptr, i32 } catch ptr null %16 = extractvalue { ptr, i32 } %15, 0 - tail call void @__clang_call_terminate(ptr %16) #16 + tail call void @__clang_call_terminate(ptr %16) #15 unreachable _ZL12je_free_implPv.exit: ; preds = %if.end.i51, %if.then.i @@ -1113,7 +1109,7 @@ terminate.lpad.i: ; preds = %if.then.i %15 = landingpad { ptr, i32 } catch ptr null %16 = extractvalue { ptr, i32 } %15, 0 - tail call void @__clang_call_terminate(ptr %16) #16 + tail call void @__clang_call_terminate(ptr %16) #15 unreachable _ZL12je_free_implPv.exit: ; preds = %if.end.i51, %if.then.i @@ -1197,7 +1193,7 @@ terminate.lpad.i: ; preds = %if.then.i4 %10 = landingpad { ptr, i32 } catch ptr null %11 = extractvalue { ptr, i32 } %10, 0 - tail call void @__clang_call_terminate(ptr %11) #16 + tail call void @__clang_call_terminate(ptr %11) #15 unreachable _ZL22alignedSizedDeleteImplPvmSt11align_val_t.exit: ; preds = %if.end.i48.i, %if.then.i4, %entry @@ -1281,7 +1277,7 @@ terminate.lpad.i: ; preds = %if.then.i4 %10 = landingpad { ptr, i32 } catch ptr null %11 = extractvalue { ptr, i32 } %10, 0 - tail call void @__clang_call_terminate(ptr %11) #16 + tail call void @__clang_call_terminate(ptr %11) #15 unreachable _ZL22alignedSizedDeleteImplPvmSt11align_val_t.exit: ; preds = %if.end.i48.i, %if.then.i4, %entry @@ -1292,8 +1288,8 @@ declare i32 @__gxx_personality_v0(...) ; Function Attrs: noreturn nounwind uwtable define linkonce_odr hidden void @__clang_call_terminate(ptr noundef %0) local_unnamed_addr #4 comdat { - %2 = tail call ptr @__cxa_begin_catch(ptr %0) #18 - tail call void @_ZSt9terminatev() #16 + %2 = tail call ptr @__cxa_begin_catch(ptr %0) #17 + tail call void @_ZSt9terminatev() #15 unreachable } @@ -1325,18 +1321,18 @@ if.then: ; preds = %entry br label %return while.body: ; preds = %entry, %try.cont - %call1.i.i.i = tail call noundef i32 @pthread_mutex_lock(ptr noundef nonnull align 8 dereferenceable(40) @_ZZL9handleOOMmbE3mtx) #18 + %call1.i.i.i = tail call noundef i32 @pthread_mutex_lock(ptr noundef nonnull align 8 dereferenceable(40) @_ZZL9handleOOMmbE3mtx) #17 %tobool.not.i.i = icmp eq i32 %call1.i.i.i, 0 br i1 %tobool.not.i.i, label %_ZNSt10lock_guardISt5mutexEC2ERS0_.exit, label %if.then.i.i if.then.i.i: ; preds = %while.body - tail call void @_ZSt20__throw_system_errori(i32 noundef %call1.i.i.i) #19 + tail call void @_ZSt20__throw_system_errori(i32 noundef %call1.i.i.i) #18 unreachable _ZNSt10lock_guardISt5mutexEC2ERS0_.exit: ; preds = %while.body - %call = tail call noundef ptr @_ZSt15set_new_handlerPFvvE(ptr noundef null) #18 - %call2 = tail call noundef ptr @_ZSt15set_new_handlerPFvvE(ptr noundef %call) #18 - %call1.i.i.i8 = tail call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) @_ZZL9handleOOMmbE3mtx) #18 + %call = tail call noundef ptr @_ZSt15set_new_handlerPFvvE(ptr noundef null) #17 + %call2 = tail call noundef ptr @_ZSt15set_new_handlerPFvvE(ptr noundef %call) #17 + %call1.i.i.i8 = tail call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) @_ZZL9handleOOMmbE3mtx) #17 %cmp3 = icmp eq ptr %call, null br i1 %cmp3, label %while.end, label %if.end5 @@ -1348,18 +1344,18 @@ lpad: ; preds = %if.end5 %1 = landingpad { ptr, i32 } catch ptr @_ZTISt9bad_alloc %2 = extractvalue { ptr, i32 } %1, 1 - %3 = tail call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9bad_alloc) #18 + %3 = tail call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9bad_alloc) #17 %matches = icmp eq i32 %2, %3 br i1 %matches, label %catch, label %eh.resume catch: ; preds = %lpad %4 = extractvalue { ptr, i32 } %1, 0 - %5 = tail call ptr @__cxa_begin_catch(ptr %4) #18 + %5 = tail call ptr @__cxa_begin_catch(ptr %4) #17 tail call void @__cxa_end_catch() br label %while.end try.cont: ; preds = %if.end5 - %call6 = tail call noalias ptr @malloc(i64 noundef %size) #20 + %call6 = tail call noalias ptr @malloc(i64 noundef %size) #19 %cmp1 = icmp eq ptr %call6, null br i1 %cmp1, label %while.body, label %return, !llvm.loop !29 @@ -1367,7 +1363,7 @@ while.end: ; preds = %_ZNSt10lock_guardIS br i1 %nothrow, label %return, label %if.then9 if.then9: ; preds = %while.end - tail call void @_ZSt17__throw_bad_allocv() #19 + tail call void @_ZSt17__throw_bad_allocv() #18 unreachable return: ; preds = %try.cont, %while.end, %if.then @@ -1403,14 +1399,11 @@ declare i32 @pthread_mutex_unlock(ptr noundef) local_unnamed_addr #9 ; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized,aligned") allocsize(1) memory(inaccessiblemem: readwrite) declare noalias noundef ptr @aligned_alloc(i64 allocalign noundef, i64 noundef) local_unnamed_addr #12 -; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #13 - ; Function Attrs: nofree nosync nounwind memory(none) -declare i32 @llvm.eh.typeid.for.p0(ptr) #14 +declare i32 @llvm.eh.typeid.for.p0(ptr) #13 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.cttz.i32(i32, i1 immarg) #15 +declare i32 @llvm.cttz.i32(i32, i1 immarg) #14 attributes #0 = { mustprogress nobuiltin allocsize(0) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nobuiltin nounwind allocsize(0) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -1425,14 +1418,13 @@ attributes #9 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stac attributes #10 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #11 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #12 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized,aligned") allocsize(1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #13 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #14 = { nofree nosync nounwind memory(none) } -attributes #15 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #16 = { noreturn nounwind } -attributes #17 = { nounwind allocsize(1) } -attributes #18 = { nounwind } -attributes #19 = { noreturn } -attributes #20 = { nounwind allocsize(0) } +attributes #13 = { nofree nosync nounwind memory(none) } +attributes #14 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #15 = { noreturn nounwind } +attributes #16 = { nounwind allocsize(1) } +attributes #17 = { nounwind } +attributes #18 = { noreturn } +attributes #19 = { nounwind allocsize(0) } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/just-rs/optimized/52uhuxfcop8n85cu.ll b/bench/just-rs/optimized/52uhuxfcop8n85cu.ll index 7213e3bb466..f9de684aece 100644 --- a/bench/just-rs/optimized/52uhuxfcop8n85cu.ll +++ b/bench/just-rs/optimized/52uhuxfcop8n85cu.ll @@ -1132,6 +1132,7 @@ _ZN14regex_automata4util4pool5inner9THREAD_ID7__getit17he141448109b075e5E.exit.i 13: ; preds = %2, %.noexc %.0.i.i2.i = phi ptr [ %9, %.noexc ], [ getelementptr inbounds nuw (i8, ptr @_ZN14regex_automata4util4pool5inner9THREAD_ID7__getit5__KEY17hc564e09eac16813cE, i64 8), %2 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i.i2.i, i64 8) ] %14 = getelementptr inbounds nuw i8, ptr %0, i64 16 %15 = load i64, ptr %14, align 8, !noundef !4 %16 = icmp eq i64 %15, 0 @@ -1412,6 +1413,7 @@ define hidden void @"_ZN14regex_automata4util4pool5inner22PoolGuard$LT$T$C$F$GT$ 11: ; preds = %4 %12 = getelementptr inbounds nuw i8, ptr %0, i64 16 %13 = load ptr, ptr %12, align 8, !nonnull !4, !align !22, !noundef !4 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] tail call void @"_ZN14regex_automata4util4pool5inner17Pool$LT$T$C$F$GT$9put_value17h564825f30ee00db7E.llvm.1798434116971987782"(ptr noundef nonnull align 8 %13, ptr noalias noundef nonnull align 8 %5) br label %17 @@ -10682,6 +10684,7 @@ define hidden void @"_ZN4core3ptr373drop_in_place$LT$regex_automata..util..pool. 11: ; preds = %4 %12 = getelementptr inbounds nuw i8, ptr %0, i64 16 %13 = load ptr, ptr %12, align 8, !alias.scope !3845, !nonnull !4, !align !22, !noundef !4 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] invoke void @"_ZN14regex_automata4util4pool5inner17Pool$LT$T$C$F$GT$9put_value17h564825f30ee00db7E.llvm.1798434116971987782"(ptr noundef nonnull align 8 %13, ptr noalias noundef nonnull align 8 %5) to label %"_ZN4core3ptr116drop_in_place$LT$core..result..Result$LT$alloc..boxed..Box$LT$regex_automata..meta..regex..Cache$GT$$C$usize$GT$$GT$17h9368b1b5b535145fE.llvm.1798434116971987782.exit" unwind label %22 @@ -40070,6 +40073,7 @@ define hidden void @"_ZN99_$LT$regex_automata..util..pool..inner..PoolGuard$LT$T 11: ; preds = %4 %12 = getelementptr inbounds nuw i8, ptr %0, i64 16 %13 = load ptr, ptr %12, align 8, !alias.scope !15719, !nonnull !4, !align !22, !noundef !4 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] tail call void @"_ZN14regex_automata4util4pool5inner17Pool$LT$T$C$F$GT$9put_value17h564825f30ee00db7E.llvm.1798434116971987782"(ptr noundef nonnull align 8 %13, ptr noalias noundef nonnull align 8 %5), !noalias !15719 br label %"_ZN14regex_automata4util4pool5inner22PoolGuard$LT$T$C$F$GT$7put_imp17h5fe384b21886484dE.llvm.1798434116971987782.exit" diff --git a/bench/log-rs/optimized/2fembjqwp89ywpt5.ll b/bench/log-rs/optimized/2fembjqwp89ywpt5.ll index b2d9cf2236e..3ddac4557eb 100644 --- a/bench/log-rs/optimized/2fembjqwp89ywpt5.ll +++ b/bench/log-rs/optimized/2fembjqwp89ywpt5.ll @@ -58,13 +58,14 @@ define hidden noundef i64 @_ZN4core4sync6atomic11atomic_load17h317b95d2c790a928E store ptr @anon.da3fca9e6d1d8035af543c408d9d567e.7, ptr %4, align 8 %9 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %9, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %10 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %10, align 8 %11 = getelementptr inbounds nuw i8, ptr %4, i64 16 store ptr @_ZN3log6logger3NOP17he6d7cdcfa0245171E.llvm.778753998846166598, ptr %11, align 8 %12 = getelementptr inbounds nuw i8, ptr %4, i64 24 store i64 0, ptr %12, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.da3fca9e6d1d8035af543c408d9d567e.9) #15 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.da3fca9e6d1d8035af543c408d9d567e.9) #16 unreachable 13: ; preds = %2 @@ -76,13 +77,14 @@ define hidden noundef i64 @_ZN4core4sync6atomic11atomic_load17h317b95d2c790a928E store ptr @anon.da3fca9e6d1d8035af543c408d9d567e.11, ptr %3, align 8 %16 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %16, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %17 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %17, align 8 %18 = getelementptr inbounds nuw i8, ptr %3, i64 16 store ptr @_ZN3log6logger3NOP17he6d7cdcfa0245171E.llvm.778753998846166598, ptr %18, align 8 %19 = getelementptr inbounds nuw i8, ptr %3, i64 24 store i64 0, ptr %19, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.da3fca9e6d1d8035af543c408d9d567e.12) #15 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.da3fca9e6d1d8035af543c408d9d567e.12) #16 unreachable 20: ; preds = %2 @@ -106,6 +108,10 @@ define noundef range(i64 0, 6) i64 @"_ZN57_$LT$log..Level$u20$as$u20$core..str.. %8 = getelementptr inbounds i8, ptr %0, i64 %1 br label %9 +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17hedc9a746eb35aaffE.exit.thread": ; preds = %.loopexit.i + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] + br label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h19ce84a97ce69529E.exit" + 9: ; preds = %.loopexit.i, %.lr.ph.i %.014.i = phi i64 [ 0, %.lr.ph.i ], [ %31, %.loopexit.i ] %.idx = phi i64 [ 0, %.lr.ph.i ], [ %.add, %.loopexit.i ] @@ -165,15 +171,15 @@ define noundef range(i64 0, 6) i64 @"_ZN57_$LT$log..Level$u20$as$u20$core..str.. .loopexit.i: ; preds = %21, %9 %31 = add nuw nsw i64 %.014.i, 1 %32 = icmp eq i64 %.add, 96 - br i1 %32, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h19ce84a97ce69529E.exit", label %9 + br i1 %32, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17hedc9a746eb35aaffE.exit.thread", label %9 "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17hedc9a746eb35aaffE.exit": ; preds = %19 %33 = icmp samesign ult i64 %.014.i, 6 call void @llvm.assume(i1 %33) br label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h19ce84a97ce69529E.exit" -"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h19ce84a97ce69529E.exit": ; preds = %.loopexit.i, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17hedc9a746eb35aaffE.exit" - %.0.i = phi i64 [ %.014.i, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17hedc9a746eb35aaffE.exit" ], [ 0, %.loopexit.i ] +"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h19ce84a97ce69529E.exit": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17hedc9a746eb35aaffE.exit", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17hedc9a746eb35aaffE.exit.thread" + %.0.i = phi i64 [ 0, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17hedc9a746eb35aaffE.exit.thread" ], [ %.014.i, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17hedc9a746eb35aaffE.exit" ] ret i64 %.0.i } @@ -227,6 +233,10 @@ define noundef range(i64 0, 7) i64 @"_ZN63_$LT$log..LevelFilter$u20$as$u20$core. %8 = getelementptr inbounds i8, ptr %0, i64 %1 br label %9 +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17h45c01db3aff8e53eE.exit.thread": ; preds = %.loopexit.i + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] + br label %_ZN3log11LevelFilter10from_usize17he24ba9de421af765E.exit.thread + 9: ; preds = %.loopexit.i, %.lr.ph.i %.014.i = phi i64 [ 0, %.lr.ph.i ], [ %31, %.loopexit.i ] %.idx = phi i64 [ 0, %.lr.ph.i ], [ %.add, %.loopexit.i ] @@ -291,10 +301,10 @@ define noundef range(i64 0, 7) i64 @"_ZN63_$LT$log..LevelFilter$u20$as$u20$core. switch.lookup: ; preds = %19 %33 = icmp samesign ult i64 %.014.i, 6 call void @llvm.assume(i1 %33) - br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17h45c01db3aff8e53eE.exit.thread" + br label %_ZN3log11LevelFilter10from_usize17he24ba9de421af765E.exit.thread -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17h45c01db3aff8e53eE.exit.thread": ; preds = %.loopexit.i, %switch.lookup - %.07 = phi i64 [ %.014.i, %switch.lookup ], [ 6, %.loopexit.i ] +_ZN3log11LevelFilter10from_usize17he24ba9de421af765E.exit.thread: ; preds = %switch.lookup, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17h45c01db3aff8e53eE.exit.thread" + %.07 = phi i64 [ 6, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17h45c01db3aff8e53eE.exit.thread" ], [ %.014.i, %switch.lookup ] ret i64 %.07 } @@ -334,8 +344,9 @@ define { i64, i64 } @_ZN3log11LevelFilter4iter17h40e26bb49b533d28E() unnamed_add ret { i64, i64 } { i64 0, i64 6 } } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write, inaccessiblemem: write) uwtable define void @"_ZN61_$LT$log..RecordBuilder$u20$as$u20$core..default..Default$GT$7default17h5ce100ac8a91d6ffE"(ptr noalias nocapture noundef writeonly sret({ { { i64, [2 x i64] }, { i64, [2 x i64] }, { i64, { ptr, i64 } }, { i32, i32 }, { { ptr, i64 }, { ptr, i64 }, { ptr, i64 } } } }) align 8 dereferenceable(128) initializes((0, 8), (24, 32), (48, 76), (80, 120)) %0) unnamed_addr #5 { + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] store i64 2, ptr %0, align 8 %.sroa.0.sroa.0.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 2, ptr %.sroa.0.sroa.0.sroa.5.0..sroa_idx, align 8 @@ -359,7 +370,7 @@ define void @"_ZN61_$LT$log..RecordBuilder$u20$as$u20$core..default..Default$GT$ } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable -define void @"_ZN63_$LT$log..MetadataBuilder$u20$as$u20$core..default..Default$GT$7default17h83ed7f6b1698377fE"(ptr noalias nocapture noundef writeonly sret({ { i64, { ptr, i64 } } }) align 8 dereferenceable(24) initializes((0, 24)) %0) unnamed_addr #5 { +define void @"_ZN63_$LT$log..MetadataBuilder$u20$as$u20$core..default..Default$GT$7default17h83ed7f6b1698377fE"(ptr noalias nocapture noundef writeonly sret({ { i64, { ptr, i64 } } }) align 8 dereferenceable(24) initializes((0, 24)) %0) unnamed_addr #6 { store i64 3, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr @_ZN3log6logger3NOP17he6d7cdcfa0245171E.llvm.778753998846166598, ptr %.sroa.4.0..sroa_idx, align 8 @@ -404,7 +415,7 @@ define noundef zeroext i1 @_ZN3log10set_logger17h4bbdc804813591e3E(ptr noundef n br label %_ZN3log16set_logger_inner17hc1ea35fa1eef8b95E.exit .lr.ph.i: ; preds = %.preheader.i, %.lr.ph.i - tail call void @llvm.x86.sse2.pause() #11, !noalias !64 + tail call void @llvm.x86.sse2.pause() #12, !noalias !64 %7 = tail call noundef i64 @_ZN4core4sync6atomic11atomic_load17h317b95d2c790a928E.llvm.9080322772985218481(ptr noundef nonnull @_ZN3log5STATE17ha079c5667def49c9E, i8 noundef 4), !noalias !64 %8 = icmp eq i64 %7, 1 br i1 %8, label %.lr.ph.i, label %_ZN3log16set_logger_inner17hc1ea35fa1eef8b95E.exit @@ -435,13 +446,14 @@ define noundef zeroext i1 @_ZN3log15set_logger_racy17h9db570fc5d439206E(ptr noun store ptr @anon.da3fca9e6d1d8035af543c408d9d567e.38, ptr %4, align 8, !alias.scope !67, !noalias !70 %8 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %8, align 8, !alias.scope !67, !noalias !70 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %9 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %9, align 8, !alias.scope !67, !noalias !70 %10 = getelementptr inbounds nuw i8, ptr %4, i64 16 store ptr %3, ptr %10, align 8, !alias.scope !67, !noalias !70 %11 = getelementptr inbounds nuw i8, ptr %4, i64 24 store i64 0, ptr %11, align 8, !alias.scope !67, !noalias !70 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.da3fca9e6d1d8035af543c408d9d567e.39) #15 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.da3fca9e6d1d8035af543c408d9d567e.39) #16 unreachable 12: ; preds = %2, %6 @@ -462,7 +474,7 @@ define noundef zeroext i1 @"_ZN59_$LT$log..ParseLevelError$u20$as$u20$core..fmt. } ; Function Attrs: mustprogress nofree norecurse nounwind nonlazybind willreturn memory(readwrite, argmem: none, inaccessiblemem: none) uwtable -define { ptr, ptr } @_ZN3log6logger17h40c9ea145472b379E() unnamed_addr #6 { +define { ptr, ptr } @_ZN3log6logger17h40c9ea145472b379E() unnamed_addr #7 { %1 = load atomic i64, ptr @_ZN3log5STATE17ha079c5667def49c9E acquire, align 8 %.not = icmp eq i64 %1, 2 %2 = load ptr, ptr @_ZN3log6LOGGER17h7df7beb1b06e255dE, align 8, !nonnull !7, !align !8 @@ -475,13 +487,13 @@ define { ptr, ptr } @_ZN3log6logger17h40c9ea145472b379E() unnamed_addr #6 { } ; Function Attrs: nonlazybind -declare i32 @rust_eh_personality(...) unnamed_addr #7 +declare i32 @rust_eh_personality(...) unnamed_addr #8 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias nocapture noundef align 8 dereferenceable(48), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #8 +declare void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias nocapture noundef align 8 dereferenceable(48), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #9 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #9 +declare void @llvm.assume(i1 noundef) #10 ; Function Attrs: nonlazybind uwtable declare noundef zeroext i1 @_ZN4core3fmt9Formatter3pad17h9aaaf10c548e542cE(ptr noalias noundef align 8 dereferenceable(64), ptr noalias noundef nonnull readonly align 1, i64 noundef) unnamed_addr #2 @@ -490,10 +502,10 @@ declare noundef zeroext i1 @_ZN4core3fmt9Formatter3pad17h9aaaf10c548e542cE(ptr n declare noundef zeroext i1 @_ZN4core3fmt9Formatter9write_str17hff61c25f281f3854E(ptr noalias noundef align 8 dereferenceable(64), ptr noalias noundef nonnull readonly align 1, i64 noundef) unnamed_addr #2 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #10 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #11 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #10 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #11 ; Function Attrs: inlinehint nonlazybind uwtable declare hidden { i64, i64 } @_ZN4core4sync6atomic23atomic_compare_exchange17hdc15a6c0033af591E.llvm.9080322772985218481(ptr noundef, i64 noundef, i64 noundef, i8 noundef, i8 noundef) unnamed_addr #1 @@ -505,7 +517,7 @@ declare hidden noundef i64 @_ZN4core4sync6atomic11atomic_load17h317b95d2c790a928 declare hidden void @_ZN4core4sync6atomic12atomic_store17h265a075e39f617f6E.llvm.9080322772985218481(ptr noundef, i64 noundef, i8 noundef) unnamed_addr #1 ; Function Attrs: nounwind -declare void @llvm.x86.sse2.pause() unnamed_addr #11 +declare void @llvm.x86.sse2.pause() unnamed_addr #12 ; Function Attrs: inlinehint nonlazybind uwtable declare hidden noundef i64 @_ZN4core3cmp6min_by17h2f92ac5e2f7fa9feE.llvm.13170277840895254323(i64 noundef, i64 noundef) unnamed_addr #1 @@ -514,30 +526,31 @@ declare hidden noundef i64 @_ZN4core3cmp6min_by17h2f92ac5e2f7fa9feE.llvm.1317027 declare hidden void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h8215387aaa107bf7E.llvm.14916337830412686658"(ptr noalias nocapture noundef sret({ i64, { i64, i64 } }) align 8 dereferenceable(24), ptr noalias noundef readonly align 8 dereferenceable(16)) unnamed_addr #1 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #12 +declare void @llvm.experimental.noalias.scope.decl(metadata) #13 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #13 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #14 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #14 +declare i64 @llvm.umin.i64(i64, i64) #15 attributes #0 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #5 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #6 = { mustprogress nofree norecurse nounwind nonlazybind willreturn memory(readwrite, argmem: none, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #7 = { nonlazybind "target-cpu"="x86-64" } -attributes #8 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #9 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #10 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #11 = { nounwind } -attributes #12 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #13 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #14 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #15 = { noreturn } +attributes #5 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #6 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #7 = { mustprogress nofree norecurse nounwind nonlazybind willreturn memory(readwrite, argmem: none, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #8 = { nonlazybind "target-cpu"="x86-64" } +attributes #9 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #10 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #11 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #12 = { nounwind } +attributes #13 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #14 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #15 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #16 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/meilisearch-rs/optimized/58fku9bygcs6t7yq.ll b/bench/meilisearch-rs/optimized/58fku9bygcs6t7yq.ll index 099f6233234..5b708cb79ef 100644 --- a/bench/meilisearch-rs/optimized/58fku9bygcs6t7yq.ll +++ b/bench/meilisearch-rs/optimized/58fku9bygcs6t7yq.ll @@ -696,6 +696,7 @@ define hidden noundef zeroext i1 @"_ZN4core3ops8function6FnOnce40call_once$u7b$$ %3 = getelementptr i8, ptr %0, i64 8 %.val1 = load ptr, ptr %3, align 8 %4 = load ptr, ptr %.val, align 8, !noalias !176, !nonnull !15, !align !71, !noundef !15 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] store ptr null, ptr %.val, align 8, !noalias !176 %5 = getelementptr inbounds nuw i8, ptr %4, i64 80 %6 = load ptr, ptr %5, align 8, !noalias !179, !noundef !15 @@ -1174,7 +1175,7 @@ default.unreachable: ; preds = %2 tail call void @llvm.experimental.noalias.scope.decl(metadata !242), !noalias !245 tail call void @llvm.experimental.noalias.scope.decl(metadata !246), !noalias !245 %26 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %27 = load ptr, ptr %26, align 8, !alias.scope !248, !noalias !249, !nonnull !15, !noundef !15 + %27 = load ptr, ptr %26, align 8, !alias.scope !248, !noalias !249, !nonnull !15, !align !71, !noundef !15 %28 = getelementptr inbounds nuw i8, ptr %1, i64 16 %29 = load i64, ptr %28, align 8, !alias.scope !248, !noalias !249, !noundef !15 %30 = getelementptr inbounds nuw i8, ptr %1, i64 24 @@ -2640,6 +2641,7 @@ define hidden noundef zeroext i1 @"_ZN9once_cell3imp17OnceCell$LT$T$GT$10initial %.sroa.5 = alloca [64 x i8], align 8 %3 = load ptr, ptr %0, align 8, !nonnull !15, !align !71, !noundef !15 %4 = load ptr, ptr %3, align 8, !nonnull !15, !align !71, !noundef !15 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] store ptr null, ptr %3, align 8 %5 = getelementptr inbounds nuw i8, ptr %4, i64 80 %6 = load ptr, ptr %5, align 8, !noalias !472, !noundef !15 diff --git a/bench/mimalloc/optimized/alloc-aligned.c.ll b/bench/mimalloc/optimized/alloc-aligned.c.ll index 35a1052223d..9d8907cfe32 100644 --- a/bench/mimalloc/optimized/alloc-aligned.c.ll +++ b/bench/mimalloc/optimized/alloc-aligned.c.ll @@ -11,7 +11,7 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: nounwind uwtable define noalias ptr @mi_heap_malloc_aligned_at(ptr noundef %heap, i64 noundef %size, i64 noundef %alignment, i64 noundef %offset) local_unnamed_addr #0 { entry: - %call = tail call fastcc ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %heap, i64 noundef %size, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext false) #7 + %call = tail call fastcc ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %heap, i64 noundef %size, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext false) #6 ret ptr %call } @@ -52,7 +52,7 @@ if.then23: ; preds = %if.end12 br i1 %5, label %if.then42, label %if.end50 if.then42: ; preds = %if.then23 - %call44 = tail call ptr @_mi_page_malloc(ptr noundef nonnull %heap, ptr noundef nonnull %2, i64 noundef %size, i1 noundef zeroext %zero) #8 + %call44 = tail call ptr @_mi_page_malloc(ptr noundef nonnull %heap, ptr noundef nonnull %2, i64 noundef %size, i1 noundef zeroext %zero) #7 br label %return if.end50: ; preds = %if.end12, %if.then23 @@ -68,7 +68,7 @@ land.lhs.true.i: ; preds = %if.end50 br i1 %or.cond36.i, label %if.then.i, label %if.end.i if.then.i: ; preds = %land.lhs.true.i - %call.i = tail call ptr @_mi_heap_malloc_zero(ptr noundef %heap, i64 noundef range(i64 0, -9223372036854775808) %size, i1 noundef zeroext %zero) #8 + %call.i = tail call ptr @_mi_heap_malloc_zero(ptr noundef %heap, i64 noundef range(i64 0, -9223372036854775808) %size, i1 noundef zeroext %zero) #7 br label %return if.end.i: ; preds = %land.lhs.true.i @@ -81,13 +81,13 @@ if.end.thread.i: ; preds = %if.end50 if.end20.i: ; preds = %if.end.i %cond.i = tail call i64 @llvm.umax.i64(i64 range(i64 0, -9223372036854775808) %size, i64 1025) - %call23.i = tail call ptr @_mi_heap_malloc_zero_ex(ptr noundef %heap, i64 noundef %cond.i, i1 noundef zeroext false, i64 noundef %alignment) #8 + %call23.i = tail call ptr @_mi_heap_malloc_zero_ex(ptr noundef %heap, i64 noundef %cond.i, i1 noundef zeroext false, i64 noundef %alignment) #7 %cmp24.i = icmp eq ptr %call23.i, null br i1 %cmp24.i, label %return, label %if.end36.i if.else.i: ; preds = %if.end.thread.i, %if.end.i %sub29.i = add nuw i64 %sub, %size - %call31.i = tail call ptr @_mi_heap_malloc_zero(ptr noundef %heap, i64 noundef %sub29.i, i1 noundef zeroext %zero) #8 + %call31.i = tail call ptr @_mi_heap_malloc_zero(ptr noundef %heap, i64 noundef %sub29.i, i1 noundef zeroext %zero) #7 %cmp32.i = icmp eq ptr %call31.i, null br i1 %cmp32.i, label %return, label %if.end36.i @@ -123,7 +123,7 @@ if.then49.i: ; preds = %if.end36.i %bf.set.i.i = or i8 %bf.load.i.i, 2 store i8 %bf.set.i.i, ptr %flags.i.i, align 2 %add51.i = add i64 %cond45.i, %size - tail call void @_mi_padding_shrink(ptr noundef nonnull %add.ptr.i.i.i.i, ptr noundef nonnull %p6.0.i, i64 noundef %add51.i) #8 + tail call void @_mi_padding_shrink(ptr noundef nonnull %add.ptr.i.i.i.i, ptr noundef nonnull %p6.0.i, i64 noundef %add51.i) #7 br label %if.end52.i if.end52.i: ; preds = %if.then49.i, %if.end36.i @@ -131,9 +131,8 @@ if.end52.i: ; preds = %if.then49.i, %if.en br i1 %brmerge.not.i, label %if.then57.i, label %return if.then57.i: ; preds = %if.end52.i - %call58.i = tail call i64 @mi_usable_size(ptr noundef %7) #8 - call void @llvm.assume(i1 true) [ "align"(ptr %7, i64 8) ] - tail call void @llvm.memset.p0.i64(ptr align 8 %7, i8 0, i64 %call58.i, i1 false) + %call58.i = tail call i64 @mi_usable_size(ptr noundef %7) #7 + tail call void @llvm.memset.p0.i64(ptr align 1 %7, i8 0, i64 %call58.i, i1 false) br label %return return: ; preds = %if.then57.i, %if.end52.i, %if.else.i, %if.end20.i, %if.end.thread.i, %if.then.i, %entry, %lor.rhs, %if.then42 @@ -158,11 +157,11 @@ if.end: ; preds = %entry br i1 %or.cond9, label %if.then15, label %if.else if.then15: ; preds = %if.end - %call16 = tail call noalias ptr @mi_heap_malloc_small(ptr noundef %heap, i64 noundef %size) #8 + %call16 = tail call noalias ptr @mi_heap_malloc_small(ptr noundef %heap, i64 noundef %size) #7 br label %return if.else: ; preds = %if.end - %call.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %heap, i64 noundef %size, i64 noundef %alignment, i64 noundef 0, i1 noundef zeroext false) #7 + %call.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %heap, i64 noundef %size, i64 noundef %alignment, i64 noundef 0, i1 noundef zeroext false) #6 br label %return return: ; preds = %entry, %if.else, %if.then15 @@ -175,14 +174,14 @@ declare noalias ptr @mi_heap_malloc_small(ptr noundef, i64 noundef) local_unname ; Function Attrs: nounwind uwtable define noalias ptr @mi_heap_zalloc_aligned_at(ptr noundef %heap, i64 noundef %size, i64 noundef %alignment, i64 noundef %offset) local_unnamed_addr #0 { entry: - %call = tail call fastcc ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %heap, i64 noundef %size, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext true) #7 + %call = tail call fastcc ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %heap, i64 noundef %size, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext true) #6 ret ptr %call } ; Function Attrs: nounwind uwtable define noalias ptr @mi_heap_zalloc_aligned(ptr noundef %heap, i64 noundef %size, i64 noundef %alignment) local_unnamed_addr #0 { entry: - %call.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %heap, i64 noundef %size, i64 noundef %alignment, i64 noundef 0, i1 noundef zeroext true) #7 + %call.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %heap, i64 noundef %size, i64 noundef %alignment, i64 noundef 0, i1 noundef zeroext true) #6 ret ptr %call.i } @@ -200,7 +199,7 @@ mi_count_size_overflow.exit: ; preds = %entry if.end: ; preds = %entry, %mi_count_size_overflow.exit %storemerge.i3 = phi i64 [ %2, %mi_count_size_overflow.exit ], [ %size, %entry ] - %call.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %heap, i64 noundef %storemerge.i3, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext true) #7 + %call.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %heap, i64 noundef %storemerge.i3, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext true) #6 br label %return return: ; preds = %mi_count_size_overflow.exit, %if.end @@ -222,7 +221,7 @@ mi_count_size_overflow.exit.i: ; preds = %entry if.end.i: ; preds = %mi_count_size_overflow.exit.i, %entry %storemerge.i3.i = phi i64 [ %2, %mi_count_size_overflow.exit.i ], [ %size, %entry ] - %call.i.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %heap, i64 noundef %storemerge.i3.i, i64 noundef %alignment, i64 noundef 0, i1 noundef zeroext true) #7 + %call.i.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %heap, i64 noundef %storemerge.i3.i, i64 noundef %alignment, i64 noundef 0, i1 noundef zeroext true) #6 br label %mi_heap_calloc_aligned_at.exit mi_heap_calloc_aligned_at.exit: ; preds = %mi_count_size_overflow.exit.i, %if.end.i @@ -235,7 +234,7 @@ define noalias ptr @mi_malloc_aligned_at(i64 noundef %size, i64 noundef %alignme entry: %0 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_mi_heap_default) %1 = load ptr, ptr %0, align 8 - %call.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %1, i64 noundef %size, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext false) #7 + %call.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %1, i64 noundef %size, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext false) #6 ret ptr %call.i } @@ -258,11 +257,11 @@ if.end.i: ; preds = %entry br i1 %or.cond9.i, label %if.then15.i, label %if.else.i if.then15.i: ; preds = %if.end.i - %call16.i = tail call noalias ptr @mi_heap_malloc_small(ptr noundef %1, i64 noundef %size) #8 + %call16.i = tail call noalias ptr @mi_heap_malloc_small(ptr noundef %1, i64 noundef %size) #7 br label %mi_heap_malloc_aligned.exit if.else.i: ; preds = %if.end.i - %call.i.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %1, i64 noundef %size, i64 noundef %alignment, i64 noundef 0, i1 noundef zeroext false) #7 + %call.i.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %1, i64 noundef %size, i64 noundef %alignment, i64 noundef 0, i1 noundef zeroext false) #6 br label %mi_heap_malloc_aligned.exit mi_heap_malloc_aligned.exit: ; preds = %entry, %if.then15.i, %if.else.i @@ -275,7 +274,7 @@ define noalias ptr @mi_zalloc_aligned_at(i64 noundef %size, i64 noundef %alignme entry: %0 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_mi_heap_default) %1 = load ptr, ptr %0, align 8 - %call.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %1, i64 noundef %size, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext true) #7 + %call.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %1, i64 noundef %size, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext true) #6 ret ptr %call.i } @@ -284,7 +283,7 @@ define noalias ptr @mi_zalloc_aligned(i64 noundef %size, i64 noundef %alignment) entry: %0 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_mi_heap_default) %1 = load ptr, ptr %0, align 8 - %call.i.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %1, i64 noundef %size, i64 noundef %alignment, i64 noundef 0, i1 noundef zeroext true) #7 + %call.i.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %1, i64 noundef %size, i64 noundef %alignment, i64 noundef 0, i1 noundef zeroext true) #6 ret ptr %call.i.i } @@ -304,7 +303,7 @@ mi_count_size_overflow.exit.i: ; preds = %entry if.end.i: ; preds = %mi_count_size_overflow.exit.i, %entry %storemerge.i3.i = phi i64 [ %4, %mi_count_size_overflow.exit.i ], [ %size, %entry ] - %call.i.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %1, i64 noundef %storemerge.i3.i, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext true) #7 + %call.i.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %1, i64 noundef %storemerge.i3.i, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext true) #6 br label %mi_heap_calloc_aligned_at.exit mi_heap_calloc_aligned_at.exit: ; preds = %mi_count_size_overflow.exit.i, %if.end.i @@ -328,7 +327,7 @@ mi_count_size_overflow.exit.i.i: ; preds = %entry if.end.i.i: ; preds = %mi_count_size_overflow.exit.i.i, %entry %storemerge.i3.i.i = phi i64 [ %4, %mi_count_size_overflow.exit.i.i ], [ %size, %entry ] - %call.i.i.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %1, i64 noundef %storemerge.i3.i.i, i64 noundef %alignment, i64 noundef 0, i1 noundef zeroext true) #7 + %call.i.i.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %1, i64 noundef %storemerge.i3.i.i, i64 noundef %alignment, i64 noundef 0, i1 noundef zeroext true) #6 br label %mi_heap_calloc_aligned.exit mi_heap_calloc_aligned.exit: ; preds = %mi_count_size_overflow.exit.i.i, %if.end.i.i @@ -339,7 +338,7 @@ mi_heap_calloc_aligned.exit: ; preds = %mi_count_size_overf ; Function Attrs: nounwind uwtable define ptr @mi_heap_realloc_aligned_at(ptr noundef %heap, ptr noundef %p, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %offset) local_unnamed_addr #0 { entry: - %call = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %heap, ptr noundef %p, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext false) #7 + %call = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %heap, ptr noundef %p, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext false) #6 ret ptr %call } @@ -350,7 +349,7 @@ entry: br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - %call = tail call ptr @_mi_heap_realloc_zero(ptr noundef %heap, ptr noundef %p, i64 noundef %newsize, i1 noundef zeroext %zero) #8 + %call = tail call ptr @_mi_heap_realloc_zero(ptr noundef %heap, ptr noundef %p, i64 noundef %newsize, i1 noundef zeroext %zero) #7 br label %return if.end: ; preds = %entry @@ -358,11 +357,11 @@ if.end: ; preds = %entry br i1 %cmp1, label %if.then2, label %if.end5 if.then2: ; preds = %if.end - %call4 = tail call fastcc ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %heap, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext %zero) #7 + %call4 = tail call fastcc ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %heap, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext %zero) #6 br label %return if.end5: ; preds = %if.end - %call6 = tail call i64 @mi_usable_size(ptr noundef nonnull %p) #8 + %call6 = tail call i64 @mi_usable_size(ptr noundef nonnull %p) #7 %cmp7.not = icmp ugt i64 %newsize, %call6 br i1 %cmp7.not, label %if.else, label %land.lhs.true @@ -380,7 +379,7 @@ land.lhs.true9: ; preds = %land.lhs.true br i1 %cmp10, label %return, label %if.else if.else: ; preds = %land.lhs.true9, %land.lhs.true, %if.end5 - %call.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %heap, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext false) #7 + %call.i = tail call fastcc noalias ptr @mi_heap_malloc_zero_aligned_at(ptr noundef %heap, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext false) #6 %cmp13.not = icmp eq ptr %call.i, null br i1 %cmp13.not, label %return, label %if.then14 @@ -397,10 +396,8 @@ if.then18: ; preds = %if.then14 if.end22: ; preds = %if.then18, %if.then14 %cond27 = tail call i64 @llvm.umin.i64(i64 %newsize, i64 %call6) - call void @llvm.assume(i1 true) [ "align"(ptr %call.i, i64 8) ] - call void @llvm.assume(i1 true) [ "align"(ptr %p, i64 8) ] - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %call.i, ptr nonnull readonly align 8 %p, i64 %cond27, i1 false) - tail call void @mi_free(ptr noundef nonnull %p) #8 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %call.i, ptr nonnull readonly align 1 %p, i64 %cond27, i1 false) + tail call void @mi_free(ptr noundef nonnull %p) #7 br label %return return: ; preds = %if.else, %if.end22, %land.lhs.true9, %if.then2, %if.then @@ -415,13 +412,13 @@ entry: br i1 %cmp.i, label %if.then.i, label %if.end.i if.then.i: ; preds = %entry - %call.i = tail call ptr @_mi_heap_realloc_zero(ptr noundef %heap, ptr noundef %p, i64 noundef %newsize, i1 noundef zeroext false) #8 + %call.i = tail call ptr @_mi_heap_realloc_zero(ptr noundef %heap, ptr noundef %p, i64 noundef %newsize, i1 noundef zeroext false) #7 br label %mi_heap_realloc_zero_aligned.exit if.end.i: ; preds = %entry %0 = ptrtoint ptr %p to i64 %rem.i = urem i64 %0, %alignment - %call2.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %heap, ptr noundef %p, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %rem.i, i1 noundef zeroext false) #7 + %call2.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %heap, ptr noundef %p, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %rem.i, i1 noundef zeroext false) #6 br label %mi_heap_realloc_zero_aligned.exit mi_heap_realloc_zero_aligned.exit: ; preds = %if.then.i, %if.end.i @@ -432,7 +429,7 @@ mi_heap_realloc_zero_aligned.exit: ; preds = %if.then.i, %if.end. ; Function Attrs: nounwind uwtable define ptr @mi_heap_rezalloc_aligned_at(ptr noundef %heap, ptr noundef %p, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %offset) local_unnamed_addr #0 { entry: - %call = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %heap, ptr noundef %p, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext true) #7 + %call = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %heap, ptr noundef %p, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext true) #6 ret ptr %call } @@ -443,13 +440,13 @@ entry: br i1 %cmp.i, label %if.then.i, label %if.end.i if.then.i: ; preds = %entry - %call.i = tail call ptr @_mi_heap_realloc_zero(ptr noundef %heap, ptr noundef %p, i64 noundef %newsize, i1 noundef zeroext true) #8 + %call.i = tail call ptr @_mi_heap_realloc_zero(ptr noundef %heap, ptr noundef %p, i64 noundef %newsize, i1 noundef zeroext true) #7 br label %mi_heap_realloc_zero_aligned.exit if.end.i: ; preds = %entry %0 = ptrtoint ptr %p to i64 %rem.i = urem i64 %0, %alignment - %call2.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %heap, ptr noundef %p, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %rem.i, i1 noundef zeroext true) #7 + %call2.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %heap, ptr noundef %p, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %rem.i, i1 noundef zeroext true) #6 br label %mi_heap_realloc_zero_aligned.exit mi_heap_realloc_zero_aligned.exit: ; preds = %if.then.i, %if.end.i @@ -471,7 +468,7 @@ mi_count_size_overflow.exit: ; preds = %entry if.end: ; preds = %entry, %mi_count_size_overflow.exit %storemerge.i3 = phi i64 [ %2, %mi_count_size_overflow.exit ], [ %size, %entry ] - %call.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %heap, ptr noundef %p, i64 noundef %storemerge.i3, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext true) #7 + %call.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %heap, ptr noundef %p, i64 noundef %storemerge.i3, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext true) #6 br label %return return: ; preds = %mi_count_size_overflow.exit, %if.end @@ -497,13 +494,13 @@ if.end: ; preds = %entry, %mi_count_si br i1 %cmp.i.i, label %if.then.i.i, label %if.end.i.i if.then.i.i: ; preds = %if.end - %call.i.i = tail call ptr @_mi_heap_realloc_zero(ptr noundef %heap, ptr noundef %p, i64 noundef %storemerge.i3, i1 noundef zeroext true) #8 + %call.i.i = tail call ptr @_mi_heap_realloc_zero(ptr noundef %heap, ptr noundef %p, i64 noundef %storemerge.i3, i1 noundef zeroext true) #7 br label %return if.end.i.i: ; preds = %if.end %3 = ptrtoint ptr %p to i64 %rem.i.i = urem i64 %3, %alignment - %call2.i.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %heap, ptr noundef %p, i64 noundef %storemerge.i3, i64 noundef %alignment, i64 noundef %rem.i.i, i1 noundef zeroext true) #7 + %call2.i.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %heap, ptr noundef %p, i64 noundef %storemerge.i3, i64 noundef %alignment, i64 noundef %rem.i.i, i1 noundef zeroext true) #6 br label %return return: ; preds = %if.end.i.i, %if.then.i.i, %mi_count_size_overflow.exit @@ -516,7 +513,7 @@ define ptr @mi_realloc_aligned_at(ptr noundef %p, i64 noundef %newsize, i64 noun entry: %0 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_mi_heap_default) %1 = load ptr, ptr %0, align 8 - %call.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %1, ptr noundef %p, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext false) #7 + %call.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %1, ptr noundef %p, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext false) #6 ret ptr %call.i } @@ -529,13 +526,13 @@ entry: br i1 %cmp.i.i, label %if.then.i.i, label %if.end.i.i if.then.i.i: ; preds = %entry - %call.i.i = tail call ptr @_mi_heap_realloc_zero(ptr noundef %1, ptr noundef %p, i64 noundef %newsize, i1 noundef zeroext false) #8 + %call.i.i = tail call ptr @_mi_heap_realloc_zero(ptr noundef %1, ptr noundef %p, i64 noundef %newsize, i1 noundef zeroext false) #7 br label %mi_heap_realloc_aligned.exit if.end.i.i: ; preds = %entry %2 = ptrtoint ptr %p to i64 %rem.i.i = urem i64 %2, %alignment - %call2.i.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %1, ptr noundef %p, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %rem.i.i, i1 noundef zeroext false) #7 + %call2.i.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %1, ptr noundef %p, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %rem.i.i, i1 noundef zeroext false) #6 br label %mi_heap_realloc_aligned.exit mi_heap_realloc_aligned.exit: ; preds = %if.then.i.i, %if.end.i.i @@ -548,7 +545,7 @@ define ptr @mi_rezalloc_aligned_at(ptr noundef %p, i64 noundef %newsize, i64 nou entry: %0 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_mi_heap_default) %1 = load ptr, ptr %0, align 8 - %call.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %1, ptr noundef %p, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext true) #7 + %call.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %1, ptr noundef %p, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext true) #6 ret ptr %call.i } @@ -561,13 +558,13 @@ entry: br i1 %cmp.i.i, label %if.then.i.i, label %if.end.i.i if.then.i.i: ; preds = %entry - %call.i.i = tail call ptr @_mi_heap_realloc_zero(ptr noundef %1, ptr noundef %p, i64 noundef %newsize, i1 noundef zeroext true) #8 + %call.i.i = tail call ptr @_mi_heap_realloc_zero(ptr noundef %1, ptr noundef %p, i64 noundef %newsize, i1 noundef zeroext true) #7 br label %mi_heap_rezalloc_aligned.exit if.end.i.i: ; preds = %entry %2 = ptrtoint ptr %p to i64 %rem.i.i = urem i64 %2, %alignment - %call2.i.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %1, ptr noundef %p, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %rem.i.i, i1 noundef zeroext true) #7 + %call2.i.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %1, ptr noundef %p, i64 noundef %newsize, i64 noundef %alignment, i64 noundef %rem.i.i, i1 noundef zeroext true) #6 br label %mi_heap_rezalloc_aligned.exit mi_heap_rezalloc_aligned.exit: ; preds = %if.then.i.i, %if.end.i.i @@ -591,7 +588,7 @@ mi_count_size_overflow.exit.i: ; preds = %entry if.end.i: ; preds = %mi_count_size_overflow.exit.i, %entry %storemerge.i3.i = phi i64 [ %4, %mi_count_size_overflow.exit.i ], [ %size, %entry ] - %call.i.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %1, ptr noundef %p, i64 noundef %storemerge.i3.i, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext true) #7 + %call.i.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %1, ptr noundef %p, i64 noundef %storemerge.i3.i, i64 noundef %alignment, i64 noundef %offset, i1 noundef zeroext true) #6 br label %mi_heap_recalloc_aligned_at.exit mi_heap_recalloc_aligned_at.exit: ; preds = %mi_count_size_overflow.exit.i, %if.end.i @@ -619,13 +616,13 @@ if.end.i: ; preds = %mi_count_size_overf br i1 %cmp.i.i.i, label %if.then.i.i.i, label %if.end.i.i.i if.then.i.i.i: ; preds = %if.end.i - %call.i.i.i = tail call ptr @_mi_heap_realloc_zero(ptr noundef %1, ptr noundef %p, i64 noundef %storemerge.i3.i, i1 noundef zeroext true) #8 + %call.i.i.i = tail call ptr @_mi_heap_realloc_zero(ptr noundef %1, ptr noundef %p, i64 noundef %storemerge.i3.i, i1 noundef zeroext true) #7 br label %mi_heap_recalloc_aligned.exit if.end.i.i.i: ; preds = %if.end.i %5 = ptrtoint ptr %p to i64 %rem.i.i.i = urem i64 %5, %alignment - %call2.i.i.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %1, ptr noundef %p, i64 noundef %storemerge.i3.i, i64 noundef %alignment, i64 noundef %rem.i.i.i, i1 noundef zeroext true) #7 + %call2.i.i.i = tail call fastcc ptr @mi_heap_realloc_zero_aligned_at(ptr noundef %1, ptr noundef %p, i64 noundef %storemerge.i3.i, i64 noundef %alignment, i64 noundef %rem.i.i.i, i1 noundef zeroext true) #6 br label %mi_heap_recalloc_aligned.exit mi_heap_recalloc_aligned.exit: ; preds = %mi_count_size_overflow.exit.i, %if.then.i.i.i, %if.end.i.i.i @@ -643,46 +640,42 @@ declare void @_mi_padding_shrink(ptr noundef, ptr noundef, i64 noundef) local_un declare i64 @mi_usable_size(ptr noundef) local_unnamed_addr #1 -; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #2 - ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #4 +declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #3 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) #4 +declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) #3 declare ptr @_mi_heap_realloc_zero(ptr noundef, ptr noundef, i64 noundef, i1 noundef zeroext) local_unnamed_addr #1 declare void @mi_free(ptr noundef) local_unnamed_addr #1 ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #5 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.ctpop.i64(i64) #6 +declare i64 @llvm.ctpop.i64(i64) #5 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #6 +declare i64 @llvm.umax.i64(i64, i64) #5 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.usub.sat.i64(i64, i64) #6 +declare i64 @llvm.usub.sat.i64(i64, i64) #5 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #6 +declare i64 @llvm.umin.i64(i64, i64) #5 attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-builtin-malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-builtin-malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #7 = { "no-builtin-malloc" } -attributes #8 = { nounwind "no-builtin-malloc" } +attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #6 = { "no-builtin-malloc" } +attributes #7 = { nounwind "no-builtin-malloc" } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/mimalloc/optimized/heap.c.ll b/bench/mimalloc/optimized/heap.c.ll index 647ec592fbf..e277c3f5413 100644 --- a/bench/mimalloc/optimized/heap.c.ll +++ b/bench/mimalloc/optimized/heap.c.ll @@ -21,7 +21,7 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: nounwind uwtable define hidden void @_mi_heap_collect_abandon(ptr noundef %heap) local_unnamed_addr #0 { entry: - tail call fastcc void @mi_heap_collect_ex(ptr noundef %heap, i32 noundef 2) #8 + tail call fastcc void @mi_heap_collect_ex(ptr noundef %heap, i32 noundef 2) #7 ret void } @@ -35,12 +35,12 @@ entry: if.end: ; preds = %entry %cmp1 = icmp ne i32 %collect, 0 - tail call void @_mi_deferred_free(ptr noundef nonnull %heap, i1 noundef zeroext %cmp1) #9 + tail call void @_mi_deferred_free(ptr noundef nonnull %heap, i1 noundef zeroext %cmp1) #8 %cmp2 = icmp eq i32 %collect, 1 br i1 %cmp2, label %land.lhs.true, label %if.end10 land.lhs.true: ; preds = %if.end - %call3 = tail call zeroext i1 @_mi_is_main_thread() #9 + %call3 = tail call zeroext i1 @_mi_is_main_thread() #8 br i1 %call3, label %land.lhs.true4, label %lor.lhs.false.i22 land.lhs.true4: ; preds = %land.lhs.true @@ -58,7 +58,7 @@ land.rhs: ; preds = %land.lhs.true4 if.then9: ; preds = %land.rhs %segments = getelementptr inbounds nuw i8, ptr %0, i64 32 - tail call void @_mi_abandoned_reclaim_all(ptr noundef nonnull %heap, ptr noundef nonnull %segments) #9 + tail call void @_mi_abandoned_reclaim_all(ptr noundef nonnull %heap, ptr noundef nonnull %segments) #8 br label %lor.lhs.false.i22 if.end10: ; preds = %if.end @@ -86,7 +86,7 @@ while.body.i: ; preds = %for.body.i, %while. %page.0.i51 = phi ptr [ %5, %while.body.i ], [ %4, %for.body.i ] %next4.i = getelementptr inbounds nuw i8, ptr %page.0.i51, i64 56 %5 = load ptr, ptr %next4.i, align 8 - tail call void @_mi_page_use_delayed_free(ptr noundef nonnull %page.0.i51, i32 noundef 3, i1 noundef zeroext false) #9 + tail call void @_mi_page_use_delayed_free(ptr noundef nonnull %page.0.i51, i32 noundef 3, i1 noundef zeroext false) #8 %cmp3.not.i = icmp eq ptr %5, null br i1 %cmp3.not.i, label %for.inc.i, label %while.body.i, !llvm.loop !4 @@ -97,8 +97,8 @@ for.inc.i: ; preds = %while.body.i, %for. lor.lhs.false.i22: ; preds = %for.inc.i, %land.rhs, %if.then9, %land.lhs.true, %land.lhs.true4, %if.end10, %lor.lhs.false.i %cmp1149 = phi i1 [ false, %if.end10 ], [ true, %lor.lhs.false.i ], [ false, %land.lhs.true4 ], [ false, %land.lhs.true ], [ false, %if.then9 ], [ false, %land.rhs ], [ true, %for.inc.i ] - tail call void @_mi_heap_delayed_free_all(ptr noundef nonnull %heap) #9 - tail call void @_mi_heap_collect_retired(ptr noundef nonnull %heap, i1 noundef zeroext %cmp1) #9 + tail call void @_mi_heap_delayed_free_all(ptr noundef nonnull %heap) #8 + tail call void @_mi_heap_collect_retired(ptr noundef nonnull %heap, i1 noundef zeroext %cmp1) #8 %page_count.i23 = getelementptr inbounds nuw i8, ptr %heap, i64 3024 %6 = load i64, ptr %page_count.i23, align 8 %cmp1.i24 = icmp eq i64 %6, 0 @@ -124,18 +124,18 @@ while.body.i33.us.us: ; preds = %for.body.i27.us, %m %page.0.i3153.us.us = phi ptr [ %8, %mi_heap_page_collect.exit.us.us ], [ %7, %for.body.i27.us ] %next4.i34.us.us = getelementptr inbounds nuw i8, ptr %page.0.i3153.us.us, i64 56 %8 = load ptr, ptr %next4.i34.us.us, align 8 - tail call void @_mi_page_free_collect(ptr noundef nonnull %page.0.i3153.us.us, i1 noundef zeroext %cmp1) #9 + tail call void @_mi_page_free_collect(ptr noundef nonnull %page.0.i3153.us.us, i1 noundef zeroext %cmp1) #8 %9 = getelementptr i8, ptr %page.0.i3153.us.us, i64 24 %page.val.i.us.us = load i32, ptr %9, align 8 %cmp.i.i.us.us = icmp eq i32 %page.val.i.us.us, 0 br i1 %cmp.i.i.us.us, label %if.then.i.us.us, label %if.else.i.us.us if.else.i.us.us: ; preds = %while.body.i33.us.us - tail call void @_mi_page_abandon(ptr noundef nonnull %page.0.i3153.us.us, ptr noundef nonnull %arrayidx.i29.us) #9 + tail call void @_mi_page_abandon(ptr noundef nonnull %page.0.i3153.us.us, ptr noundef nonnull %arrayidx.i29.us) #8 br label %mi_heap_page_collect.exit.us.us if.then.i.us.us: ; preds = %while.body.i33.us.us - tail call void @_mi_page_free(ptr noundef nonnull %page.0.i3153.us.us, ptr noundef nonnull %arrayidx.i29.us, i1 noundef zeroext %cmp1) #9 + tail call void @_mi_page_free(ptr noundef nonnull %page.0.i3153.us.us, ptr noundef nonnull %arrayidx.i29.us, i1 noundef zeroext %cmp1) #8 br label %mi_heap_page_collect.exit.us.us mi_heap_page_collect.exit.us.us: ; preds = %if.then.i.us.us, %if.else.i.us.us @@ -153,14 +153,14 @@ while.body.i33: ; preds = %for.body.i27, %mi_h %page.0.i3153 = phi ptr [ %11, %mi_heap_page_collect.exit ], [ %10, %for.body.i27 ] %next4.i34 = getelementptr inbounds nuw i8, ptr %page.0.i3153, i64 56 %11 = load ptr, ptr %next4.i34, align 8 - tail call void @_mi_page_free_collect(ptr noundef nonnull %page.0.i3153, i1 noundef zeroext %cmp1) #9 + tail call void @_mi_page_free_collect(ptr noundef nonnull %page.0.i3153, i1 noundef zeroext %cmp1) #8 %12 = getelementptr i8, ptr %page.0.i3153, i64 24 %page.val.i = load i32, ptr %12, align 8 %cmp.i.i = icmp eq i32 %page.val.i, 0 br i1 %cmp.i.i, label %if.then.i, label %mi_heap_page_collect.exit if.then.i: ; preds = %while.body.i33 - tail call void @_mi_page_free(ptr noundef nonnull %page.0.i3153, ptr noundef nonnull %arrayidx.i29, i1 noundef zeroext %cmp1) #9 + tail call void @_mi_page_free(ptr noundef nonnull %page.0.i3153, ptr noundef nonnull %arrayidx.i29, i1 noundef zeroext %cmp1) #8 br label %mi_heap_page_collect.exit mi_heap_page_collect.exit: ; preds = %while.body.i33, %if.then.i @@ -175,14 +175,14 @@ for.inc.i37: ; preds = %mi_heap_page_collec mi_heap_visit_pages.exit40: ; preds = %for.inc.i37, %for.inc.i37.us, %lor.lhs.false.i22 %13 = load ptr, ptr %heap, align 8 %segments19 = getelementptr inbounds nuw i8, ptr %13, i64 32 - tail call void @_mi_abandoned_collect(ptr noundef nonnull %heap, i1 noundef zeroext %cmp2, ptr noundef nonnull %segments19) #9 + tail call void @_mi_abandoned_collect(ptr noundef nonnull %heap, i1 noundef zeroext %cmp2, ptr noundef nonnull %segments19) #8 br i1 %cmp1, label %if.then21, label %if.end32 if.then21: ; preds = %mi_heap_visit_pages.exit40 %14 = load ptr, ptr %heap, align 8 %segments23 = getelementptr inbounds nuw i8, ptr %14, i64 32 - tail call void @_mi_segment_thread_collect(ptr noundef nonnull %segments23) #9 - %call27 = tail call zeroext i1 @_mi_is_main_thread() #9 + tail call void @_mi_segment_thread_collect(ptr noundef nonnull %segments23) #8 + %call27 = tail call zeroext i1 @_mi_is_main_thread() #8 br i1 %call27, label %land.lhs.true28, label %if.end32 land.lhs.true28: ; preds = %if.then21 @@ -193,10 +193,10 @@ land.lhs.true28: ; preds = %if.then21 br i1 %cmp.i42, label %if.then30, label %if.end32 if.then30: ; preds = %land.lhs.true28 - tail call void @_mi_thread_data_collect() #9 + tail call void @_mi_thread_data_collect() #8 %17 = load ptr, ptr %heap, align 8 %stats = getelementptr inbounds nuw i8, ptr %17, i64 960 - tail call void @_mi_arena_collect(i1 noundef zeroext true, ptr noundef nonnull %stats) #9 + tail call void @_mi_arena_collect(i1 noundef zeroext true, ptr noundef nonnull %stats) #8 br label %if.end32 if.end32: ; preds = %mi_heap_visit_pages.exit40, %entry, %if.then30, %land.lhs.true28, %if.then21 @@ -207,7 +207,7 @@ if.end32: ; preds = %mi_heap_visit_pages define void @mi_heap_collect(ptr noundef %heap, i1 noundef zeroext %force) local_unnamed_addr #0 { entry: %cond = zext i1 %force to i32 - tail call fastcc void @mi_heap_collect_ex(ptr noundef %heap, i32 noundef %cond) #8 + tail call fastcc void @mi_heap_collect_ex(ptr noundef %heap, i32 noundef %cond) #7 ret void } @@ -217,14 +217,14 @@ entry: %0 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_mi_heap_default) %1 = load ptr, ptr %0, align 8 %cond.i = zext i1 %force to i32 - tail call fastcc void @mi_heap_collect_ex(ptr noundef %1, i32 noundef %cond.i) #8 + tail call fastcc void @mi_heap_collect_ex(ptr noundef %1, i32 noundef %cond.i) #7 ret void } ; Function Attrs: nounwind uwtable define ptr @mi_heap_get_default() local_unnamed_addr #0 { entry: - tail call void @mi_thread_init() #9 + tail call void @mi_thread_init() #8 %0 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_mi_heap_default) %1 = load ptr, ptr %0, align 8 ret ptr %1 @@ -235,7 +235,7 @@ declare void @mi_thread_init() local_unnamed_addr #1 ; Function Attrs: nounwind uwtable define ptr @mi_heap_get_backing() local_unnamed_addr #0 { entry: - tail call void @mi_thread_init() #9 + tail call void @mi_thread_init() #8 %0 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_mi_heap_default) %1 = load ptr, ptr %0, align 8 %2 = load ptr, ptr %1, align 8 @@ -247,38 +247,36 @@ entry: ; Function Attrs: nounwind uwtable define ptr @mi_heap_new_in_arena(i32 noundef %arena_id) local_unnamed_addr #0 { entry: - tail call void @mi_thread_init() #9 + tail call void @mi_thread_init() #8 %0 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_mi_heap_default) %1 = load ptr, ptr %0, align 8 %2 = load ptr, ptr %1, align 8 %heap_backing.i = getelementptr inbounds nuw i8, ptr %2, i64 16 %3 = load ptr, ptr %heap_backing.i, align 8 - %call1 = tail call noalias ptr @mi_heap_malloc(ptr noundef %3, i64 noundef 3064) #9 + %call1 = tail call noalias ptr @mi_heap_malloc(ptr noundef %3, i64 noundef 3064) #8 %cmp = icmp eq ptr %call1, null br i1 %cmp, label %return, label %if.end if.end: ; preds = %entry - call void @llvm.assume(i1 true) [ "align"(ptr %call1, i64 8) ] - call void @llvm.assume(i1 true) [ "align"(ptr @_mi_heap_empty, i64 8) ] - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(3064) %call1, ptr noundef nonnull readonly align 8 dereferenceable(3064) @_mi_heap_empty, i64 range(i64 1800, 3065) 3064, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3064) %call1, ptr noundef nonnull readonly align 8 dereferenceable(3064) @_mi_heap_empty, i64 range(i64 1800, 3065) 3064, i1 false) %4 = load ptr, ptr %3, align 8 store ptr %4, ptr %call1, align 8 - %call3 = tail call i64 @_mi_thread_id() #9 + %call3 = tail call i64 @_mi_thread_id() #8 %thread_id = getelementptr inbounds nuw i8, ptr %call1, i64 2848 store i64 %call3, ptr %thread_id, align 8 %arena_id4 = getelementptr inbounds nuw i8, ptr %call1, i64 2856 store i32 %arena_id, ptr %arena_id4, align 8 %random = getelementptr inbounds nuw i8, ptr %3, i64 2888 %random5 = getelementptr inbounds nuw i8, ptr %call1, i64 2888 - tail call void @_mi_random_split(ptr noundef nonnull %random, ptr noundef nonnull %random5) #9 - %call.i = tail call i64 @_mi_random_next(ptr noundef nonnull %random5) #9 + tail call void @_mi_random_split(ptr noundef nonnull %random, ptr noundef nonnull %random5) #8 + %call.i = tail call i64 @_mi_random_next(ptr noundef nonnull %random5) #8 %or = or i64 %call.i, 1 %cookie = getelementptr inbounds nuw i8, ptr %call1, i64 2864 store i64 %or, ptr %cookie, align 8 - %call.i21 = tail call i64 @_mi_random_next(ptr noundef nonnull %random5) #9 + %call.i21 = tail call i64 @_mi_random_next(ptr noundef nonnull %random5) #8 %keys = getelementptr inbounds nuw i8, ptr %call1, i64 2872 store i64 %call.i21, ptr %keys, align 8 - %call.i23 = tail call i64 @_mi_random_next(ptr noundef nonnull %random5) #9 + %call.i23 = tail call i64 @_mi_random_next(ptr noundef nonnull %random5) #8 %arrayidx10 = getelementptr inbounds nuw i8, ptr %call1, i64 2880 store i64 %call.i23, ptr %arrayidx10, align 8 %no_reclaim = getelementptr inbounds nuw i8, ptr %call1, i64 3056 @@ -305,15 +303,15 @@ declare void @_mi_random_split(ptr noundef, ptr noundef) local_unnamed_addr #1 define hidden i64 @_mi_heap_random_next(ptr noundef %heap) local_unnamed_addr #0 { entry: %random = getelementptr inbounds nuw i8, ptr %heap, i64 2888 - %call = tail call i64 @_mi_random_next(ptr noundef nonnull %random) #9 + %call = tail call i64 @_mi_random_next(ptr noundef nonnull %random) #8 ret i64 %call } ; Function Attrs: nounwind uwtable define ptr @mi_heap_new() local_unnamed_addr #0 { entry: - %call = tail call i32 @_mi_arena_id_none() #9 - %call1 = tail call ptr @mi_heap_new_in_arena(i32 noundef %call) #8 + %call = tail call i32 @_mi_arena_id_none() #8 + %call1 = tail call ptr @mi_heap_new_in_arena(i32 noundef %call) #7 ret ptr %call1 } @@ -324,7 +322,7 @@ define hidden zeroext i1 @_mi_heap_memid_is_suitable(ptr nocapture noundef reado entry: %arena_id = getelementptr inbounds nuw i8, ptr %heap, i64 2856 %0 = load i32, ptr %arena_id, align 8 - %call = tail call zeroext i1 @_mi_arena_memid_is_suitable(ptr noundef nonnull byval(%struct.mi_memid_s) align 8 %memid, i32 noundef %0) #9 + %call = tail call zeroext i1 @_mi_arena_memid_is_suitable(ptr noundef nonnull byval(%struct.mi_memid_s) align 8 %memid, i32 noundef %0) #8 ret i1 %call } @@ -360,7 +358,7 @@ while.body.i: ; preds = %for.body.i, %_mi_he %page.0.i5 = phi ptr [ %2, %_mi_heap_page_destroy.exit ], [ %1, %for.body.i ] %next4.i = getelementptr inbounds nuw i8, ptr %page.0.i5, i64 56 %2 = load ptr, ptr %next4.i, align 8 - call void @_mi_page_use_delayed_free(ptr noundef nonnull %page.0.i5, i32 noundef 3, i1 noundef zeroext false) #9 + call void @_mi_page_use_delayed_free(ptr noundef nonnull %page.0.i5, i32 noundef 3, i1 noundef zeroext false) #8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %psize.i.i) %xblock_size.i.i = getelementptr inbounds nuw i8, ptr %page.0.i5, i64 28 %3 = load i32, ptr %xblock_size.i.i, align 4 @@ -372,7 +370,7 @@ if.else.i.i: ; preds = %while.body.i %sub.i.i.i.i = add i64 %4, -1 %and.i.i.i.i = and i64 %sub.i.i.i.i, -33554432 %5 = inttoptr i64 %and.i.i.i.i to ptr - %call4.i.i = call ptr @_mi_segment_page_start(ptr noundef %5, ptr noundef nonnull %page.0.i5, ptr noundef nonnull %psize.i.i) #9 + %call4.i.i = call ptr @_mi_segment_page_start(ptr noundef %5, ptr noundef nonnull %page.0.i5, ptr noundef nonnull %psize.i.i) #8 br label %_mi_heap_page_destroy.exit _mi_heap_page_destroy.exit: ; preds = %while.body.i, %if.else.i.i @@ -382,7 +380,7 @@ _mi_heap_page_destroy.exit: ; preds = %while.body.i, %if.e call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %next4.i, i8 0, i64 16, i1 false) %6 = load ptr, ptr %heap, align 8 %segments.i = getelementptr inbounds nuw i8, ptr %6, i64 32 - call void @_mi_segment_page_free(ptr noundef nonnull %page.0.i5, i1 noundef zeroext false, ptr noundef nonnull %segments.i) #9 + call void @_mi_segment_page_free(ptr noundef nonnull %page.0.i5, i1 noundef zeroext false, ptr noundef nonnull %segments.i) #8 %cmp3.not.i = icmp eq ptr %2, null br i1 %cmp3.not.i, label %for.inc.i, label %while.body.i, !llvm.loop !4 @@ -395,9 +393,7 @@ mi_heap_visit_pages.exit: ; preds = %for.inc.i, %entry, %pages_free_direct.i = getelementptr inbounds nuw i8, ptr %heap, i64 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1032) %pages_free_direct.i, i8 0, i64 1032, i1 false) %pages.i2 = getelementptr inbounds nuw i8, ptr %heap, i64 1040 - call void @llvm.assume(i1 true) [ "align"(ptr %pages.i2, i64 8) ] - call void @llvm.assume(i1 true) [ "align"(ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1040), i64 8) ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1800) %pages.i2, ptr noundef nonnull readonly align 8 dereferenceable(1800) getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1040), i64 range(i64 1800, 3065) 1800, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1800) %pages.i2, ptr noundef nonnull readonly align 8 dereferenceable(1800) getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1040), i64 range(i64 1800, 3065) 1800, i1 false) %thread_delayed_free.i = getelementptr inbounds nuw i8, ptr %heap, i64 2840 store atomic i64 0, ptr %thread_delayed_free.i seq_cst, align 8 %page_count.i3 = getelementptr inbounds nuw i8, ptr %heap, i64 3024 @@ -421,7 +417,7 @@ if.end: ; preds = %entry br i1 %tobool, label %lor.lhs.false.i.i, label %if.then1 if.then1: ; preds = %if.end - tail call void @mi_heap_delete(ptr noundef nonnull %heap) #8 + tail call void @mi_heap_delete(ptr noundef nonnull %heap) #7 br label %if.end2 lor.lhs.false.i.i: ; preds = %if.end @@ -445,7 +441,7 @@ while.body.i.i: ; preds = %for.body.i.i, %_mi_ %page.0.i5.i = phi ptr [ %3, %_mi_heap_page_destroy.exit.i ], [ %2, %for.body.i.i ] %next4.i.i = getelementptr inbounds nuw i8, ptr %page.0.i5.i, i64 56 %3 = load ptr, ptr %next4.i.i, align 8 - call void @_mi_page_use_delayed_free(ptr noundef nonnull %page.0.i5.i, i32 noundef 3, i1 noundef zeroext false) #9 + call void @_mi_page_use_delayed_free(ptr noundef nonnull %page.0.i5.i, i32 noundef 3, i1 noundef zeroext false) #8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %psize.i.i.i) %xblock_size.i.i.i = getelementptr inbounds nuw i8, ptr %page.0.i5.i, i64 28 %4 = load i32, ptr %xblock_size.i.i.i, align 4 @@ -457,7 +453,7 @@ if.else.i.i.i: ; preds = %while.body.i.i %sub.i.i.i.i.i = add i64 %5, -1 %and.i.i.i.i.i = and i64 %sub.i.i.i.i.i, -33554432 %6 = inttoptr i64 %and.i.i.i.i.i to ptr - %call4.i.i.i = call ptr @_mi_segment_page_start(ptr noundef %6, ptr noundef nonnull %page.0.i5.i, ptr noundef nonnull %psize.i.i.i) #9 + %call4.i.i.i = call ptr @_mi_segment_page_start(ptr noundef %6, ptr noundef nonnull %page.0.i5.i, ptr noundef nonnull %psize.i.i.i) #8 br label %_mi_heap_page_destroy.exit.i _mi_heap_page_destroy.exit.i: ; preds = %if.else.i.i.i, %while.body.i.i @@ -467,7 +463,7 @@ _mi_heap_page_destroy.exit.i: ; preds = %if.else.i.i.i, %whi call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %next4.i.i, i8 0, i64 16, i1 false) %7 = load ptr, ptr %heap, align 8 %segments.i.i = getelementptr inbounds nuw i8, ptr %7, i64 32 - call void @_mi_segment_page_free(ptr noundef nonnull %page.0.i5.i, i1 noundef zeroext false, ptr noundef nonnull %segments.i.i) #9 + call void @_mi_segment_page_free(ptr noundef nonnull %page.0.i5.i, i1 noundef zeroext false, ptr noundef nonnull %segments.i.i) #8 %cmp3.not.i.i = icmp eq ptr %3, null br i1 %cmp3.not.i.i, label %for.inc.i.i, label %while.body.i.i, !llvm.loop !4 @@ -480,9 +476,7 @@ if.end.i: ; preds = %for.inc.i.i, %lor.l %pages_free_direct.i.i = getelementptr inbounds nuw i8, ptr %heap, i64 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1032) %pages_free_direct.i.i, i8 0, i64 1032, i1 false) %pages.i2.i = getelementptr inbounds nuw i8, ptr %heap, i64 1040 - call void @llvm.assume(i1 true) [ "align"(ptr %pages.i2.i, i64 8) ] - call void @llvm.assume(i1 true) [ "align"(ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1040), i64 8) ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1800) %pages.i2.i, ptr noundef nonnull readonly align 8 dereferenceable(1800) getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1040), i64 range(i64 1800, 3065) 1800, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1800) %pages.i2.i, ptr noundef nonnull readonly align 8 dereferenceable(1800) getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1040), i64 range(i64 1800, 3065) 1800, i1 false) %thread_delayed_free.i.i = getelementptr inbounds nuw i8, ptr %heap, i64 2840 store atomic i64 0, ptr %thread_delayed_free.i.i seq_cst, align 8 store i64 0, ptr %page_count.i.i, align 8 @@ -499,7 +493,7 @@ if.end3.i: ; preds = %if.end.i br i1 %cmp.i18.i, label %if.then5.i, label %if.end6.i if.then5.i: ; preds = %if.end3.i - call void @_mi_heap_set_default_direct(ptr noundef %9) #9 + call void @_mi_heap_set_default_direct(ptr noundef %9) #8 %.pre.i = load ptr, ptr %heap, align 8 br label %if.end6.i @@ -538,7 +532,7 @@ if.else.i: ; preds = %if.then11.i br label %if.end20.i if.end20.i: ; preds = %if.else.i, %if.then13.i, %while.end.i - call void @mi_free(ptr noundef nonnull %heap) #9 + call void @mi_free(ptr noundef nonnull %heap) #8 br label %if.end2 if.end2: ; preds = %if.end20.i, %if.end.i, %entry, %if.then1 @@ -567,7 +561,7 @@ if.then2: ; preds = %if.end br i1 %cmp1.i, label %if.end.i8, label %if.end.i if.end.i: ; preds = %if.then2 - %call.i = tail call zeroext i1 @_mi_heap_delayed_free_partial(ptr noundef nonnull %heap) #9 + %call.i = tail call zeroext i1 @_mi_heap_delayed_free_partial(ptr noundef nonnull %heap) #8 %pages.i = getelementptr inbounds nuw i8, ptr %1, i64 1040 %pages3.i = getelementptr inbounds nuw i8, ptr %heap, i64 1040 %page_count6.i = getelementptr inbounds nuw i8, ptr %1, i64 3024 @@ -577,7 +571,7 @@ for.body.i: ; preds = %for.body.i, %if.end %i.013.i = phi i64 [ 0, %if.end.i ], [ %inc.i, %for.body.i ] %arrayidx.i = getelementptr inbounds nuw [75 x %struct.mi_page_queue_s], ptr %pages.i, i64 0, i64 %i.013.i %arrayidx4.i = getelementptr inbounds nuw [75 x %struct.mi_page_queue_s], ptr %pages3.i, i64 0, i64 %i.013.i - %call5.i = tail call i64 @_mi_page_queue_append(ptr noundef %1, ptr noundef nonnull %arrayidx.i, ptr noundef nonnull %arrayidx4.i) #9 + %call5.i = tail call i64 @_mi_page_queue_append(ptr noundef %1, ptr noundef nonnull %arrayidx.i, ptr noundef nonnull %arrayidx4.i) #8 %3 = load i64, ptr %page_count6.i, align 8 %add.i = add i64 %3, %call5.i store i64 %add.i, ptr %page_count6.i, align 8 @@ -589,16 +583,14 @@ for.body.i: ; preds = %for.body.i, %if.end br i1 %exitcond.not.i, label %if.end3, label %for.body.i, !llvm.loop !8 if.else: ; preds = %if.end - tail call fastcc void @mi_heap_collect_ex(ptr noundef nonnull %heap, i32 noundef 2) #8 + tail call fastcc void @mi_heap_collect_ex(ptr noundef nonnull %heap, i32 noundef 2) #7 br label %if.end.i8 if.end3: ; preds = %for.body.i - tail call void @_mi_heap_delayed_free_all(ptr noundef nonnull %heap) #9 + tail call void @_mi_heap_delayed_free_all(ptr noundef nonnull %heap) #8 %pages_free_direct.i.i = getelementptr inbounds nuw i8, ptr %heap, i64 8 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1032) %pages_free_direct.i.i, i8 0, i64 1032, i1 false) - call void @llvm.assume(i1 true) [ "align"(ptr %pages3.i, i64 8) ] - call void @llvm.assume(i1 true) [ "align"(ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1040), i64 8) ] - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1800) %pages3.i, ptr noundef nonnull readonly align 8 dereferenceable(1800) getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1040), i64 range(i64 1800, 3065) 1800, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1800) %pages3.i, ptr noundef nonnull readonly align 8 dereferenceable(1800) getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1040), i64 range(i64 1800, 3065) 1800, i1 false) %thread_delayed_free.i.i = getelementptr inbounds nuw i8, ptr %heap, i64 2840 store atomic i64 0, ptr %thread_delayed_free.i.i seq_cst, align 8 store i64 0, ptr %page_count.i, align 8 @@ -618,7 +610,7 @@ if.end3.i: ; preds = %if.end.i8 br i1 %cmp.i18.i, label %if.then5.i, label %if.end6.i if.then5.i: ; preds = %if.end3.i - tail call void @_mi_heap_set_default_direct(ptr noundef %6) #9 + tail call void @_mi_heap_set_default_direct(ptr noundef %6) #8 %.pre.i = load ptr, ptr %heap, align 8 br label %if.end6.i @@ -657,7 +649,7 @@ if.else.i: ; preds = %if.then11.i br label %if.end20.i if.end20.i: ; preds = %if.else.i, %if.then13.i, %while.end.i - tail call void @mi_free(ptr noundef nonnull %heap) #9 + tail call void @mi_free(ptr noundef nonnull %heap) #8 br label %return return: ; preds = %if.end20.i, %if.end.i8, %entry @@ -668,7 +660,7 @@ return: ; preds = %if.end20.i, %if.end define hidden void @_mi_heap_unsafe_destroy_all() local_unnamed_addr #0 { entry: %psize.i.i.i = alloca i64, align 8 - tail call void @mi_thread_init() #9 + tail call void @mi_thread_init() #8 %0 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_mi_heap_default) %1 = load ptr, ptr %0, align 8 %2 = load ptr, ptr %1, align 8 @@ -690,7 +682,7 @@ while.body: ; preds = %entry, %if.end br i1 %tobool, label %if.then, label %lor.lhs.false.i.i if.then: ; preds = %while.body - call void @mi_heap_destroy(ptr noundef nonnull %curr.06) #8 + call void @mi_heap_destroy(ptr noundef nonnull %curr.06) #7 br label %if.end lor.lhs.false.i.i: ; preds = %while.body @@ -714,7 +706,7 @@ while.body.i.i: ; preds = %for.body.i.i, %_mi_ %page.0.i5.i = phi ptr [ %10, %_mi_heap_page_destroy.exit.i ], [ %9, %for.body.i.i ] %next4.i.i = getelementptr inbounds nuw i8, ptr %page.0.i5.i, i64 56 %10 = load ptr, ptr %next4.i.i, align 8 - call void @_mi_page_use_delayed_free(ptr noundef nonnull %page.0.i5.i, i32 noundef 3, i1 noundef zeroext false) #9 + call void @_mi_page_use_delayed_free(ptr noundef nonnull %page.0.i5.i, i32 noundef 3, i1 noundef zeroext false) #8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %psize.i.i.i) %xblock_size.i.i.i = getelementptr inbounds nuw i8, ptr %page.0.i5.i, i64 28 %11 = load i32, ptr %xblock_size.i.i.i, align 4 @@ -726,7 +718,7 @@ if.else.i.i.i: ; preds = %while.body.i.i %sub.i.i.i.i.i = add i64 %12, -1 %and.i.i.i.i.i = and i64 %sub.i.i.i.i.i, -33554432 %13 = inttoptr i64 %and.i.i.i.i.i to ptr - %call4.i.i.i = call ptr @_mi_segment_page_start(ptr noundef %13, ptr noundef nonnull %page.0.i5.i, ptr noundef nonnull %psize.i.i.i) #9 + %call4.i.i.i = call ptr @_mi_segment_page_start(ptr noundef %13, ptr noundef nonnull %page.0.i5.i, ptr noundef nonnull %psize.i.i.i) #8 br label %_mi_heap_page_destroy.exit.i _mi_heap_page_destroy.exit.i: ; preds = %if.else.i.i.i, %while.body.i.i @@ -736,7 +728,7 @@ _mi_heap_page_destroy.exit.i: ; preds = %if.else.i.i.i, %whi call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %next4.i.i, i8 0, i64 16, i1 false) %14 = load ptr, ptr %curr.06, align 8 %segments.i.i = getelementptr inbounds nuw i8, ptr %14, i64 32 - call void @_mi_segment_page_free(ptr noundef nonnull %page.0.i5.i, i1 noundef zeroext false, ptr noundef nonnull %segments.i.i) #9 + call void @_mi_segment_page_free(ptr noundef nonnull %page.0.i5.i, i1 noundef zeroext false, ptr noundef nonnull %segments.i.i) #8 %cmp3.not.i.i = icmp eq ptr %10, null br i1 %cmp3.not.i.i, label %for.inc.i.i, label %while.body.i.i, !llvm.loop !4 @@ -749,9 +741,7 @@ _mi_heap_destroy_pages.exit: ; preds = %for.inc.i.i, %lor.l %pages_free_direct.i.i = getelementptr inbounds nuw i8, ptr %curr.06, i64 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1032) %pages_free_direct.i.i, i8 0, i64 1032, i1 false) %pages.i2.i = getelementptr inbounds nuw i8, ptr %curr.06, i64 1040 - call void @llvm.assume(i1 true) [ "align"(ptr %pages.i2.i, i64 8) ] - call void @llvm.assume(i1 true) [ "align"(ptr getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1040), i64 8) ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1800) %pages.i2.i, ptr noundef nonnull readonly align 8 dereferenceable(1800) getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1040), i64 range(i64 1800, 3065) 1800, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1800) %pages.i2.i, ptr noundef nonnull readonly align 8 dereferenceable(1800) getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1040), i64 range(i64 1800, 3065) 1800, i1 false) %thread_delayed_free.i.i = getelementptr inbounds nuw i8, ptr %curr.06, i64 2840 store atomic i64 0, ptr %thread_delayed_free.i.i seq_cst, align 8 store i64 0, ptr %page_count.i.i, align 8 @@ -776,7 +766,7 @@ entry: if.end: ; preds = %entry %0 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_mi_heap_default) %1 = load ptr, ptr %0, align 8 - tail call void @_mi_heap_set_default_direct(ptr noundef nonnull %heap) #9 + tail call void @_mi_heap_set_default_direct(ptr noundef nonnull %heap) #8 br label %return return: ; preds = %entry, %if.end @@ -879,7 +869,7 @@ while.body.i: ; preds = %for.body.i, %while. %sub.i.i.i = add i64 %4, -1 %and.i.i.i = and i64 %sub.i.i.i, -33554432 %5 = inttoptr i64 %and.i.i.i to ptr - %call.i.i = call ptr @_mi_segment_page_start(ptr noundef %5, ptr noundef nonnull %page.0.i9, ptr noundef null) #9 + %call.i.i = call ptr @_mi_segment_page_start(ptr noundef %5, ptr noundef nonnull %page.0.i9, ptr noundef null) #8 %capacity.i = getelementptr inbounds nuw i8, ptr %page.0.i9, i64 10 %6 = load i16, ptr %capacity.i, align 2 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %psize.i.i) @@ -893,7 +883,7 @@ if.then.i.i: ; preds = %while.body.i br label %mi_heap_page_check_owned.exit if.else.i.i: ; preds = %while.body.i - %call4.i.i = call ptr @_mi_segment_page_start(ptr noundef %5, ptr noundef nonnull %page.0.i9, ptr noundef nonnull %psize.i.i) #9 + %call4.i.i = call ptr @_mi_segment_page_start(ptr noundef %5, ptr noundef nonnull %page.0.i9, ptr noundef nonnull %psize.i.i) #8 %8 = load i64, ptr %psize.i.i, align 8 br label %mi_heap_page_check_owned.exit @@ -964,7 +954,7 @@ while.body.i.i: ; preds = %for.body.i.i, %whil %sub.i.i.i.i = add i64 %6, -1 %and.i.i.i.i = and i64 %sub.i.i.i.i, -33554432 %7 = inttoptr i64 %and.i.i.i.i to ptr - %call.i.i.i = call ptr @_mi_segment_page_start(ptr noundef %7, ptr noundef nonnull %page.0.i9.i, ptr noundef null) #9 + %call.i.i.i = call ptr @_mi_segment_page_start(ptr noundef %7, ptr noundef nonnull %page.0.i9.i, ptr noundef null) #8 %capacity.i.i = getelementptr inbounds nuw i8, ptr %page.0.i9.i, i64 10 %8 = load i16, ptr %capacity.i.i, align 2 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %psize.i.i.i) @@ -978,7 +968,7 @@ if.then.i.i.i: ; preds = %while.body.i.i br label %mi_heap_page_check_owned.exit.i if.else.i.i.i: ; preds = %while.body.i.i - %call4.i.i.i = call ptr @_mi_segment_page_start(ptr noundef %7, ptr noundef nonnull %page.0.i9.i, ptr noundef nonnull %psize.i.i.i) #9 + %call4.i.i.i = call ptr @_mi_segment_page_start(ptr noundef %7, ptr noundef nonnull %page.0.i9.i, ptr noundef nonnull %psize.i.i.i) #8 %10 = load i64, ptr %psize.i.i.i, align 8 br label %mi_heap_page_check_owned.exit.i @@ -1065,7 +1055,7 @@ mi_page_block_size.exit.i.i: ; preds = %while.body.i.i %sub.i.i.i.i.i = add i64 %4, -1 %and.i.i.i.i.i = and i64 %sub.i.i.i.i.i, -33554432 %5 = inttoptr i64 %and.i.i.i.i.i to ptr - %call4.i.i.i = call ptr @_mi_segment_page_start(ptr noundef %5, ptr noundef nonnull %page.0.i.i32, ptr noundef nonnull %psize.i.i.i) #9 + %call4.i.i.i = call ptr @_mi_segment_page_start(ptr noundef %5, ptr noundef nonnull %page.0.i.i32, ptr noundef nonnull %psize.i.i.i) #8 %6 = load i64, ptr %psize.i.i.i, align 8 %.pr.i.i = load i32, ptr %xblock_size.i.i.i, align 4 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %psize.i.i.i) @@ -1078,7 +1068,7 @@ mi_page_block_size.exit.if.then.i.i_crit_edge.i.i: ; preds = %mi_page_block_size br label %mi_heap_visit_areas_page.exit.i if.else.i.i.i.i: ; preds = %mi_page_block_size.exit.i.i - %call4.i.i.i.i = call ptr @_mi_segment_page_start(ptr noundef %5, ptr noundef nonnull %page.0.i.i32, ptr noundef nonnull %psize.i.i.i.i) #9 + %call4.i.i.i.i = call ptr @_mi_segment_page_start(ptr noundef %5, ptr noundef nonnull %page.0.i.i32, ptr noundef nonnull %psize.i.i.i.i) #8 %7 = load i64, ptr %psize.i.i.i.i, align 8 br label %mi_heap_visit_areas_page.exit.i @@ -1098,7 +1088,7 @@ mi_heap_visit_areas_page.exit.i: ; preds = %if.else.i.i.i.i, %m %conv4.i.i = zext i16 %9 to i64 %mul5.i.i = mul i64 %retval.0.i12.i.i, %conv4.i.i store i64 %mul5.i.i, ptr %committed.i.i, align 8 - %call.i.i.i = call ptr @_mi_segment_page_start(ptr noundef %.pre-phi17.i.i, ptr noundef nonnull %page.0.i.i32, ptr noundef null) #9 + %call.i.i.i = call ptr @_mi_segment_page_start(ptr noundef %.pre-phi17.i.i, ptr noundef nonnull %page.0.i.i32, ptr noundef null) #8 store ptr %call.i.i.i, ptr %xarea.i.i, align 8 %used.i.i = getelementptr inbounds nuw i8, ptr %page.0.i.i32, i64 24 %10 = load i32, ptr %used.i.i, align 8 @@ -1106,7 +1096,7 @@ mi_heap_visit_areas_page.exit.i: ; preds = %if.else.i.i.i.i, %m store i64 %conv10.i.i, ptr %used12.i.i, align 8 store i64 %retval.0.i.i.i.i, ptr %block_size.i.i, align 8 store i64 %retval.0.i12.i.i, ptr %full_block_size.i.i, align 8 - %call.i = call zeroext i1 %visitor(ptr noundef nonnull %heap, ptr noundef nonnull %xarea.i.i, ptr noundef null, i64 noundef %retval.0.i.i.i.i, ptr noundef %arg) #9 + %call.i = call zeroext i1 %visitor(ptr noundef nonnull %heap, ptr noundef nonnull %xarea.i.i, ptr noundef null, i64 noundef %retval.0.i.i.i.i, ptr noundef %arg) #8 br i1 %call.i, label %if.end.i, label %mi_heap_visit_areas.exit.sink.split if.end.i: ; preds = %mi_heap_visit_areas_page.exit.i @@ -1120,7 +1110,7 @@ if.end.i.i: ; preds = %if.end.i br i1 %cmp3.i.i, label %mi_heap_area_visit_blocks.exit.i, label %if.end5.i.i if.end5.i.i: ; preds = %if.end.i.i - call void @_mi_page_free_collect(ptr noundef nonnull %11, i1 noundef zeroext true) #9 + call void @_mi_page_free_collect(ptr noundef nonnull %11, i1 noundef zeroext true) #8 %used.i.i4 = getelementptr inbounds nuw i8, ptr %11, i64 24 %12 = load i32, ptr %used.i.i4, align 8 %cmp6.i.i = icmp eq i32 %12, 0 @@ -1148,7 +1138,7 @@ mi_page_block_size.exit.i.i7: ; preds = %if.end8.i.i %sub.i.i.i.i.i8 = add i64 %14, -1 %and.i.i.i.i.i9 = and i64 %sub.i.i.i.i.i8, -33554432 %15 = inttoptr i64 %and.i.i.i.i.i9 to ptr - %call4.i.i.i10 = call ptr @_mi_segment_page_start(ptr noundef %15, ptr noundef nonnull %11, ptr noundef nonnull %psize.i.i.i2) #9 + %call4.i.i.i10 = call ptr @_mi_segment_page_start(ptr noundef %15, ptr noundef nonnull %11, ptr noundef nonnull %psize.i.i.i2) #8 %16 = load i64, ptr %psize.i.i.i2, align 8 %.pr.i.i11 = load i32, ptr %xblock_size.i.i.i5, align 4 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %psize.i.i.i2) @@ -1161,7 +1151,7 @@ mi_page_block_size.exit.if.then.i.i_crit_edge.i.i23: ; preds = %mi_page_block_si br label %mi_page_usable_block_size.exit.i.i if.else.i.i.i.i13: ; preds = %mi_page_block_size.exit.i.i7 - %call4.i.i.i.i14 = call ptr @_mi_segment_page_start(ptr noundef %15, ptr noundef nonnull %11, ptr noundef nonnull %psize.i.i.i.i1) #9 + %call4.i.i.i.i14 = call ptr @_mi_segment_page_start(ptr noundef %15, ptr noundef nonnull %11, ptr noundef nonnull %psize.i.i.i.i1) #8 %17 = load i64, ptr %psize.i.i.i.i1, align 8 br label %mi_page_usable_block_size.exit.i.i @@ -1170,7 +1160,7 @@ mi_page_usable_block_size.exit.i.i: ; preds = %if.else.i.i.i.i13, %retval.0.i39.i.i = phi i64 [ %16, %if.else.i.i.i.i13 ], [ %16, %mi_page_block_size.exit.if.then.i.i_crit_edge.i.i23 ], [ %conv.i.i.i25, %mi_page_block_size.exit.thread.i.i24 ] %retval.0.i.i.i.i15 = phi i64 [ %17, %if.else.i.i.i.i13 ], [ %.pre52.i.i, %mi_page_block_size.exit.if.then.i.i_crit_edge.i.i23 ], [ %conv.i.i.i25, %mi_page_block_size.exit.thread.i.i24 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %psize.i.i.i.i1) - %call.i.i.i16 = call ptr @_mi_segment_page_start(ptr noundef %.pre-phi51.i.i, ptr noundef nonnull %11, ptr noundef nonnull %psize.i.i) #9 + %call.i.i.i16 = call ptr @_mi_segment_page_start(ptr noundef %.pre-phi51.i.i, ptr noundef nonnull %11, ptr noundef nonnull %psize.i.i) #8 %capacity.i.i17 = getelementptr inbounds nuw i8, ptr %11, i64 10 %18 = load i16, ptr %capacity.i.i17, align 2 %cmp12.i.i = icmp eq i16 %18, 1 @@ -1180,7 +1170,7 @@ if.then14.i.i: ; preds = %mi_page_usable_bloc %xheap.i.i.i = getelementptr inbounds nuw i8, ptr %11, i64 48 %19 = load atomic i64, ptr %xheap.i.i.i monotonic, align 8 %20 = inttoptr i64 %19 to ptr - %call16.i.i = call zeroext i1 %visitor(ptr noundef %20, ptr noundef nonnull %xarea.i.i, ptr noundef %call.i.i.i16, i64 noundef %retval.0.i.i.i.i15, ptr noundef %arg) #9 + %call16.i.i = call zeroext i1 %visitor(ptr noundef %20, ptr noundef nonnull %xarea.i.i, ptr noundef %call.i.i.i16, i64 noundef %retval.0.i.i.i.i15, ptr noundef %arg) #8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %psize.i.i) call void @llvm.lifetime.end.p0(i64 8192, ptr nonnull %free_map.i.i) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %xarea.i.i) @@ -1249,7 +1239,7 @@ if.then42.i.i: ; preds = %if.else.i.i %add.ptr.i.i = getelementptr inbounds i8, ptr %call.i.i.i16, i64 %mul44.i.i %26 = load atomic i64, ptr %xheap.i36.i.i monotonic, align 8 %27 = inttoptr i64 %26 to ptr - %call46.i.i = call zeroext i1 %visitor(ptr noundef %27, ptr noundef nonnull %xarea.i.i, ptr noundef %add.ptr.i.i, i64 noundef %retval.0.i.i.i.i15, ptr noundef %arg) #9 + %call46.i.i = call zeroext i1 %visitor(ptr noundef %27, ptr noundef nonnull %xarea.i.i, ptr noundef %add.ptr.i.i, i64 noundef %retval.0.i.i.i.i15, ptr noundef %arg) #8 br i1 %call46.i.i, label %if.then42.for.inc51_crit_edge.i.i, label %mi_heap_area_visit_blocks.exit.i.thread mi_heap_area_visit_blocks.exit.i.thread: ; preds = %if.then42.i.i @@ -1325,18 +1315,15 @@ declare void @_mi_page_abandon(ptr noundef, ptr noundef) local_unnamed_addr #1 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) #3 -; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #4 - ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) -declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #5 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4 declare void @_mi_segment_page_free(ptr noundef, i1 noundef zeroext, ptr noundef) local_unnamed_addr #1 declare ptr @_mi_segment_page_start(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1 ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 declare void @mi_free(ptr noundef) local_unnamed_addr #1 @@ -1345,21 +1332,20 @@ declare zeroext i1 @_mi_heap_delayed_free_partial(ptr noundef) local_unnamed_add declare i64 @_mi_page_queue_append(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #7 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #6 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #7 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #6 attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-builtin-malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-builtin-malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nofree norecurse nounwind willreturn memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-builtin-malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #4 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #7 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #8 = { "no-builtin-malloc" } -attributes #9 = { nounwind "no-builtin-malloc" } +attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #6 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #7 = { "no-builtin-malloc" } +attributes #8 = { nounwind "no-builtin-malloc" } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/mimalloc/optimized/page.c.ll b/bench/mimalloc/optimized/page.c.ll index 1f45c87b3d9..f399d9475bc 100644 --- a/bench/mimalloc/optimized/page.c.ll +++ b/bench/mimalloc/optimized/page.c.ll @@ -110,7 +110,7 @@ mi_bin.exit: ; preds = %if.then, %if.then2. br label %return if.else: ; preds = %entry - %call2 = tail call i64 @_mi_os_page_size() #12 + %call2 = tail call i64 @_mi_os_page_size() #11 %5 = tail call range(i64 0, 65) i64 @llvm.ctpop.i64(i64 %call2) %cmp.i4 = icmp samesign ult i64 %5, 2 %sub.i3 = add i64 %size, -1 @@ -213,7 +213,7 @@ if.then4: ; preds = %for.end %last7 = getelementptr inbounds nuw i8, ptr %append, i64 8 %9 = load ptr, ptr %last7, align 8 store ptr %9, ptr %last, align 8 - tail call fastcc void @mi_heap_queue_first_update(ptr noundef %heap, ptr noundef nonnull %pq) #13 + tail call fastcc void @mi_heap_queue_first_update(ptr noundef %heap, ptr noundef nonnull %pq) #12 br label %return if.else: ; preds = %for.end @@ -509,7 +509,7 @@ while.end.i: ; preds = %while.body.i, %if.e br i1 %cmp8.i, label %if.then10.i, label %if.end11.i if.then10.i: ; preds = %while.end.i - tail call void (i32, ptr, ...) @_mi_error_message(i32 noundef 14, ptr noundef nonnull @.str.1) #12 + tail call void (i32, ptr, ...) @_mi_error_message(i32 noundef 14, ptr noundef nonnull @.str.1) #11 br label %if.end if.end11.i: ; preds = %while.end.i @@ -585,7 +585,7 @@ if.else.i: ; preds = %entry %sub.i.i.i = add i64 %1, -1 %and.i.i.i = and i64 %sub.i.i.i, -33554432 %2 = inttoptr i64 %and.i.i.i to ptr - %call4.i = call ptr @_mi_segment_page_start(ptr noundef %2, ptr noundef nonnull %page, ptr noundef nonnull %psize.i) #12 + %call4.i = call ptr @_mi_segment_page_start(ptr noundef %2, ptr noundef nonnull %page, ptr noundef nonnull %psize.i) #11 %3 = load i64, ptr %psize.i, align 8 br label %mi_page_block_size.exit @@ -657,7 +657,7 @@ if.else.i5: ; preds = %mi_page_queue.exit mi_page_queue_push.exit: ; preds = %if.then.i4, %if.else.i5 store ptr %page, ptr %arrayidx.i, align 8 - call fastcc void @mi_heap_queue_first_update(ptr noundef nonnull %heap, ptr noundef nonnull %arrayidx.i) #13 + call fastcc void @mi_heap_queue_first_update(ptr noundef nonnull %heap, ptr noundef nonnull %arrayidx.i) #12 %page_count.i = getelementptr inbounds nuw i8, ptr %heap, i64 3024 %11 = load i64, ptr %page_count.i, align 8 %inc.i = add i64 %11, 1 @@ -702,7 +702,7 @@ while.body4.i: ; preds = %while.body4.i.outer %block.315.i = phi ptr [ %8, %if.end.i ], [ %block.315.i.ph, %while.body4.i.outer ] %block.3.val.i = load i64, ptr %block.315.i, align 8 %8 = inttoptr i64 %block.3.val.i to ptr - %call5.i = tail call zeroext i1 @_mi_free_delayed_block(ptr noundef nonnull %block.315.i) #12 + %call5.i = tail call zeroext i1 @_mi_free_delayed_block(ptr noundef nonnull %block.315.i) #11 br i1 %call5.i, label %if.end.i, label %if.then.i if.then.i: ; preds = %while.body4.i @@ -772,7 +772,7 @@ while.body4: ; preds = %while.end, %if.end %all_freed.014 = phi i1 [ %all_freed.1, %if.end ], [ true, %while.end ] %block.3.val = load i64, ptr %block.315, align 8 %7 = inttoptr i64 %block.3.val to ptr - %call5 = tail call zeroext i1 @_mi_free_delayed_block(ptr noundef nonnull %block.315) #12 + %call5 = tail call zeroext i1 @_mi_free_delayed_block(ptr noundef nonnull %block.315) #11 br i1 %call5, label %if.end, label %if.then if.then: ; preds = %while.body4 @@ -896,7 +896,7 @@ if.end14.i: ; preds = %if.then11.i, %if.en if.then16.i: ; preds = %if.end14.i %15 = load ptr, ptr %next3.phi.trans.insert.i, align 8 store ptr %15, ptr %arrayidx, align 8 - tail call fastcc void @mi_heap_queue_first_update(ptr noundef %9, ptr noundef nonnull %arrayidx) #13 + tail call fastcc void @mi_heap_queue_first_update(ptr noundef %9, ptr noundef nonnull %arrayidx) #12 br label %if.end19.i if.end19.i: ; preds = %if.then16.i, %if.end14.i @@ -917,7 +917,7 @@ if.then25.i: ; preds = %if.end19.i if.else.i: ; preds = %if.end19.i store ptr %page, ptr %arrayidx.i, align 8 store ptr %page, ptr %last20.i, align 8 - tail call fastcc void @mi_heap_queue_first_update(ptr noundef %9, ptr noundef nonnull %arrayidx.i) #13 + tail call fastcc void @mi_heap_queue_first_update(ptr noundef %9, ptr noundef nonnull %arrayidx.i) #12 br label %mi_page_queue_enqueue_from.exit mi_page_queue_enqueue_from.exit: ; preds = %if.then25.i, %if.else.i @@ -985,7 +985,7 @@ if.end14.i: ; preds = %if.then11.i, %if.en if.then16.i: ; preds = %if.end14.i %10 = load ptr, ptr %next3.phi.trans.insert.i, align 8 store ptr %10, ptr %pq, align 8 - tail call fastcc void @mi_heap_queue_first_update(ptr noundef %4, ptr noundef nonnull %pq) #13 + tail call fastcc void @mi_heap_queue_first_update(ptr noundef %4, ptr noundef nonnull %pq) #12 br label %mi_page_queue_remove.exit mi_page_queue_remove.exit: ; preds = %if.end14.i, %if.then16.i @@ -1000,7 +1000,7 @@ mi_page_queue_remove.exit: ; preds = %if.end14.i, %if.the %bf.clear.i.i = and i8 %bf.load.i.i, -2 store i8 %bf.clear.i.i, ptr %flags.i.i, align 2 store atomic i64 0, ptr %xheap.i release, align 8 - tail call void @_mi_segment_page_abandon(ptr noundef nonnull %page, ptr noundef nonnull %segments) #12 + tail call void @_mi_segment_page_abandon(ptr noundef nonnull %page, ptr noundef nonnull %segments) #11 ret void } @@ -1060,7 +1060,7 @@ if.end14.i: ; preds = %if.then11.i, %if.en if.then16.i: ; preds = %if.end14.i %10 = load ptr, ptr %next3.phi.trans.insert.i, align 8 store ptr %10, ptr %pq, align 8 - tail call fastcc void @mi_heap_queue_first_update(ptr noundef %4, ptr noundef nonnull %pq) #13 + tail call fastcc void @mi_heap_queue_first_update(ptr noundef %4, ptr noundef nonnull %pq) #12 br label %mi_page_queue_remove.exit mi_page_queue_remove.exit: ; preds = %if.end14.i, %if.then16.i @@ -1074,7 +1074,7 @@ mi_page_queue_remove.exit: ; preds = %if.end14.i, %if.the %bf.clear.i.i = and i8 %bf.load.i.i, -2 store i8 %bf.clear.i.i, ptr %flags.i, align 2 store atomic i64 0, ptr %xheap.i release, align 8 - tail call void @_mi_segment_page_free(ptr noundef nonnull %page, i1 noundef zeroext %force, ptr noundef nonnull %segments) #12 + tail call void @_mi_segment_page_free(ptr noundef nonnull %page, i1 noundef zeroext %force, ptr noundef nonnull %segments) #11 ret void } @@ -1253,7 +1253,7 @@ if.end14.i.i: ; preds = %if.then11.i.i, %if. if.then16.i.i: ; preds = %if.end14.i.i %28 = load ptr, ptr %next3.phi.trans.insert.i.i, align 8 store ptr %28, ptr %arrayidx.i31, align 8 - tail call fastcc void @mi_heap_queue_first_update(ptr noundef %22, ptr noundef nonnull %arrayidx.i31) #13 + tail call fastcc void @mi_heap_queue_first_update(ptr noundef %22, ptr noundef nonnull %arrayidx.i31) #12 br label %_mi_page_free.exit _mi_page_free.exit: ; preds = %if.end14.i.i, %if.then16.i.i @@ -1267,7 +1267,7 @@ _mi_page_free.exit: ; preds = %if.end14.i.i, %if.t %bf.clear.i.i.i = and i8 %bf.load.i.i.i, -2 store i8 %bf.clear.i.i.i, ptr %flags.i, align 2 store atomic i64 0, ptr %xheap.i.i29 release, align 8 - tail call void @_mi_segment_page_free(ptr noundef nonnull %page, i1 noundef zeroext false, ptr noundef nonnull %segments.i) #12 + tail call void @_mi_segment_page_free(ptr noundef nonnull %page, i1 noundef zeroext false, ptr noundef nonnull %segments.i) #11 br label %return return: ; preds = %if.end, %if.then23, %_mi_page_free.exit @@ -1372,7 +1372,7 @@ if.end14.i.i: ; preds = %if.then11.i.i, %if. if.then16.i.i: ; preds = %if.end14.i.i %16 = load ptr, ptr %next3.phi.trans.insert.i.i, align 8 store ptr %16, ptr %arrayidx, align 8 - tail call fastcc void @mi_heap_queue_first_update(ptr noundef %10, ptr noundef nonnull %arrayidx) #13 + tail call fastcc void @mi_heap_queue_first_update(ptr noundef %10, ptr noundef nonnull %arrayidx) #12 br label %_mi_page_free.exit _mi_page_free.exit: ; preds = %if.end14.i.i, %if.then16.i.i @@ -1386,7 +1386,7 @@ _mi_page_free.exit: ; preds = %if.end14.i.i, %if.t %bf.clear.i.i.i = and i8 %bf.load.i.i.i, -2 store i8 %bf.clear.i.i.i, ptr %flags.i.i, align 2 store atomic i64 0, ptr %xheap.i.i release, align 8 - tail call void @_mi_segment_page_free(ptr noundef nonnull %5, i1 noundef zeroext %force, ptr noundef nonnull %segments.i) #12 + tail call void @_mi_segment_page_free(ptr noundef nonnull %5, i1 noundef zeroext %force, ptr noundef nonnull %segments.i) #11 br label %for.inc if.else: ; preds = %if.then4 @@ -1440,7 +1440,7 @@ if.then: ; preds = %land.lhs.true %7 = load i64, ptr %6, align 8 %8 = load atomic i64, ptr @deferred_arg monotonic, align 8 %9 = inttoptr i64 %8 to ptr - tail call void %5(i1 noundef zeroext %force, i64 noundef %7, ptr noundef %9) #12 + tail call void %5(i1 noundef zeroext %force, i64 noundef %7, ptr noundef %9) #11 %10 = load ptr, ptr %heap, align 8 %recurse8 = getelementptr inbounds nuw i8, ptr %10, i64 8 store i8 0, ptr %recurse8, align 8 @@ -1467,7 +1467,7 @@ entry: br i1 %cmp.i.not, label %if.then, label %if.end14 if.then: ; preds = %entry - %call3 = tail call ptr @mi_heap_get_default() #12 + %call3 = tail call ptr @mi_heap_get_default() #11 %cmp.i21.not = icmp eq ptr %call3, @_mi_heap_empty br i1 %cmp.i21.not, label %return, label %if.end14 @@ -1495,7 +1495,7 @@ if.then.i: ; preds = %land.lhs.true.i %7 = load i64, ptr %6, align 8 %8 = load atomic i64, ptr @deferred_arg monotonic, align 8 %9 = inttoptr i64 %8 to ptr - tail call void %5(i1 noundef zeroext false, i64 noundef %7, ptr noundef %9) #12 + tail call void %5(i1 noundef zeroext false, i64 noundef %7, ptr noundef %9) #11 %10 = load ptr, ptr %heap.addr.0, align 8 %recurse8.i = getelementptr inbounds nuw i8, ptr %10, i64 8 store i8 0, ptr %recurse8.i, align 8 @@ -1530,7 +1530,7 @@ while.body4.i: ; preds = %while.end.i, %if.en %block.315.i = phi ptr [ %18, %if.end.i ], [ %block.1.i, %while.end.i ] %block.3.val.i = load i64, ptr %block.315.i, align 8 %18 = inttoptr i64 %block.3.val.i to ptr - %call5.i = tail call zeroext i1 @_mi_free_delayed_block(ptr noundef nonnull %block.315.i) #12 + %call5.i = tail call zeroext i1 @_mi_free_delayed_block(ptr noundef nonnull %block.315.i) #11 br i1 %call5.i, label %if.end.i, label %if.then.i23 if.then.i23: ; preds = %while.body4.i @@ -1551,18 +1551,18 @@ if.end.i: ; preds = %do.body.i, %while.b br i1 %cmp3.not.i, label %_mi_heap_delayed_free_partial.exit, label %while.body4.i, !llvm.loop !15 _mi_heap_delayed_free_partial.exit: ; preds = %if.end.i, %_mi_deferred_free.exit, %while.end.i - %call16 = tail call fastcc ptr @mi_find_page(ptr noundef nonnull %heap.addr.0, i64 noundef %size, i64 noundef %huge_alignment) #13 + %call16 = tail call fastcc ptr @mi_find_page(ptr noundef nonnull %heap.addr.0, i64 noundef %size, i64 noundef %huge_alignment) #12 %cmp = icmp eq ptr %call16, null br i1 %cmp, label %if.end26, label %if.end36 if.end26: ; preds = %_mi_heap_delayed_free_partial.exit - tail call void @mi_heap_collect(ptr noundef nonnull %heap.addr.0, i1 noundef zeroext true) #12 - %call25 = tail call fastcc ptr @mi_find_page(ptr noundef nonnull %heap.addr.0, i64 noundef %size, i64 noundef %huge_alignment) #13 + tail call void @mi_heap_collect(ptr noundef nonnull %heap.addr.0, i1 noundef zeroext true) #11 + %call25 = tail call fastcc ptr @mi_find_page(ptr noundef nonnull %heap.addr.0, i64 noundef %size, i64 noundef %huge_alignment) #12 %cmp27 = icmp eq ptr %call25, null br i1 %cmp27, label %if.then35, label %if.end36 if.then35: ; preds = %if.end26 - tail call void (i32, ptr, ...) @_mi_error_message(i32 noundef 12, ptr noundef nonnull @.str, i64 noundef %size) #12 + tail call void (i32, ptr, ...) @_mi_error_message(i32 noundef 12, ptr noundef nonnull @.str, i64 noundef %size) #11 br label %return if.end36: ; preds = %_mi_heap_delayed_free_partial.exit, %if.end26 @@ -1576,7 +1576,7 @@ land.rhs: ; preds = %if.end36 br i1 %cmp39, label %if.then47, label %if.else if.then47: ; preds = %land.rhs - %call48 = tail call ptr @_mi_page_malloc(ptr noundef nonnull %heap.addr.0, ptr noundef nonnull %page.026, i64 noundef %size, i1 noundef zeroext false) #12 + %call48 = tail call ptr @_mi_page_malloc(ptr noundef nonnull %heap.addr.0, ptr noundef nonnull %page.026, i64 noundef %size, i1 noundef zeroext false) #11 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %psize.i.i) %25 = load i32, ptr %xblock_size, align 4 %cmp.i.i = icmp sgt i32 %25, -1 @@ -1591,19 +1591,18 @@ if.else.i.i: ; preds = %if.then47 %sub.i.i.i.i = add i64 %26, -1 %and.i.i.i.i = and i64 %sub.i.i.i.i, -33554432 %27 = inttoptr i64 %and.i.i.i.i to ptr - %call4.i.i = call ptr @_mi_segment_page_start(ptr noundef %27, ptr noundef nonnull %page.026, ptr noundef nonnull %psize.i.i) #12 + %call4.i.i = call ptr @_mi_segment_page_start(ptr noundef %27, ptr noundef nonnull %page.026, ptr noundef nonnull %psize.i.i) #11 %28 = load i64, ptr %psize.i.i, align 8 br label %mi_page_usable_block_size.exit mi_page_usable_block_size.exit: ; preds = %if.then.i.i, %if.else.i.i %retval.0.i.i = phi i64 [ %conv.i.i, %if.then.i.i ], [ %28, %if.else.i.i ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %psize.i.i) - call void @llvm.assume(i1 true) [ "align"(ptr %call48, i64 8) ] - call void @llvm.memset.p0.i64(ptr align 8 %call48, i8 0, i64 %retval.0.i.i, i1 false) + call void @llvm.memset.p0.i64(ptr align 1 %call48, i8 0, i64 %retval.0.i.i, i1 false) br label %return if.else: ; preds = %if.end36, %land.rhs - %call51 = tail call ptr @_mi_page_malloc(ptr noundef nonnull %heap.addr.0, ptr noundef nonnull %page.026, i64 noundef %size, i1 noundef zeroext %zero) #12 + %call51 = tail call ptr @_mi_page_malloc(ptr noundef nonnull %heap.addr.0, ptr noundef nonnull %page.026, i64 noundef %size, i1 noundef zeroext %zero) #11 br label %return return: ; preds = %if.then, %if.else, %mi_page_usable_block_size.exit, %if.then35 @@ -1627,11 +1626,11 @@ if.then: ; preds = %entry br i1 %cmp3, label %if.then11, label %if.else if.then11: ; preds = %if.then - tail call void (i32, ptr, ...) @_mi_error_message(i32 noundef 75, ptr noundef nonnull @.str.2, i64 noundef %size) #12 + tail call void (i32, ptr, ...) @_mi_error_message(i32 noundef 75, ptr noundef nonnull @.str.2, i64 noundef %size) #11 br label %return if.else: ; preds = %if.then - %call.i = tail call i64 @_mi_os_good_alloc_size(i64 noundef range(i64 0, -9223372036854775808) %size) #12 + %call.i = tail call i64 @_mi_os_good_alloc_size(i64 noundef range(i64 0, -9223372036854775808) %size) #11 %cmp.i = icmp ugt i64 %call.i, 16777216 %1 = or i1 %cmp1, %cmp.i %2 = add i64 %call.i, 7 @@ -1670,7 +1669,7 @@ mi_page_queue.exit.i: ; preds = %if.else7.i.i.i.i, % %bin.0.i.i.i.i = phi i64 [ %conv.i.i.i.i, %if.then2.i.i.i.i ], [ %6, %if.else7.i.i.i.i ], [ 1, %if.else ], [ 73, %if.else3.i.i.i.i ] %pages.i.i = getelementptr inbounds nuw i8, ptr %heap, i64 1040 %arrayidx.i.i = getelementptr inbounds nuw [75 x %struct.mi_page_queue_s], ptr %pages.i.i, i64 0, i64 %bin.0.i.i.i.i - %call3.i = tail call fastcc ptr @mi_page_fresh_alloc(ptr noundef %heap, ptr noundef nonnull %arrayidx.i.i, i64 noundef %call.i, i64 noundef %huge_alignment) #13 + %call3.i = tail call fastcc ptr @mi_page_fresh_alloc(ptr noundef %heap, ptr noundef nonnull %arrayidx.i.i, i64 noundef %call.i, i64 noundef %huge_alignment) #12 %cmp4.not.i = icmp eq ptr %call3.i, null br i1 %cmp4.not.i, label %return, label %if.end.i @@ -1686,7 +1685,7 @@ if.else.i.i.i: ; preds = %if.end.i %sub.i.i.i.i7.i = add i64 %8, -1 %and.i.i.i.i.i = and i64 %sub.i.i.i.i7.i, -33554432 %9 = inttoptr i64 %and.i.i.i.i.i to ptr - %call4.i.i.i = call ptr @_mi_segment_page_start(ptr noundef %9, ptr noundef nonnull %call3.i, ptr noundef nonnull %psize.i.i.i) #12 + %call4.i.i.i = call ptr @_mi_segment_page_start(ptr noundef %9, ptr noundef nonnull %call3.i, ptr noundef nonnull %psize.i.i.i) #11 br label %mi_page_usable_block_size.exit.i mi_page_usable_block_size.exit.i: ; preds = %if.else.i.i.i, %if.end.i @@ -1781,7 +1780,7 @@ while.end.i.i.i: ; preds = %while.body.i.i.i, % br i1 %cmp8.i.i.i, label %if.then10.i.i.i, label %if.end11.i.i.i if.then10.i.i.i: ; preds = %while.end.i.i.i - tail call void (i32, ptr, ...) @_mi_error_message(i32 noundef 14, ptr noundef nonnull @.str.1) #12 + tail call void (i32, ptr, ...) @_mi_error_message(i32 noundef 14, ptr noundef nonnull @.str.1) #11 br label %if.end.i.i if.end11.i.i.i: ; preds = %while.end.i.i.i @@ -1886,7 +1885,7 @@ while.end.i.i.i.i: ; preds = %while.body.i.i.i.i, br i1 %cmp8.i.i.i.i, label %if.then10.i.i.i.i, label %if.end11.i.i.i.i if.then10.i.i.i.i: ; preds = %while.end.i.i.i.i - tail call void (i32, ptr, ...) @_mi_error_message(i32 noundef 14, ptr noundef nonnull @.str.1) #12 + tail call void (i32, ptr, ...) @_mi_error_message(i32 noundef 14, ptr noundef nonnull @.str.1) #11 br label %if.end.i.i10.i if.end11.i.i.i.i: ; preds = %while.end.i.i.i.i @@ -1934,7 +1933,7 @@ if.end.i15.i: ; preds = %_mi_page_free_colle br i1 %cmp3.i16.i, label %if.then5.i.i, label %if.end6.i.i if.then5.i.i: ; preds = %if.end.i15.i - tail call fastcc void @mi_page_extend_free(ptr noundef %page.027.i.i) #13 + tail call fastcc void @mi_page_extend_free(ptr noundef %page.027.i.i) #12 br label %return.sink.split.i if.end6.i.i: ; preds = %if.end.i15.i @@ -1990,7 +1989,7 @@ if.end14.i.i.i.i: ; preds = %if.then11.i.i.i.i, if.then16.i.i.i.i: ; preds = %if.end14.i.i.i.i %59 = load ptr, ptr %next1.i.i, align 8 store ptr %59, ptr %arrayidx.i.i23, align 8 - tail call fastcc void @mi_heap_queue_first_update(ptr noundef %53, ptr noundef nonnull %arrayidx.i.i23) #13 + tail call fastcc void @mi_heap_queue_first_update(ptr noundef %53, ptr noundef nonnull %arrayidx.i.i23) #12 br label %if.end19.i.i.i.i if.end19.i.i.i.i: ; preds = %if.then16.i.i.i.i, %if.end14.i.i.i.i @@ -2011,7 +2010,7 @@ if.then25.i.i.i.i: ; preds = %if.end19.i.i.i.i if.else.i.i.i20.i: ; preds = %if.end19.i.i.i.i store ptr %page.027.i.i, ptr %arrayidx.i.i.i, align 8 store ptr %page.027.i.i, ptr %last20.i.i.i.i, align 8 - tail call fastcc void @mi_heap_queue_first_update(ptr noundef %53, ptr noundef nonnull %arrayidx.i.i.i) #13 + tail call fastcc void @mi_heap_queue_first_update(ptr noundef %53, ptr noundef nonnull %arrayidx.i.i.i) #12 br label %mi_page_queue_enqueue_from.exit.i.i.i mi_page_queue_enqueue_from.exit.i.i.i: ; preds = %if.else.i.i.i20.i, %if.then25.i.i.i.i @@ -2072,7 +2071,7 @@ while.end.i.i.i.i.i: ; preds = %while.body.i.i.i.i. br i1 %cmp8.i.i.i.i.i, label %if.then10.i.i.i.i.i, label %if.end11.i.i.i.i.i if.then10.i.i.i.i.i: ; preds = %while.end.i.i.i.i.i - tail call void (i32, ptr, ...) @_mi_error_message(i32 noundef 14, ptr noundef nonnull @.str.1) #12 + tail call void (i32, ptr, ...) @_mi_error_message(i32 noundef 14, ptr noundef nonnull @.str.1) #11 br label %if.end.i7.ithread-pre-split.i.i if.end11.i.i.i.i.i: ; preds = %while.end.i.i.i.i.i @@ -2114,9 +2113,9 @@ mi_page_to_full.exit.i.i: ; preds = %if.end26.sink.split br i1 %cond.i.i, label %if.then9.i.i, label %while.body.i.i, !llvm.loop !18 if.then9.i.i: ; preds = %mi_page_to_full.exit.i.i, %tailrecurse.i.i - tail call void @_mi_heap_collect_retired(ptr noundef %heap, i1 noundef zeroext false) #13 + tail call void @_mi_heap_collect_retired(ptr noundef %heap, i1 noundef zeroext false) #12 %78 = load i64, ptr %block_size.i.i.i, align 8 - %call.i.i.i = tail call fastcc ptr @mi_page_fresh_alloc(ptr noundef %heap, ptr noundef nonnull %arrayidx.i.i23, i64 noundef %78, i64 noundef 0) #13 + %call.i.i.i = tail call fastcc ptr @mi_page_fresh_alloc(ptr noundef %heap, ptr noundef nonnull %arrayidx.i.i23, i64 noundef %78, i64 noundef 0) #12 %cmp11.i.i = icmp eq ptr %call.i.i.i, null %brmerge.not.i.i = and i1 %first_try.tr.i.i, %cmp11.i.i br i1 %brmerge.not.i.i, label %tailrecurse.i.i, label %return @@ -2158,7 +2157,7 @@ entry: %0 = load ptr, ptr %heap, align 8 %segments = getelementptr inbounds nuw i8, ptr %0, i64 32 %os = getelementptr inbounds nuw i8, ptr %0, i64 944 - %call = tail call ptr @_mi_segment_page_alloc(ptr noundef nonnull %heap, i64 noundef %block_size, i64 noundef %page_alignment, ptr noundef nonnull %segments, ptr noundef nonnull %os) #12 + %call = tail call ptr @_mi_segment_page_alloc(ptr noundef nonnull %heap, i64 noundef %block_size, i64 noundef %page_alignment, ptr noundef nonnull %segments, ptr noundef nonnull %os) #11 %cmp = icmp eq ptr %call, null br i1 %cmp, label %return, label %if.end @@ -2188,7 +2187,7 @@ if.else.i: ; preds = %cond.true %sub.i.i.i = add i64 %3, -1 %and.i.i.i = and i64 %sub.i.i.i, -33554432 %4 = inttoptr i64 %and.i.i.i to ptr - %call4.i = call ptr @_mi_segment_page_start(ptr noundef %4, ptr noundef nonnull %call, ptr noundef nonnull %psize.i) #12 + %call4.i = call ptr @_mi_segment_page_start(ptr noundef %4, ptr noundef nonnull %call, ptr noundef nonnull %psize.i) #11 %5 = load i64, ptr %psize.i, align 8 br label %mi_page_block_size.exit @@ -2211,7 +2210,7 @@ cond.end: ; preds = %lor.lhs.false, %mi_ %cond.i = trunc nuw i64 %cond11.i to i32 %xblock_size.i17 = getelementptr inbounds nuw i8, ptr %call, i64 28 store i32 %cond.i, ptr %xblock_size.i17, align 4 - %call1.i = call ptr @_mi_segment_page_start(ptr noundef %7, ptr noundef nonnull %call, ptr noundef nonnull %page_size.i) #12 + %call1.i = call ptr @_mi_segment_page_start(ptr noundef %7, ptr noundef nonnull %call, ptr noundef nonnull %page_size.i) #11 %9 = load i64, ptr %page_size.i, align 8 %div.i = udiv i64 %9, %cond %conv2.i = trunc i64 %div.i to i16 @@ -2226,7 +2225,7 @@ cond.end: ; preds = %lor.lhs.false, %mi_ %bf.clear4.i = and i8 %bf.load3.i, -2 %bf.set.i = or disjoint i8 %bf.clear4.i, %bf.clear.i store i8 %bf.set.i, ptr %free_is_zero.i, align 1 - call fastcc void @mi_page_extend_free(ptr noundef nonnull %call) #13 + call fastcc void @mi_page_extend_free(ptr noundef nonnull %call) #12 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %page_size.i) br i1 %cmp2, label %return, label %if.then7 @@ -2261,7 +2260,7 @@ if.else.i19: ; preds = %if.then7 mi_page_queue_push.exit: ; preds = %if.then.i18, %if.else.i19 store ptr %call, ptr %pq, align 8 - call fastcc void @mi_heap_queue_first_update(ptr noundef nonnull %heap, ptr noundef nonnull %pq) #13 + call fastcc void @mi_heap_queue_first_update(ptr noundef nonnull %heap, ptr noundef nonnull %pq) #12 %page_count.i = getelementptr inbounds nuw i8, ptr %heap, i64 3024 %13 = load i64, ptr %page_count.i, align 8 %inc.i = add i64 %13, 1 @@ -2296,7 +2295,7 @@ if.end5: ; preds = %if.end %sub.i.i = add i64 %3, -1 %and.i.i = and i64 %sub.i.i, -33554432 %4 = inttoptr i64 %and.i.i to ptr - %call.i = call ptr @_mi_segment_page_start(ptr noundef %4, ptr noundef nonnull %page, ptr noundef nonnull %page_size) #12 + %call.i = call ptr @_mi_segment_page_start(ptr noundef %4, ptr noundef nonnull %page, ptr noundef nonnull %page_size) #11 %xblock_size = getelementptr inbounds nuw i8, ptr %page, i64 28 %5 = load i32, ptr %xblock_size, align 4 %conv10 = zext nneg i32 %5 to i64 @@ -2321,7 +2320,7 @@ cond.end21: ; preds = %if.end5, %cond.fals %cond22 = phi i64 [ %9, %cond.false19 ], [ 4, %if.end5 ] %spec.store.select = call i64 @llvm.umax.i64(i64 %cond22, i64 4) %spec.select = call i64 @llvm.umin.i64(i64 %sub, i64 %spec.store.select) - %call.i.i = call ptr @_mi_segment_page_start(ptr noundef %4, ptr noundef nonnull %page, ptr noundef null) #12 + %call.i.i = call ptr @_mi_segment_page_start(ptr noundef %4, ptr noundef nonnull %page, ptr noundef null) #11 %10 = load i16, ptr %capacity, align 2 %conv.i = zext i16 %10 to i64 %mul.i.i = mul i64 %cond, %conv.i @@ -2356,26 +2355,23 @@ return: ; preds = %if.end, %entry, %mi ret void } -; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #8 - ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #9 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.ctpop.i64(i64) #10 +declare i64 @llvm.ctpop.i64(i64) #9 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #10 +declare i64 @llvm.umin.i64(i64, i64) #9 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #10 +declare i64 @llvm.umax.i64(i64, i64) #9 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #11 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #10 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #11 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #10 attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-builtin-malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-builtin-malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -2385,12 +2381,11 @@ attributes #4 = { nofree norecurse nounwind memory(readwrite, inaccessiblemem: n attributes #5 = { nofree norecurse nounwind memory(readwrite, argmem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-builtin-malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #7 = { nounwind } -attributes #8 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #10 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #11 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #12 = { nounwind "no-builtin-malloc" } -attributes #13 = { "no-builtin-malloc" } +attributes #8 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #9 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #10 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #11 = { nounwind "no-builtin-malloc" } +attributes #12 = { "no-builtin-malloc" } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/mini-lsm-rs/optimized/2r9gly04tqoqnem4.ll b/bench/mini-lsm-rs/optimized/2r9gly04tqoqnem4.ll index 0d765ef9856..eddfb71e49a 100644 --- a/bench/mini-lsm-rs/optimized/2r9gly04tqoqnem4.ll +++ b/bench/mini-lsm-rs/optimized/2r9gly04tqoqnem4.ll @@ -319,6 +319,7 @@ _ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17h0a014631f851c40cE br label %25 25: ; preds = %_ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17h0a014631f851c40cE.exit.thread.i, %_ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17h0a014631f851c40cE.exit.i + call void @llvm.assume(i1 true) [ "align"(ptr %14, i64 8) ] %26 = getelementptr inbounds nuw i8, ptr %13, i64 24 %27 = load ptr, ptr %26, align 8, !nonnull !4, !noundef !4 %28 = getelementptr inbounds nuw i8, ptr %27, i64 56 @@ -363,6 +364,7 @@ _ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17h0a014631f851c40cE store ptr @anon.8bf14e9603843e181ebf39e1dd12cfe8.30, ptr %9, align 8, !alias.scope !40, !noalias !43 %41 = getelementptr inbounds nuw i8, ptr %9, i64 8 store i64 3, ptr %41, align 8, !alias.scope !40, !noalias !43 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %42 = getelementptr inbounds nuw i8, ptr %9, i64 32 store ptr null, ptr %42, align 8, !alias.scope !40, !noalias !43 %43 = getelementptr inbounds nuw i8, ptr %9, i64 16 @@ -396,12 +398,14 @@ _ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17h0a014631f851c40cE %55 = getelementptr inbounds nuw i8, ptr %3, i64 32 %56 = getelementptr inbounds nuw i8, ptr %3, i64 40 %57 = getelementptr inbounds nuw i8, ptr %4, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %58 = getelementptr inbounds nuw i8, ptr %4, i64 32 %59 = getelementptr inbounds nuw i8, ptr %4, i64 16 %60 = getelementptr inbounds nuw i8, ptr %4, i64 24 br label %65 ._crit_edge.i: ; preds = %69, %46 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %61 = atomicrmw sub ptr %14, i64 16 release, align 8 %62 = and i64 %61, -14 %63 = icmp eq i64 %62, 18 @@ -413,6 +417,7 @@ _ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17h0a014631f851c40cE 65: ; preds = %69, %.lr.ph.i %.sroa.0.023.i = phi ptr [ %.val.i, %.lr.ph.i ], [ %70, %69 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.023.i, i64 8) ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) store ptr %.sroa.0.023.i, ptr %6, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) @@ -624,6 +629,7 @@ define void @_ZN16mini_lsm_starter11lsm_storage7MiniLsm21add_compaction_filter17 to label %"_ZN78_$LT$parking_lot..raw_mutex..RawMutex$u20$as$u20$lock_api..mutex..RawMutex$GT$4lock17hc8ec2492ec8cdf56E.exit.i" unwind label %46, !noalias !57 "_ZN78_$LT$parking_lot..raw_mutex..RawMutex$u20$as$u20$lock_api..mutex..RawMutex$GT$4lock17hc8ec2492ec8cdf56E.exit.i": ; preds = %11, %2 + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %13 = getelementptr inbounds nuw i8, ptr %.val, i64 24 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3), !noalias !57 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %4, i64 32, i1 false) @@ -783,6 +789,7 @@ _ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17h0a014631f851c40cE br label %17 17: ; preds = %_ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17h0a014631f851c40cE.exit22.thread, %_ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17h0a014631f851c40cE.exit22 + call void @llvm.assume(i1 true) [ "align"(ptr %6, i64 8) ] %18 = getelementptr inbounds nuw i8, ptr %5, i64 24 %19 = load ptr, ptr %18, align 8, !nonnull !4, !noundef !4 %20 = getelementptr inbounds nuw i8, ptr %19, i64 88 @@ -894,6 +901,7 @@ _ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17h0a014631f851c40cE br label %68 68: ; preds = %_ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17h0a014631f851c40cE.exit.thread, %_ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17h0a014631f851c40cE.exit + call void @llvm.assume(i1 true) [ "align"(ptr %55, i64 8) ] %69 = getelementptr inbounds nuw i8, ptr %54, i64 24 %70 = load ptr, ptr %69, align 8, !nonnull !4, !noundef !4 %71 = getelementptr inbounds nuw i8, ptr %70, i64 32 diff --git a/bench/mini-lsm-rs/optimized/3m8k5ep4f562pm44.ll b/bench/mini-lsm-rs/optimized/3m8k5ep4f562pm44.ll index 3b1676a8e0a..8fe4220a0fc 100644 --- a/bench/mini-lsm-rs/optimized/3m8k5ep4f562pm44.ll +++ b/bench/mini-lsm-rs/optimized/3m8k5ep4f562pm44.ll @@ -167,6 +167,7 @@ define hidden noundef range(i64 1, 0) i64 @"_ZN17crossbeam_channel5waker17curren %6 = tail call noundef nonnull ptr @_ZN3std6thread7current17ha2f171abb653aba5E() store ptr %6, ptr %2, align 8 %7 = getelementptr inbounds nuw i8, ptr %6, i64 16 + call void @llvm.assume(i1 true) [ "align"(ptr %7, i64 8) ] %8 = load i64, ptr %7, align 8, !range !42, !noundef !21 %9 = atomicrmw sub ptr %6, i64 1 release, align 8, !noalias !43 %10 = icmp eq i64 %9, 1 @@ -699,6 +700,7 @@ define hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZN3std3sys6commo %7 = tail call noundef nonnull ptr @_ZN3std6thread7current17ha2f171abb653aba5E(), !noalias !101 store ptr %7, ptr %3, align 8, !noalias !101 %8 = getelementptr inbounds nuw i8, ptr %7, i64 16 + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %9 = load i64, ptr %8, align 8, !range !42, !noalias !101, !noundef !21 %10 = atomicrmw sub ptr %7, i64 1 release, align 8, !noalias !104 %11 = icmp eq i64 %10, 1 @@ -965,6 +967,7 @@ __rust_try.llvm.15938600225882126526.exit: ; preds = %16 %23 = extractvalue { ptr, ptr } %19, 1 %24 = icmp ne ptr %22, null tail call void @llvm.assume(i1 %24) + call void @llvm.assume(i1 true) [ "align"(ptr %23, i64 8) ] %25 = icmp ne ptr %23, null tail call void @llvm.assume(i1 %25) br label %26 @@ -1009,6 +1012,7 @@ define hidden { ptr, ptr } @_ZN3std9panicking3try17h26b47efc5a0e1463E(ptr noalia %10 = extractvalue { ptr, ptr } %5, 1 %11 = icmp ne ptr %9, null tail call void @llvm.assume(i1 %11) + call void @llvm.assume(i1 true) [ "align"(ptr %10, i64 8) ] %12 = icmp ne ptr %10, null tail call void @llvm.assume(i1 %12) br label %13 @@ -1068,6 +1072,7 @@ __rust_try.llvm.15938600225882126526.exit: ; preds = %14 %21 = extractvalue { ptr, ptr } %17, 1 %22 = icmp ne ptr %20, null call void @llvm.assume(i1 %22) + call void @llvm.assume(i1 true) [ "align"(ptr %21, i64 8) ] %23 = icmp ne ptr %21, null call void @llvm.assume(i1 %23) br label %25 @@ -1116,6 +1121,7 @@ define hidden { ptr, ptr } @_ZN3std9panicking3try17h527b4d715f32e430E(ptr noalia %10 = extractvalue { ptr, ptr } %5, 1 %11 = icmp ne ptr %9, null tail call void @llvm.assume(i1 %11) + call void @llvm.assume(i1 true) [ "align"(ptr %10, i64 8) ] %12 = icmp ne ptr %10, null tail call void @llvm.assume(i1 %12) br label %13 @@ -1200,6 +1206,7 @@ __rust_try.llvm.15938600225882126526.exit: ; preds = %.body.i.i.i.i %31 = extractvalue { ptr, ptr } %27, 1 %32 = icmp ne ptr %30, null tail call void @llvm.assume(i1 %32) + call void @llvm.assume(i1 true) [ "align"(ptr %31, i64 8) ] %33 = icmp ne ptr %31, null tail call void @llvm.assume(i1 %33) br label %35 @@ -1218,7 +1225,7 @@ __rust_try.llvm.15938600225882126526.exit: ; preds = %.body.i.i.i.i ; Function Attrs: nonlazybind uwtable define hidden { ptr, ptr } @_ZN3std9panicking3try17h7b11098a4f159d71E(ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %0) unnamed_addr #1 personality ptr @rust_eh_personality { - %.sroa.01.sroa.0.0.copyload = load ptr, ptr %0, align 8, !nonnull !21, !noundef !21 + %.sroa.01.sroa.0.0.copyload = load ptr, ptr %0, align 8, !nonnull !21, !align !145, !noundef !21 %.sroa.01.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 %.sroa.01.sroa.4.0.copyload = load ptr, ptr %.sroa.01.sroa.4.0..sroa_idx, align 8 %.sroa.01.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -1265,6 +1272,7 @@ __rust_try.llvm.15938600225882126526.exit: ; preds = %18 %25 = extractvalue { ptr, ptr } %21, 1 %26 = icmp ne ptr %24, null tail call void @llvm.assume(i1 %26) + call void @llvm.assume(i1 true) [ "align"(ptr %25, i64 8) ] %27 = icmp ne ptr %25, null tail call void @llvm.assume(i1 %27) br label %28 @@ -1279,7 +1287,7 @@ __rust_try.llvm.15938600225882126526.exit: ; preds = %18 ; Function Attrs: nonlazybind uwtable define hidden { ptr, ptr } @_ZN3std9panicking3try17h8f9eeedcdc58202dE(ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %0) unnamed_addr #1 personality ptr @rust_eh_personality { - %.sroa.01.sroa.0.0.copyload = load ptr, ptr %0, align 8, !nonnull !21, !noundef !21 + %.sroa.01.sroa.0.0.copyload = load ptr, ptr %0, align 8, !nonnull !21, !align !145, !noundef !21 %.sroa.01.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 %.sroa.01.sroa.4.0.copyload = load ptr, ptr %.sroa.01.sroa.4.0..sroa_idx, align 8 %.sroa.01.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -1326,6 +1334,7 @@ __rust_try.llvm.15938600225882126526.exit: ; preds = %18 %25 = extractvalue { ptr, ptr } %21, 1 %26 = icmp ne ptr %24, null tail call void @llvm.assume(i1 %26) + call void @llvm.assume(i1 true) [ "align"(ptr %25, i64 8) ] %27 = icmp ne ptr %25, null tail call void @llvm.assume(i1 %27) br label %28 @@ -1369,6 +1378,8 @@ define hidden void @_ZN3std9panicking3try17h9360a43ab282a523E(ptr noalias nocapt %17 = extractvalue { ptr, ptr } %8, 1 %18 = icmp ne ptr %16, null tail call void @llvm.assume(i1 %18) + call void @llvm.assume(i1 true) [ "align"(ptr %17, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %17, i64 8) ] %19 = icmp ne ptr %17, null tail call void @llvm.assume(i1 %19) %20 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -1483,7 +1494,7 @@ define hidden void @_ZN3std9panicking3try7do_call17h1b45227f3931bde3E.llvm.15938 ; Function Attrs: inlinehint nonlazybind uwtable define hidden void @_ZN3std9panicking3try7do_call17h3fa84a4a7a3d3f09E.llvm.15938600225882126526(ptr nocapture noundef readonly %0) unnamed_addr #0 { - %.sroa.0.0.copyload = load ptr, ptr %0, align 8, !nonnull !21, !noundef !21 + %.sroa.0.0.copyload = load ptr, ptr %0, align 8, !nonnull !21, !align !145, !noundef !21 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 %.sroa.2.0.copyload = load ptr, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -1646,6 +1657,7 @@ define hidden void @_ZN3std9panicking3try7do_call17h4e051fe5b6328b64E.llvm.15938 store ptr @anon.2d959d102d7682cc7cbcc0dd1a59e417.12.llvm.7682092217504716512, ptr %4, align 8, !noalias !267 %49 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %49, align 8, !noalias !267 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %50 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %50, align 8, !noalias !267 %51 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -1714,6 +1726,7 @@ define hidden void @_ZN3std9panicking3try7do_call17h4e051fe5b6328b64E.llvm.15938 store ptr @"_ZN6anyhow5error62_$LT$impl$u20$core..fmt..Display$u20$for$u20$anyhow..Error$GT$3fmt17hf9bf7a60bb59de20E", ptr %34, align 8, !noalias !256 store ptr @anon.0f4c0c09fe5df6088e9fdb7cb0c7e3e9.58, ptr %9, align 8, !alias.scope !270, !noalias !273 store i64 2, ptr %35, align 8, !alias.scope !270, !noalias !273 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] store ptr null, ptr %36, align 8, !alias.scope !270, !noalias !273 store ptr %8, ptr %37, align 8, !alias.scope !270, !noalias !273 store i64 1, ptr %38, align 8, !alias.scope !270, !noalias !273 @@ -1775,6 +1788,7 @@ define hidden void @_ZN3std9panicking3try7do_call17h4e051fe5b6328b64E.llvm.15938 store ptr @anon.2d959d102d7682cc7cbcc0dd1a59e417.12.llvm.7682092217504716512, ptr %3, align 8, !noalias !281 %77 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %77, align 8, !noalias !281 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %78 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %78, align 8, !noalias !281 %79 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -1864,6 +1878,7 @@ common.resume.i.i.i.i: ; preds = %96, %91, %18 store ptr @anon.0f4c0c09fe5df6088e9fdb7cb0c7e3e9.54, ptr %6, align 8, !alias.scope !301, !noalias !304 %105 = getelementptr inbounds nuw i8, ptr %6, i64 8 store i64 1, ptr %105, align 8, !alias.scope !301, !noalias !304 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %106 = getelementptr inbounds nuw i8, ptr %6, i64 32 store ptr null, ptr %106, align 8, !alias.scope !301, !noalias !304 %107 = getelementptr inbounds nuw i8, ptr %6, i64 16 @@ -2042,6 +2057,7 @@ define hidden void @_ZN3std9panicking3try7do_call17h95e4f92c5cb389dfE.llvm.15938 store ptr @anon.2d959d102d7682cc7cbcc0dd1a59e417.12.llvm.7682092217504716512, ptr %4, align 8, !noalias !342 %49 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %49, align 8, !noalias !342 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %50 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %50, align 8, !noalias !342 %51 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -2110,6 +2126,7 @@ define hidden void @_ZN3std9panicking3try7do_call17h95e4f92c5cb389dfE.llvm.15938 store ptr @"_ZN6anyhow5error62_$LT$impl$u20$core..fmt..Display$u20$for$u20$anyhow..Error$GT$3fmt17hf9bf7a60bb59de20E", ptr %34, align 8, !noalias !332 store ptr @anon.0f4c0c09fe5df6088e9fdb7cb0c7e3e9.52, ptr %9, align 8, !alias.scope !345, !noalias !348 store i64 2, ptr %35, align 8, !alias.scope !345, !noalias !348 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] store ptr null, ptr %36, align 8, !alias.scope !345, !noalias !348 store ptr %8, ptr %37, align 8, !alias.scope !345, !noalias !348 store i64 1, ptr %38, align 8, !alias.scope !345, !noalias !348 @@ -2171,6 +2188,7 @@ define hidden void @_ZN3std9panicking3try7do_call17h95e4f92c5cb389dfE.llvm.15938 store ptr @anon.2d959d102d7682cc7cbcc0dd1a59e417.12.llvm.7682092217504716512, ptr %3, align 8, !noalias !356 %77 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %77, align 8, !noalias !356 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %78 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %78, align 8, !noalias !356 %79 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -2260,6 +2278,7 @@ common.resume.i.i.i.i: ; preds = %96, %91, %18 store ptr @anon.0f4c0c09fe5df6088e9fdb7cb0c7e3e9.54, ptr %6, align 8, !alias.scope !376, !noalias !379 %105 = getelementptr inbounds nuw i8, ptr %6, i64 8 store i64 1, ptr %105, align 8, !alias.scope !376, !noalias !379 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %106 = getelementptr inbounds nuw i8, ptr %6, i64 32 store ptr null, ptr %106, align 8, !alias.scope !376, !noalias !379 %107 = getelementptr inbounds nuw i8, ptr %6, i64 16 @@ -2287,7 +2306,7 @@ common.resume.i.i.i.i: ; preds = %96, %91, %18 ; Function Attrs: inlinehint nonlazybind uwtable define hidden void @_ZN3std9panicking3try7do_call17hcd08b37572b838b4E.llvm.15938600225882126526(ptr nocapture noundef readonly %0) unnamed_addr #0 { - %.sroa.0.0.copyload = load ptr, ptr %0, align 8, !nonnull !21, !noundef !21 + %.sroa.0.0.copyload = load ptr, ptr %0, align 8, !nonnull !21, !align !145, !noundef !21 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 %.sroa.2.0.copyload = load ptr, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -2382,6 +2401,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17h62f2722377e1d7bdE.llvm.1593 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -2406,6 +2426,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17h64fea79d41c49505E.llvm.1593 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -2430,6 +2451,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17h6dc27ea5a99a12ffE.llvm.1593 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -2454,6 +2476,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17h72a687ada05f02ebE.llvm.1593 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -2478,6 +2501,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17h952d18ce3c891fb0E.llvm.1593 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -2502,6 +2526,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17hd3abae0adfa24969E.llvm.1593 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -2526,6 +2551,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17hdd08640b2721034aE.llvm.1593 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -2550,6 +2576,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17he60d9bdc3083cf68E.llvm.1593 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -2574,6 +2601,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17hea1cd7674423a189E.llvm.1593 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -2598,6 +2626,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17hf819a6fedc6918a1E.llvm.1593 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -3459,6 +3488,7 @@ define hidden { i64, i32 } @_ZN4core4time8Duration3new17h5398fd37892c86d8E.llvm. store ptr @anon.0f4c0c09fe5df6088e9fdb7cb0c7e3e9.30, ptr %3, align 8 %10 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %10, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %11 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %11, align 8 %12 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -3640,7 +3670,7 @@ define hidden void @"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$ ret void } -; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: none) uwtable +; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: write) uwtable define hidden { ptr, ptr } @"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$15first_key_value17h2602c52c605d8b47E"(ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %0) unnamed_addr #17 { %2 = load ptr, ptr %0, align 8, !noundef !21 %3 = icmp eq ptr %2, null @@ -3671,6 +3701,8 @@ define hidden { ptr, ptr } @"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V 12: ; preds = %"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17h6b13411adc4d80c2E.exit" %13 = getelementptr inbounds nuw i8, ptr %.0.lcssa.i, i64 8 %14 = getelementptr inbounds nuw i8, ptr %.0.lcssa.i, i64 96 + call void @llvm.assume(i1 true) [ "align"(ptr %13, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %14, i64 8) ] br label %15 15: ; preds = %12, %"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17h6b13411adc4d80c2E.exit", %1 @@ -4049,33 +4081,38 @@ define hidden void @"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$ call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !658 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %11) - %35 = getelementptr inbounds { [8 x i64] }, ptr %.sroa.516.0.ph.i, i64 %.sroa.10.0.ph.i - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %11, ptr noundef nonnull align 8 dereferenceable(64) %35, i64 64, i1 false), !noalias !671 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %35, ptr noundef nonnull align 8 dereferenceable(64) %3, i64 64, i1 false) + %35 = getelementptr inbounds nuw i8, ptr %.sroa.516.0.ph.i, i64 712 + %36 = getelementptr inbounds i64, ptr %35, i64 %.sroa.10.0.ph.i + %37 = getelementptr inbounds { [8 x i64] }, ptr %.sroa.516.0.ph.i, i64 %.sroa.10.0.ph.i + call void @llvm.assume(i1 true) [ "align"(ptr %36, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %37, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %37, i64 8) ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %11, ptr noundef nonnull align 8 dereferenceable(64) %37, i64 64, i1 false), !noalias !671 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %37, ptr noundef nonnull align 8 dereferenceable(64) %3, i64 64, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %0, ptr noundef nonnull align 8 dereferenceable(64) %11, i64 64, i1 false) call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %11) br label %34 -36: ; preds = %37 +38: ; preds = %39 resume { ptr, i32 } %lpad.phi .loopexit: ; preds = %22, %20 %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %37 + br label %39 .loopexit.split-lp: ; preds = %14 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %37 + br label %39 -37: ; preds = %.loopexit.split-lp, %.loopexit +39: ; preds = %.loopexit.split-lp, %.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] invoke void @"_ZN4core3ptr58drop_in_place$LT$mini_lsm_mvcc..mvcc..CommittedTxnData$GT$17hfd1c1122fb69a84dE"(ptr noalias noundef nonnull align 8 dereferenceable(64) %3) #39 - to label %36 unwind label %38 + to label %38 unwind label %40 -38: ; preds = %37 - %39 = landingpad { ptr, i32 } +40: ; preds = %39 + %41 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #38 unreachable @@ -4178,6 +4215,7 @@ define hidden noundef align 8 dereferenceable_or_null(8) ptr @"_ZN5alloc11collec 25: ; preds = %.loopexit, %"_ZN5alloc11collections5btree6search142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$11search_tree17h5725e41fe6627412E.exit", %2 %.0 = phi ptr [ null, %2 ], [ %24, %.loopexit ], [ null, %"_ZN5alloc11collections5btree6search142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$11search_tree17h5725e41fe6627412E.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -7422,6 +7460,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h00b store ptr @anon.0f4c0c09fe5df6088e9fdb7cb0c7e3e9.40, ptr %3, align 8 %6 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %6, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %7 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %7, align 8 %8 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -7484,6 +7523,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h2c5 store ptr @anon.0f4c0c09fe5df6088e9fdb7cb0c7e3e9.40, ptr %3, align 8 %6 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %6, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %7 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %7, align 8 %8 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -7546,6 +7586,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hfce store ptr @anon.0f4c0c09fe5df6088e9fdb7cb0c7e3e9.40, ptr %3, align 8 %6 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %6, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %7 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %7, align 8 %8 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -8222,6 +8263,7 @@ define hidden noundef zeroext i1 @"_ZN69_$LT$anyhow..context..Quoted$LT$C$GT$$u2 store ptr @anon.0f4c0c09fe5df6088e9fdb7cb0c7e3e9.43, ptr %4, align 8, !alias.scope !1020, !noalias !1023 %9 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %9, align 8, !alias.scope !1020, !noalias !1023 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %10 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %10, align 8, !alias.scope !1020, !noalias !1023 %11 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -8318,6 +8360,7 @@ define internal { ptr, ptr } @"_ZN91_$LT$std..panicking..begin_panic..Payload$LT %2 = load ptr, ptr %0, align 8, !align !144, !noundef !21 %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load i64, ptr %3, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] store ptr null, ptr %0, align 8 %5 = icmp eq ptr %2, null br i1 %5, label %6, label %7 @@ -9152,7 +9195,7 @@ attributes #13 = { mustprogress nofree nounwind nonlazybind willreturn memory(re attributes #14 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #15 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #16 = { nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #17 = { nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #17 = { nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #18 = { inlinehint nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #19 = { alwaysinline nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #20 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } diff --git a/bench/mini-lsm-rs/optimized/5148wh4ru143gbx4.ll b/bench/mini-lsm-rs/optimized/5148wh4ru143gbx4.ll index a4706878b4c..1a14227da1e 100644 --- a/bench/mini-lsm-rs/optimized/5148wh4ru143gbx4.ll +++ b/bench/mini-lsm-rs/optimized/5148wh4ru143gbx4.ll @@ -86,6 +86,7 @@ define hidden noundef range(i64 1, 0) i64 @"_ZN17crossbeam_channel5waker17curren %6 = tail call noundef nonnull ptr @_ZN3std6thread7current17ha2f171abb653aba5E() store ptr %6, ptr %2, align 8 %7 = getelementptr inbounds nuw i8, ptr %6, i64 16 + call void @llvm.assume(i1 true) [ "align"(ptr %7, i64 8) ] %8 = load i64, ptr %7, align 8, !range !6, !noundef !5 %9 = atomicrmw sub ptr %6, i64 1 release, align 8, !noalias !7 %10 = icmp eq i64 %9, 1 @@ -213,6 +214,7 @@ default.unreachable: ; preds = %16 25: ; preds = %16 %26 = getelementptr i8, ptr %.val, i64 -1 + call void @llvm.assume(i1 true) [ "align"(ptr %26, i64 8) ] %27 = icmp ne ptr %26, null call void @llvm.assume(i1 %27) %28 = getelementptr i8, ptr %.val, i64 15 @@ -459,6 +461,7 @@ define hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZN3std3sys6commo %7 = tail call noundef nonnull ptr @_ZN3std6thread7current17ha2f171abb653aba5E(), !noalias !65 store ptr %7, ptr %3, align 8, !noalias !65 %8 = getelementptr inbounds nuw i8, ptr %7, i64 16 + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %9 = load i64, ptr %8, align 8, !range !6, !noalias !65, !noundef !5 %10 = atomicrmw sub ptr %7, i64 1 release, align 8, !noalias !68 %11 = icmp eq i64 %10, 1 @@ -563,6 +566,7 @@ __rust_try.llvm.3849484896252022153.exit: ; preds = %16 %23 = extractvalue { ptr, ptr } %19, 1 %24 = icmp ne ptr %22, null tail call void @llvm.assume(i1 %24) + call void @llvm.assume(i1 true) [ "align"(ptr %23, i64 8) ] %25 = icmp ne ptr %23, null tail call void @llvm.assume(i1 %25) br label %26 @@ -647,6 +651,7 @@ __rust_try.llvm.3849484896252022153.exit: ; preds = %.body.i.i.i.i %31 = extractvalue { ptr, ptr } %27, 1 %32 = icmp ne ptr %30, null tail call void @llvm.assume(i1 %32) + call void @llvm.assume(i1 true) [ "align"(ptr %31, i64 8) ] %33 = icmp ne ptr %31, null tail call void @llvm.assume(i1 %33) br label %35 @@ -707,6 +712,7 @@ define hidden { ptr, ptr } @_ZN3std9panicking3try17h8f6ca3c3441dc661E(ptr noalia %11 = extractvalue { ptr, ptr } %6, 1 %12 = icmp ne ptr %10, null tail call void @llvm.assume(i1 %12) + call void @llvm.assume(i1 true) [ "align"(ptr %11, i64 8) ] %13 = icmp ne ptr %11, null tail call void @llvm.assume(i1 %13) br label %15 @@ -770,6 +776,7 @@ __rust_try.llvm.3849484896252022153.exit: ; preds = %14 %21 = extractvalue { ptr, ptr } %17, 1 %22 = icmp ne ptr %20, null call void @llvm.assume(i1 %22) + call void @llvm.assume(i1 true) [ "align"(ptr %21, i64 8) ] %23 = icmp ne ptr %21, null call void @llvm.assume(i1 %23) br label %25 @@ -821,6 +828,7 @@ define hidden { ptr, ptr } @_ZN3std9panicking3try17hd72474424e89d8f2E(ptr noalia %11 = extractvalue { ptr, ptr } %6, 1 %12 = icmp ne ptr %10, null tail call void @llvm.assume(i1 %12) + call void @llvm.assume(i1 true) [ "align"(ptr %11, i64 8) ] %13 = icmp ne ptr %11, null tail call void @llvm.assume(i1 %13) br label %15 @@ -1025,6 +1033,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17h204d703b3a2eec67E.llvm.3849 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -1049,6 +1058,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17h32de238af32ca59aE.llvm.3849 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -1073,6 +1083,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17h7429fe27d0c770c2E.llvm.3849 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -1097,6 +1108,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17h8ba3499b963b2c3bE.llvm.3849 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -1121,6 +1133,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17ha3a9505a5293e78fE.llvm.3849 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -1145,6 +1158,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17hd6f3cfe49f5cc44aE.llvm.3849 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -1169,6 +1183,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17hffd4fc252b2cef6fE.llvm.3849 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -1571,6 +1586,7 @@ define hidden void @_ZN4moka3cht3map6bucket21defer_acquire_destroy17h49adfbb71c8 br i1 %8, label %11, label %9 9: ; preds = %6 + call void @llvm.assume(i1 true) [ "align"(ptr %7, i64 8) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3), !noalias !363 store ptr @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h8a54b3df7581d228E.llvm.8326862415837228122, ptr %3, align 8, !alias.scope !366, !noalias !363 %10 = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -1628,6 +1644,7 @@ define hidden void @_ZN4moka3cht3map6bucket21defer_acquire_destroy17h51a5ba65bdd br i1 %9, label %12, label %10 10: ; preds = %7 + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4), !noalias !393 store ptr @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h1c3b2a9ae5a8c1f7E.llvm.8326862415837228122, ptr %4, align 8, !alias.scope !396, !noalias !393 %11 = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -1667,6 +1684,7 @@ define hidden void @_ZN4moka3cht3map6bucket21defer_acquire_destroy17h931f407ff31 br i1 %8, label %11, label %9 9: ; preds = %6 + call void @llvm.assume(i1 true) [ "align"(ptr %7, i64 8) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3), !noalias !404 store ptr @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h9c23afbe38e9b007E.llvm.8326862415837228122, ptr %3, align 8, !alias.scope !407, !noalias !404 %10 = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -1724,6 +1742,7 @@ define hidden void @_ZN4moka3cht3map6bucket21defer_acquire_destroy17ha3ae156a769 br i1 %9, label %12, label %10 10: ; preds = %7 + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4), !noalias !434 store ptr @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h57815021457e51a0E.llvm.8326862415837228122, ptr %4, align 8, !alias.scope !437, !noalias !434 %11 = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -1763,6 +1782,7 @@ define hidden void @_ZN4moka3cht3map6bucket21defer_acquire_destroy17hddb910c8338 br i1 %8, label %11, label %9 9: ; preds = %6 + call void @llvm.assume(i1 true) [ "align"(ptr %7, i64 8) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3), !noalias !445 store ptr @_ZN15crossbeam_epoch8deferred8Deferred3new4call17hfa1f51e6150e2aecE.llvm.8326862415837228122, ptr %3, align 8, !alias.scope !448, !noalias !445 %10 = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -1821,6 +1841,7 @@ define hidden void @_ZN4moka3cht3map6bucket21defer_acquire_destroy17he64297c71ee br i1 %9, label %12, label %10 10: ; preds = %7 + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4), !noalias !478 store ptr @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h354e9ab2d45b9dd5E.llvm.8326862415837228122, ptr %4, align 8, !alias.scope !481, !noalias !478 %11 = getelementptr inbounds nuw i8, ptr %4, i64 8 diff --git a/bench/mini-lsm-rs/optimized/56vhdkxtzvzc0a1c.ll b/bench/mini-lsm-rs/optimized/56vhdkxtzvzc0a1c.ll index f03f6d03701..92636c97b90 100644 --- a/bench/mini-lsm-rs/optimized/56vhdkxtzvzc0a1c.ll +++ b/bench/mini-lsm-rs/optimized/56vhdkxtzvzc0a1c.ll @@ -42,6 +42,7 @@ define hidden noundef nonnull align 8 dereferenceable_or_null(8) ptr @"_ZN3std3s %7 = tail call noundef nonnull ptr @_ZN3std6thread7current17ha2f171abb653aba5E(), !noalias !10 store ptr %7, ptr %3, align 8, !noalias !10 %8 = getelementptr inbounds nuw i8, ptr %7, i64 16 + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %9 = load i64, ptr %8, align 8, !range !12, !noalias !10, !noundef !11 %10 = atomicrmw sub ptr %7, i64 1 release, align 8, !noalias !13 %11 = icmp eq i64 %10, 1 @@ -315,8 +316,8 @@ default.unreachable: ; preds = %6 call void @llvm.assume(i1 %23) br label %"_ZN3std3sys6common12thread_local10fast_local12Key$LT$T$GT$14try_initialize17hd0ffc9b095270f0cE.llvm.1533238098547642317.exit" -"_ZN3std3sys6common12thread_local10fast_local12Key$LT$T$GT$14try_initialize17hd0ffc9b095270f0cE.llvm.1533238098547642317.exit": ; preds = %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h0586d09cebdc4b41E.exit.i", %6, %2 - %.0 = phi ptr [ %5, %2 ], [ %5, %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h0586d09cebdc4b41E.exit.i" ], [ null, %6 ] +"_ZN3std3sys6common12thread_local10fast_local12Key$LT$T$GT$14try_initialize17hd0ffc9b095270f0cE.llvm.1533238098547642317.exit": ; preds = %2, %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h0586d09cebdc4b41E.exit.i", %6 + %.0 = phi ptr [ %5, %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h0586d09cebdc4b41E.exit.i" ], [ null, %6 ], [ %5, %2 ] ret ptr %.0 } @@ -395,8 +396,8 @@ default.unreachable: ; preds = %5 tail call void @llvm.assume(i1 %29) br label %"_ZN3std3sys6common12thread_local10fast_local12Key$LT$T$GT$14try_initialize17he6fc582a07496eb2E.llvm.1533238098547642317.exit" -"_ZN3std3sys6common12thread_local10fast_local12Key$LT$T$GT$14try_initialize17he6fc582a07496eb2E.llvm.1533238098547642317.exit": ; preds = %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h3ec88125a67883b3E.exit.i", %5, %2 - %.0 = phi ptr [ %4, %2 ], [ %4, %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h3ec88125a67883b3E.exit.i" ], [ null, %5 ] +"_ZN3std3sys6common12thread_local10fast_local12Key$LT$T$GT$14try_initialize17he6fc582a07496eb2E.llvm.1533238098547642317.exit": ; preds = %2, %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h3ec88125a67883b3E.exit.i", %5 + %.0 = phi ptr [ %4, %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h3ec88125a67883b3E.exit.i" ], [ null, %5 ], [ %4, %2 ] ret ptr %.0 } @@ -472,6 +473,7 @@ define hidden noundef nonnull align 8 dereferenceable_or_null(8) ptr @"_ZN3std3s %10 = tail call noundef nonnull ptr @_ZN3std6thread7current17ha2f171abb653aba5E(), !noalias !101 store ptr %10, ptr %3, align 8, !noalias !101 %11 = getelementptr inbounds nuw i8, ptr %10, i64 16 + call void @llvm.assume(i1 true) [ "align"(ptr %11, i64 8) ] %12 = load i64, ptr %11, align 8, !range !12, !noalias !101, !noundef !11 %13 = atomicrmw sub ptr %10, i64 1 release, align 8, !noalias !102 %14 = icmp eq i64 %13, 1 @@ -525,6 +527,7 @@ define internal void @_ZN3std3sys6common12thread_local10fast_local13destroy_valu store ptr @anon.f30f1c08c07e5db6070a4dccd6401c05.1, ptr %4, align 8, !alias.scope !115, !noalias !118 %10 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %10, align 8, !alias.scope !115, !noalias !118 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %11 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %11, align 8, !alias.scope !115, !noalias !118 %12 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -582,6 +585,7 @@ define internal void @_ZN3std3sys6common12thread_local10fast_local13destroy_valu store ptr @anon.f30f1c08c07e5db6070a4dccd6401c05.1, ptr %4, align 8, !alias.scope !124, !noalias !127 %10 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %10, align 8, !alias.scope !124, !noalias !127 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %11 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %11, align 8, !alias.scope !124, !noalias !127 %12 = getelementptr inbounds nuw i8, ptr %4, i64 16 diff --git a/bench/mini-lsm-rs/optimized/xb52qaqr7dfb8ti.ll b/bench/mini-lsm-rs/optimized/xb52qaqr7dfb8ti.ll index ce5e246a48c..266e64111b6 100644 --- a/bench/mini-lsm-rs/optimized/xb52qaqr7dfb8ti.ll +++ b/bench/mini-lsm-rs/optimized/xb52qaqr7dfb8ti.ll @@ -55,15 +55,15 @@ define hidden void @"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_intern %8 = getelementptr inbounds nuw i8, ptr %7, i64 2064 %9 = tail call noundef i64 @_ZN4core4sync6atomic11atomic_load17h568f0302a0a458e1E.llvm.16478127874811385373(ptr noundef nonnull align 8 %8, i8 noundef 2) %10 = and i64 %9, -8 - %11 = inttoptr i64 %10 to ptr - %12 = icmp eq i64 %10, 0 - br i1 %12, label %13, label %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit" + %11 = icmp eq i64 %10, 0 + br i1 %11, label %12, label %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit" -13: ; preds = %3 +12: ; preds = %3 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 0, i64 16, i1 false) br label %29 "_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit": ; preds = %3 + %13 = inttoptr i64 %10 to ptr %14 = tail call { i64, i64 } @_ZN4core4sync6atomic23atomic_compare_exchange17h0ff28c87a5c5938fE.llvm.16478127874811385373(ptr noundef nonnull align 8 %1, i64 noundef %5, i64 noundef %9, i8 noundef 1, i8 noundef 0), !noalias !4 %15 = extractvalue { i64, i64 } %14, 0 %trunc.i = trunc nuw i64 %15 to i1 @@ -86,6 +86,7 @@ define hidden void @"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_intern br i1 %23, label %26, label %24 24: ; preds = %21 + call void @llvm.assume(i1 true) [ "align"(ptr %22, i64 8) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4), !noalias !22 store ptr @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h72df1f35002c9adfE.llvm.8326862415837228122, ptr %4, align 8, !alias.scope !23, !noalias !22 %25 = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -99,10 +100,10 @@ define hidden void @"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_intern br label %27 27: ; preds = %26, %24 - %.sroa.44.8.copyload = load i64, ptr %11, align 8, !noalias !35 - %.sroa.7.8..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 8 + %.sroa.44.8.copyload = load i64, ptr %13, align 8, !noalias !35 + %.sroa.7.8..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 8 %.sroa.7.8.copyload = load i64, ptr %.sroa.7.8..sroa_idx, align 8, !noalias !35 - %.sroa.8.8..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 16 + %.sroa.8.8..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 16 tail call void @llvm.experimental.noalias.scope.decl(metadata !36) %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sroa.44.8.copyload, ptr %28, align 8, !alias.scope !39 @@ -117,7 +118,7 @@ define hidden void @"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_intern store i64 %storemerge.i3, ptr %0, align 8, !alias.scope !41, !noalias !36 br label %29 -29: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13b35fcad657c9e9E.llvm.11765080855088437741.exit", %13 +29: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h13b35fcad657c9e9E.llvm.11765080855088437741.exit", %12 ret void } @@ -155,6 +156,7 @@ define hidden void @"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_intern br i1 %25, label %28, label %26 26: ; preds = %21 + call void @llvm.assume(i1 true) [ "align"(ptr %24, i64 8) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4), !noalias !47 store ptr @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h72df1f35002c9adfE.llvm.8326862415837228122, ptr %4, align 8, !alias.scope !50, !noalias !47 %27 = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -199,28 +201,27 @@ define hidden void @"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$7try_pop17hc .lr.ph.preheader: ; preds = %3 %12 = tail call { i64, i64 } @_ZN4core4sync6atomic23atomic_compare_exchange17h0ff28c87a5c5938fE.llvm.16478127874811385373(ptr noundef nonnull align 8 %1, i64 noundef %5, i64 noundef %9, i8 noundef 1, i8 noundef 0), !noalias !65 %13 = extractvalue { i64, i64 } %12, 0 - %switch.i2.i63 = icmp eq i64 %13, 0 - br i1 %switch.i2.i63, label %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit.thread", label %"_ZN4core3ptr124drop_in_place$LT$core..result..Result$LT$core..option..Option$LT$crossbeam_epoch..internal..SealedBag$GT$$C$$LP$$RP$$GT$$GT$17he92facb1d6cbfdccE.llvm.11765080855088437741.exit" + %switch.i2.i46 = icmp eq i64 %13, 0 + br i1 %switch.i2.i46, label %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit.thread", label %"_ZN4core3ptr124drop_in_place$LT$core..result..Result$LT$core..option..Option$LT$crossbeam_epoch..internal..SealedBag$GT$$C$$LP$$RP$$GT$$GT$17he92facb1d6cbfdccE.llvm.11765080855088437741.exit" .lr.ph: ; preds = %"_ZN4core3ptr124drop_in_place$LT$core..result..Result$LT$core..option..Option$LT$crossbeam_epoch..internal..SealedBag$GT$$C$$LP$$RP$$GT$$GT$17he92facb1d6cbfdccE.llvm.11765080855088437741.exit" - %14 = tail call { i64, i64 } @_ZN4core4sync6atomic23atomic_compare_exchange17h0ff28c87a5c5938fE.llvm.16478127874811385373(ptr noundef nonnull align 8 %1, i64 noundef %27, i64 noundef %31, i8 noundef 1, i8 noundef 0), !noalias !65 + %14 = tail call { i64, i64 } @_ZN4core4sync6atomic23atomic_compare_exchange17h0ff28c87a5c5938fE.llvm.16478127874811385373(ptr noundef nonnull align 8 %1, i64 noundef %29, i64 noundef %33, i8 noundef 1, i8 noundef 0), !noalias !65 %15 = extractvalue { i64, i64 } %14, 0 %switch.i2.i = icmp eq i64 %15, 0 br i1 %switch.i2.i, label %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit.thread", label %"_ZN4core3ptr124drop_in_place$LT$core..result..Result$LT$core..option..Option$LT$crossbeam_epoch..internal..SealedBag$GT$$C$$LP$$RP$$GT$$GT$17he92facb1d6cbfdccE.llvm.11765080855088437741.exit" "_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit.thread": ; preds = %.lr.ph, %.lr.ph.preheader - %.lcssa61 = phi i64 [ %10, %.lr.ph.preheader ], [ %32, %.lr.ph ] - %.lcssa59 = phi i64 [ %9, %.lr.ph.preheader ], [ %31, %.lr.ph ] - %.lcssa57 = phi ptr [ %7, %.lr.ph.preheader ], [ %29, %.lr.ph ] - %.lcssa = phi i64 [ %5, %.lr.ph.preheader ], [ %27, %.lr.ph ] - %16 = inttoptr i64 %.lcssa61 to ptr + %.038.lcssa = phi i64 [ %9, %.lr.ph.preheader ], [ %33, %.lr.ph ] + %.0.lcssa = phi i64 [ %5, %.lr.ph.preheader ], [ %29, %.lr.ph ] + %.lcssa = phi i64 [ %10, %.lr.ph.preheader ], [ %34, %.lr.ph ] + %16 = inttoptr i64 %.lcssa to ptr %17 = getelementptr inbounds nuw i8, ptr %1, i64 128 %18 = tail call noundef i64 @_ZN4core4sync6atomic11atomic_load17h568f0302a0a458e1E.llvm.16478127874811385373(ptr noundef nonnull align 8 %17, i8 noundef 0), !noalias !69 - %19 = icmp eq i64 %.lcssa, %18 + %19 = icmp eq i64 %.0.lcssa, %18 br i1 %19, label %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit.i.i", label %21 "_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit.i.i": ; preds = %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit.thread" - %20 = tail call { i64, i64 } @_ZN4core4sync6atomic23atomic_compare_exchange17h0ff28c87a5c5938fE.llvm.16478127874811385373(ptr noundef nonnull align 8 %17, i64 noundef %.lcssa, i64 noundef %.lcssa59, i8 noundef 1, i8 noundef 0), !noalias !77 + %20 = tail call { i64, i64 } @_ZN4core4sync6atomic23atomic_compare_exchange17h0ff28c87a5c5938fE.llvm.16478127874811385373(ptr noundef nonnull align 8 %17, i64 noundef %.0.lcssa, i64 noundef %.038.lcssa, i8 noundef 1, i8 noundef 0), !noalias !77 br label %21 21: ; preds = %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit.i.i", %"_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit.thread" @@ -230,16 +231,19 @@ define hidden void @"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$7try_pop17hc br i1 %23, label %26, label %24 24: ; preds = %21 + call void @llvm.assume(i1 true) [ "align"(ptr %22, i64 8) ], !noalias !83 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4), !noalias !84 store ptr @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h72df1f35002c9adfE.llvm.8326862415837228122, ptr %4, align 8, !alias.scope !85, !noalias !84 %25 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store i64 %.lcssa, ptr %25, align 8, !alias.scope !85, !noalias !84 + store i64 %.0.lcssa, ptr %25, align 8, !alias.scope !85, !noalias !84 call void @_ZN15crossbeam_epoch8internal5Local5defer17h63f66b08c2fc0a6aE(ptr noundef nonnull align 8 %22, ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %2), !noalias !69 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4), !noalias !84 br label %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal17h198811e5efa53918E.llvm.11765080855088437741.exit.thread31" 26: ; preds = %21 - tail call void @__rust_dealloc(ptr noundef nonnull %.lcssa57, i64 noundef 2072, i64 noundef 8) #22, !noalias !88 + %27 = and i64 %.0.lcssa, -8 + %28 = inttoptr i64 %27 to ptr + tail call void @__rust_dealloc(ptr noundef nonnull %28, i64 noundef 2072, i64 noundef 8) #22, !noalias !88 br label %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal17h198811e5efa53918E.llvm.11765080855088437741.exit.thread31" "_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal17h198811e5efa53918E.llvm.11765080855088437741.exit.thread31": ; preds = %24, %26 @@ -264,14 +268,14 @@ define hidden void @"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$7try_pop17hc "_ZN4core3ptr124drop_in_place$LT$core..result..Result$LT$core..option..Option$LT$crossbeam_epoch..internal..SealedBag$GT$$C$$LP$$RP$$GT$$GT$17he92facb1d6cbfdccE.llvm.11765080855088437741.exit": ; preds = %.lr.ph.preheader, %.lr.ph call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %.sroa.12) call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %.sroa.12) - %27 = tail call noundef i64 @_ZN4core4sync6atomic11atomic_load17h568f0302a0a458e1E.llvm.16478127874811385373(ptr noundef nonnull align 128 %1, i8 noundef 2), !noalias !98 - %28 = and i64 %27, -8 - %29 = inttoptr i64 %28 to ptr - %30 = getelementptr inbounds nuw i8, ptr %29, i64 2064 - %31 = tail call noundef i64 @_ZN4core4sync6atomic11atomic_load17h568f0302a0a458e1E.llvm.16478127874811385373(ptr noundef nonnull align 8 %30, i8 noundef 2), !noalias !98 - %32 = and i64 %31, -8 - %33 = icmp eq i64 %32, 0 - br i1 %33, label %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal17h198811e5efa53918E.llvm.11765080855088437741.exit.thread", label %.lr.ph + %29 = tail call noundef i64 @_ZN4core4sync6atomic11atomic_load17h568f0302a0a458e1E.llvm.16478127874811385373(ptr noundef nonnull align 128 %1, i8 noundef 2), !noalias !98 + %30 = and i64 %29, -8 + %31 = inttoptr i64 %30 to ptr + %32 = getelementptr inbounds nuw i8, ptr %31, i64 2064 + %33 = tail call noundef i64 @_ZN4core4sync6atomic11atomic_load17h568f0302a0a458e1E.llvm.16478127874811385373(ptr noundef nonnull align 8 %32, i8 noundef 2), !noalias !98 + %34 = and i64 %33, -8 + %35 = icmp eq i64 %34, 0 + br i1 %35, label %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal17h198811e5efa53918E.llvm.11765080855088437741.exit.thread", label %.lr.ph } ; Function Attrs: nonlazybind uwtable @@ -1656,6 +1660,7 @@ define hidden noundef zeroext i1 @"_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..D .lr.ph.i: ; preds = %3, %.lr.ph.i %.sroa.0.05.i = phi ptr [ %8, %.lr.ph.i ], [ %0, %3 ] %8 = getelementptr inbounds nuw i8, ptr %.sroa.0.05.i, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.05.i, i64 8) ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4), !noalias !393 store ptr %.sroa.0.05.i, ptr %4, align 8, !noalias !393 %9 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList5entry17h2ed5a4f4153b90ddE(ptr noalias noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 1 %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.507d6b838e4184e17733202c53733773.9.llvm.16478127874811385373) @@ -1664,6 +1669,7 @@ define hidden noundef zeroext i1 @"_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..D br i1 %10, label %_ZN4core3fmt8builders9DebugList7entries17h971d23bc5774ba21E.exit, label %.lr.ph.i _ZN4core3fmt8builders9DebugList7entries17h971d23bc5774ba21E.exit: ; preds = %.lr.ph.i, %3 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %11 = call noundef zeroext i1 @_ZN4core3fmt8builders9DebugList6finish17hadbed7078d8807f7E(ptr noalias noundef nonnull align 8 dereferenceable(16) %5) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) ret i1 %11 @@ -2727,9 +2733,9 @@ define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17h989e71332ba1de71 br i1 %trunc, label %31, label %6 6: ; preds = %3 - %.sroa.0.0.copyload = load ptr, ptr %2, align 8, !nonnull !21, !noundef !21 + %.sroa.0.0.copyload = load ptr, ptr %2, align 8, !nonnull !21, !align !42, !noundef !21 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 - %.sroa.4.0.copyload = load ptr, ptr %.sroa.4.0..sroa_idx, align 8, !nonnull !21, !noundef !21 + %.sroa.4.0.copyload = load ptr, ptr %.sroa.4.0..sroa_idx, align 8, !nonnull !21, !align !42, !noundef !21 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 16 %.sroa.5.0.copyload = load ptr, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 24 @@ -2739,6 +2745,7 @@ define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17h989e71332ba1de71 %7 = load ptr, ptr %.sroa.0.0.copyload, align 8, !noalias !681, !nonnull !21, !align !43, !noundef !21 %8 = getelementptr inbounds nuw i8, ptr %7, i64 128 %9 = tail call noundef i64 @_ZN4core4sync6atomic11atomic_load17h568f0302a0a458e1E.llvm.16478127874811385373(ptr noundef nonnull align 8 %8, i8 noundef 0), !noalias !681 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.5.0.copyload, i64 8) ] %10 = icmp ne ptr %.sroa.5.0.copyload, null tail call void @llvm.assume(i1 %10) %11 = load i64, ptr %.sroa.5.0.copyload, align 8, !noalias !681, !noundef !21 @@ -2748,6 +2755,7 @@ define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17h989e71332ba1de71 "_ZN15crossbeam_epoch6atomic15Atomic$LT$T$GT$16compare_exchange17h071626a54c9b46c1E.exit.i": ; preds = %6 %13 = load ptr, ptr %.sroa.0.0.copyload, align 8, !noalias !681, !nonnull !21, !align !43, !noundef !21 %14 = getelementptr inbounds nuw i8, ptr %13, i64 128 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.6.0.copyload, i64 8) ] %15 = icmp ne ptr %.sroa.6.0.copyload, null tail call void @llvm.assume(i1 %15) %16 = load i64, ptr %.sroa.6.0.copyload, align 8, !noalias !681, !noundef !21 @@ -2764,6 +2772,7 @@ define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17h989e71332ba1de71 br i1 %22, label %25, label %23 23: ; preds = %18 + call void @llvm.assume(i1 true) [ "align"(ptr %21, i64 8) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4), !noalias !691 store ptr @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h72df1f35002c9adfE.llvm.8326862415837228122, ptr %4, align 8, !alias.scope !692, !noalias !691 %24 = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -2779,6 +2788,7 @@ define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17h989e71332ba1de71 br label %"_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal28_$u7b$$u7b$closure$u7d$$u7d$17h76bedb52c0ed91c3E.llvm.11765080855088437741.exit" "_ZN15crossbeam_epoch4sync5queue14Queue$LT$T$GT$12pop_internal28_$u7b$$u7b$closure$u7d$$u7d$17h76bedb52c0ed91c3E.llvm.11765080855088437741.exit": ; preds = %23, %25 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.7.0.copyload, i64 8) ] %28 = icmp ne ptr %.sroa.7.0.copyload, null tail call void @llvm.assume(i1 %28) %29 = load ptr, ptr %.sroa.7.0.copyload, align 8, !noalias !681, !nonnull !21, !align !42, !noundef !21 diff --git a/bench/mio-rs/optimized/2tcmneiv71cgky1q.ll b/bench/mio-rs/optimized/2tcmneiv71cgky1q.ll index 79d9bae8937..33ba09771bb 100644 --- a/bench/mio-rs/optimized/2tcmneiv71cgky1q.ll +++ b/bench/mio-rs/optimized/2tcmneiv71cgky1q.ll @@ -78,6 +78,7 @@ define noundef zeroext i1 @"_ZN60_$LT$mio..interest..Interest$u20$as$u20$core..f store ptr @anon.6b4dc23c7395d1f1cc15e09a0889240a.1, ptr %7, align 8 %11 = getelementptr inbounds nuw i8, ptr %7, i64 8 store i64 1, ptr %11, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %12 = getelementptr inbounds nuw i8, ptr %7, i64 32 store ptr null, ptr %12, align 8 %13 = getelementptr inbounds nuw i8, ptr %7, i64 16 @@ -109,6 +110,7 @@ define noundef zeroext i1 @"_ZN60_$LT$mio..interest..Interest$u20$as$u20$core..f store ptr @anon.6b4dc23c7395d1f1cc15e09a0889240a.6, ptr %5, align 8 %23 = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 1, ptr %23, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %24 = getelementptr inbounds nuw i8, ptr %5, i64 32 store ptr null, ptr %24, align 8 %25 = getelementptr inbounds nuw i8, ptr %5, i64 16 @@ -124,6 +126,7 @@ define noundef zeroext i1 @"_ZN60_$LT$mio..interest..Interest$u20$as$u20$core..f store ptr @anon.6b4dc23c7395d1f1cc15e09a0889240a.4, ptr %6, align 8 %29 = getelementptr inbounds nuw i8, ptr %6, i64 8 store i64 1, ptr %29, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %30 = getelementptr inbounds nuw i8, ptr %6, i64 32 store ptr null, ptr %30, align 8 %31 = getelementptr inbounds nuw i8, ptr %6, i64 16 @@ -143,6 +146,7 @@ define noundef zeroext i1 @"_ZN60_$LT$mio..interest..Interest$u20$as$u20$core..f store ptr @anon.6b4dc23c7395d1f1cc15e09a0889240a.8, ptr %3, align 8 %37 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %37, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %38 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %38, align 8 %39 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -158,6 +162,7 @@ define noundef zeroext i1 @"_ZN60_$LT$mio..interest..Interest$u20$as$u20$core..f store ptr @anon.6b4dc23c7395d1f1cc15e09a0889240a.4, ptr %4, align 8 %43 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %43, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %44 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %44, align 8 %45 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -182,9 +187,13 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #3 + attributes #0 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #3 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/mitsuba3/optimized/emitter.cpp.ll b/bench/mitsuba3/optimized/emitter.cpp.ll index 1238a7584ff..29ec1baf285 100644 --- a/bench/mitsuba3/optimized/emitter.cpp.ll +++ b/bench/mitsuba3/optimized/emitter.cpp.ll @@ -115,13 +115,13 @@ define weak_odr void @_ZN7mitsuba7EmitterIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm to label %_ZN7mitsuba17TraversalCallback13put_parameterIfEEvRKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEERT_j.exit unwind label %8 _ZN7mitsuba17TraversalCallback13put_parameterIfEEvRKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEERT_j.exit: ; preds = %2 - call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #9 + call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8 ret void 8: ; preds = %2 %9 = landingpad { ptr, i32 } cleanup - call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #9 + call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8 resume { ptr, i32 } %9 } @@ -158,7 +158,7 @@ define weak_odr noundef zeroext i1 @_ZNK7mitsuba7EmitterIfN5drjit6MatrixINS_8Spe ; Function Attrs: mustprogress uwtable define weak_odr noundef ptr @_ZN7mitsuba7EmitterIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEEnwEm(i64 noundef %0) local_unnamed_addr #0 comdat align 2 { - %2 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %0) #10 + %2 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %0) #9 ret ptr %2 } @@ -167,34 +167,30 @@ declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #4 ; Function Attrs: mustprogress uwtable define weak_odr noundef ptr @_ZN7mitsuba7EmitterIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEEnwEmSt11align_val_t(i64 noundef %0, i64 noundef %1) local_unnamed_addr #0 comdat align 2 { - %3 = tail call noalias noundef nonnull ptr @_ZnwmSt11align_val_t(i64 noundef %0, i64 noundef %1) #10 - call void @llvm.assume(i1 true) [ "align"(ptr %3, i64 %1) ] + %3 = tail call noalias noundef nonnull ptr @_ZnwmSt11align_val_t(i64 noundef %0, i64 noundef %1) #9 ret ptr %3 } ; Function Attrs: nobuiltin allocsize(0) declare noundef nonnull ptr @_ZnwmSt11align_val_t(i64 noundef, i64 noundef) local_unnamed_addr #4 -; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #5 - ; Function Attrs: mustprogress nounwind uwtable define weak_odr void @_ZN7mitsuba7EmitterIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEEdlEPv(ptr noundef %0) local_unnamed_addr #1 comdat align 2 { - tail call void @_ZdlPv(ptr noundef %0) #9 + tail call void @_ZdlPv(ptr noundef %0) #8 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPv(ptr noundef) local_unnamed_addr #6 +declare void @_ZdlPv(ptr noundef) local_unnamed_addr #5 ; Function Attrs: mustprogress nounwind uwtable define weak_odr void @_ZN7mitsuba7EmitterIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEEdlEPvSt11align_val_t(ptr noundef %0, i64 noundef %1) local_unnamed_addr #1 comdat align 2 { - tail call void @_ZdlPvSt11align_val_t(ptr noundef %0, i64 noundef %1) #9 + tail call void @_ZdlPvSt11align_val_t(ptr noundef %0, i64 noundef %1) #8 ret void } ; Function Attrs: nobuiltin nounwind -declare void @_ZdlPvSt11align_val_t(ptr noundef, i64 noundef) local_unnamed_addr #6 +declare void @_ZdlPvSt11align_val_t(ptr noundef, i64 noundef) local_unnamed_addr #5 ; Function Attrs: mustprogress nounwind uwtable define weak_odr noundef ptr @_ZNK7mitsuba7EmitterIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEE6class_Ev(ptr noundef nonnull align 16 dereferenceable(201) %0) unnamed_addr #1 comdat align 2 { @@ -203,7 +199,7 @@ define weak_odr noundef ptr @_ZNK7mitsuba7EmitterIfN5drjit6MatrixINS_8SpectrumIf } ; Function Attrs: uwtable -define internal void @__cxx_global_var_init() #7 section ".text.startup" comdat($_ZN7mitsuba7EmitterIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEE7m_classE) personality ptr @__gxx_personality_v0 { +define internal void @__cxx_global_var_init() #6 section ".text.startup" comdat($_ZN7mitsuba7EmitterIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEE7m_classE) personality ptr @__gxx_personality_v0 { %1 = alloca %"class.std::__1::basic_string", align 8 %2 = alloca %"class.std::__1::basic_string", align 8 %3 = alloca %"class.std::__1::basic_string", align 8 @@ -216,7 +212,7 @@ define internal void @__cxx_global_var_init() #7 section ".text.startup" comdat( 9: ; preds = %0 store i8 1, ptr @_ZGVN7mitsuba7EmitterIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEE7m_classE, align 8 - %10 = tail call noalias noundef nonnull dereferenceable(208) ptr @_Znwm(i64 noundef 208) #11 + %10 = tail call noalias noundef nonnull dereferenceable(208) ptr @_Znwm(i64 noundef 208) #10 invoke void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull @.str.1, i64 noundef 7) to label %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ILi0EEEPKc.exit unwind label %27 @@ -241,7 +237,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ILi0E to label %13 unwind label %34 13: ; preds = %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ILi0EEEPKc.exit12 - call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9 + call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8 %14 = load ptr, ptr %12, align 16 %15 = icmp eq ptr %14, %5 br i1 %15, label %.sink.split.i.i, label %16 @@ -255,7 +251,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ILi0E %17 = load ptr, ptr %14, align 8 %18 = getelementptr inbounds nuw i8, ptr %17, i64 %.sink2.i.i %19 = load ptr, ptr %18, align 8 - call void %19(ptr noundef nonnull align 8 dereferenceable(8) %14) #9 + call void %19(ptr noundef nonnull align 8 dereferenceable(8) %14) #8 br label %_ZNSt3__18functionIFPN7mitsuba6ObjectEPNS1_6StreamEEED2Ev.exit _ZNSt3__18functionIFPN7mitsuba6ObjectEPNS1_6StreamEEED2Ev.exit: ; preds = %16, %.sink.split.i.i @@ -272,13 +268,13 @@ _ZNSt3__18functionIFPN7mitsuba6ObjectEPNS1_6StreamEEED2Ev.exit: ; preds = %16, % %23 = load ptr, ptr %20, align 8 %24 = getelementptr inbounds nuw i8, ptr %23, i64 %.sink2.i.i15 %25 = load ptr, ptr %24, align 8 - call void %25(ptr noundef nonnull align 8 dereferenceable(8) %20) #9 + call void %25(ptr noundef nonnull align 8 dereferenceable(8) %20) #8 br label %_ZNSt3__18functionIFPN7mitsuba6ObjectERKNS1_10PropertiesEEED2Ev.exit _ZNSt3__18functionIFPN7mitsuba6ObjectERKNS1_10PropertiesEEED2Ev.exit: ; preds = %22, %.sink.split.i.i14 - call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #9 - call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #9 - call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %1) #9 + call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8 + call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #8 + call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %1) #8 store ptr %10, ptr @_ZN7mitsuba7EmitterIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEE7m_classE, align 8 br label %26 @@ -308,7 +304,7 @@ _ZNSt3__18functionIFPN7mitsuba6ObjectERKNS1_10PropertiesEEED2Ev.exit: ; preds = 34: ; preds = %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ILi0EEEPKc.exit12 %35 = landingpad { ptr, i32 } cleanup - call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9 + call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8 %.pre = load ptr, ptr %12, align 16 %36 = icmp eq ptr %.pre, %5 br i1 %36, label %.sink.split.i.i17, label %37 @@ -322,7 +318,7 @@ _ZNSt3__18functionIFPN7mitsuba6ObjectERKNS1_10PropertiesEEED2Ev.exit: ; preds = %38 = load ptr, ptr %.pre, align 8 %39 = getelementptr inbounds nuw i8, ptr %38, i64 %.sink2.i.i18 %40 = load ptr, ptr %39, align 8 - call void %40(ptr noundef nonnull align 8 dereferenceable(8) %.pre) #9 + call void %40(ptr noundef nonnull align 8 dereferenceable(8) %.pre) #8 br label %_ZNSt3__18functionIFPN7mitsuba6ObjectEPNS1_6StreamEEED2Ev.exit19 _ZNSt3__18functionIFPN7mitsuba6ObjectEPNS1_6StreamEEED2Ev.exit19: ; preds = %.thread28, %37, %.sink.split.i.i17 @@ -340,26 +336,26 @@ _ZNSt3__18functionIFPN7mitsuba6ObjectEPNS1_6StreamEEED2Ev.exit19: ; preds = %.th %44 = load ptr, ptr %41, align 8 %45 = getelementptr inbounds nuw i8, ptr %44, i64 %.sink2.i.i22 %46 = load ptr, ptr %45, align 8 - call void %46(ptr noundef nonnull align 8 dereferenceable(8) %41) #9 + call void %46(ptr noundef nonnull align 8 dereferenceable(8) %41) #8 br label %_ZNSt3__18functionIFPN7mitsuba6ObjectERKNS1_10PropertiesEEED2Ev.exit23 _ZNSt3__18functionIFPN7mitsuba6ObjectERKNS1_10PropertiesEEED2Ev.exit23: ; preds = %43, %.sink.split.i.i21 - call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #9 + call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8 br label %47 47: ; preds = %_ZNSt3__18functionIFPN7mitsuba6ObjectERKNS1_10PropertiesEEED2Ev.exit23, %31 %.pn.pn = phi { ptr, i32 } [ %.pn25, %_ZNSt3__18functionIFPN7mitsuba6ObjectERKNS1_10PropertiesEEED2Ev.exit23 ], [ %32, %31 ] - call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #9 + call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #8 br label %48 48: ; preds = %47, %29 %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %47 ], [ %30, %29 ] - call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %1) #9 + call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %1) #8 br label %49 49: ; preds = %27, %48 %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %48 ], [ %28, %27 ] - call void @_ZdlPv(ptr noundef nonnull %10) #12 + call void @_ZdlPv(ptr noundef nonnull %10) #11 resume { ptr, i32 } %.pn.pn.pn.pn } @@ -384,7 +380,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ILi0E 7: ; preds = %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ILi0EEEPKc.exit %8 = getelementptr inbounds nuw i8, ptr %0, i64 196 store float %6, ptr %8, align 4 - call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #9 + call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8 ret void 9: ; preds = %2 @@ -395,12 +391,12 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ILi0E 11: ; preds = %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2B8ne190000ILi0EEEPKc.exit %12 = landingpad { ptr, i32 } cleanup - call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #9 + call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8 br label %13 13: ; preds = %11, %9 %.pn = phi { ptr, i32 } [ %12, %11 ], [ %10, %9 ] - call void @_ZN7mitsuba8EndpointIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEED2Ev(ptr noundef nonnull align 16 dereferenceable(192) %0) #9 + call void @_ZN7mitsuba8EndpointIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEED2Ev(ptr noundef nonnull align 16 dereferenceable(192) %0) #8 resume { ptr, i32 } %.pn } @@ -413,18 +409,18 @@ declare void @_ZN7mitsuba8EndpointIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEED2 ; Function Attrs: mustprogress nounwind uwtable define weak_odr void @_ZN7mitsuba7EmitterIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEED2Ev(ptr noundef nonnull align 16 dereferenceable(201) %0) unnamed_addr #1 comdat($_ZN7mitsuba7EmitterIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEED5Ev) align 2 { - tail call void @_ZN7mitsuba8EndpointIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEED2Ev(ptr noundef nonnull align 16 dereferenceable(192) %0) #9 + tail call void @_ZN7mitsuba8EndpointIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEED2Ev(ptr noundef nonnull align 16 dereferenceable(192) %0) #8 ret void } ; Function Attrs: mustprogress nounwind uwtable define weak_odr void @_ZN7mitsuba7EmitterIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEED0Ev(ptr noundef nonnull align 16 dereferenceable(201) %0) unnamed_addr #1 comdat($_ZN7mitsuba7EmitterIfN5drjit6MatrixINS_8SpectrumIfLm4EEELm4EEEED5Ev) align 2 { - tail call void @llvm.trap() #13 + tail call void @llvm.trap() #12 unreachable } ; Function Attrs: cold noreturn nounwind memory(inaccessiblemem: write) -declare void @llvm.trap() #8 +declare void @llvm.trap() #7 declare void @_ZNK7mitsuba6Object6expandEv() unnamed_addr @@ -467,15 +463,14 @@ attributes #1 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-ccmp,-cf,-cldemote,-clwb,-clzero,-cmpccxadd,-egpr,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-ndd,-pconfig,-ppx,-prefetchi,-prefetchwt1,-ptwrite,-push2pop2,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #3 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-ccmp,-cf,-cldemote,-clwb,-clzero,-cmpccxadd,-egpr,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-ndd,-pconfig,-ppx,-prefetchi,-prefetchwt1,-ptwrite,-push2pop2,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-ccmp,-cf,-cldemote,-clwb,-clzero,-cmpccxadd,-egpr,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-ndd,-pconfig,-ppx,-prefetchi,-prefetchwt1,-ptwrite,-push2pop2,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } -attributes #5 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #6 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-ccmp,-cf,-cldemote,-clwb,-clzero,-cmpccxadd,-egpr,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-ndd,-pconfig,-ppx,-prefetchi,-prefetchwt1,-ptwrite,-push2pop2,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } -attributes #7 = { uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-ccmp,-cf,-cldemote,-clwb,-clzero,-cmpccxadd,-egpr,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-ndd,-pconfig,-ppx,-prefetchi,-prefetchwt1,-ptwrite,-push2pop2,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } -attributes #8 = { cold noreturn nounwind memory(inaccessiblemem: write) } -attributes #9 = { nounwind } -attributes #10 = { allocsize(0) } -attributes #11 = { builtin allocsize(0) } -attributes #12 = { builtin nounwind } -attributes #13 = { noreturn nounwind } +attributes #5 = { nobuiltin nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-ccmp,-cf,-cldemote,-clwb,-clzero,-cmpccxadd,-egpr,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-ndd,-pconfig,-ppx,-prefetchi,-prefetchwt1,-ptwrite,-push2pop2,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } +attributes #6 = { uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-ccmp,-cf,-cldemote,-clwb,-clzero,-cmpccxadd,-egpr,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-ndd,-pconfig,-ppx,-prefetchi,-prefetchwt1,-ptwrite,-push2pop2,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } +attributes #7 = { cold noreturn nounwind memory(inaccessiblemem: write) } +attributes #8 = { nounwind } +attributes #9 = { allocsize(0) } +attributes #10 = { builtin allocsize(0) } +attributes #11 = { builtin nounwind } +attributes #12 = { noreturn nounwind } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/mitsuba3/optimized/properties.cpp.ll b/bench/mitsuba3/optimized/properties.cpp.ll index a992deaba70..8f57be4aa12 100644 --- a/bench/mitsuba3/optimized/properties.cpp.ll +++ b/bench/mitsuba3/optimized/properties.cpp.ll @@ -9133,7 +9133,6 @@ define linkonce_odr hidden { ptr, i8 } @_ZNSt3__16__treeINS_12__value_typeINS_12 call void @llvm.experimental.noalias.scope.decl(metadata !78) %12 = getelementptr inbounds nuw i8, ptr %0, i64 8 %13 = call noalias noundef nonnull align 32 dereferenceable(384) ptr @_ZnwmSt11align_val_t(i64 noundef 384, i64 noundef 32) #29, !noalias !78 - call void @llvm.assume(i1 true) [ "align"(ptr %13, i64 32) ] store ptr %13, ptr %7, align 8, !alias.scope !78 %14 = getelementptr inbounds nuw i8, ptr %7, i64 8 store ptr %12, ptr %14, align 8, !alias.scope !78 @@ -10532,7 +10531,6 @@ define linkonce_odr hidden ptr @_ZNSt3__16__treeINS_12__value_typeINS_12basic_st tail call void @llvm.experimental.noalias.scope.decl(metadata !92) %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 %5 = tail call noalias noundef nonnull align 32 dereferenceable(384) ptr @_ZnwmSt11align_val_t(i64 noundef 384, i64 noundef 32) #29, !noalias !92 - call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 32) ] store ptr %5, ptr %3, align 8, !alias.scope !92 %6 = getelementptr inbounds nuw i8, ptr %3, i64 8 store ptr %4, ptr %6, align 8, !alias.scope !92 @@ -12258,7 +12256,6 @@ _ZNSt3__16__treeINS_12__value_typeINS_12basic_stringIcNS_11char_traitsIcEENS_9al %.sink.i14 = phi ptr [ %.024.i, %_ZNSt3__16__treeINS_12__value_typeINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEN7mitsuba5EntryEEENS_19__map_value_compareIS7_SA_NS8_7SortKeyELb1EEENS5_ISA_EEE12__find_equalIS7_EERPNS_16__tree_node_baseIPvEERPNS_15__tree_end_nodeISK_EERKT_.exit ], [ %7, %5 ], [ %.024.i, %13 ], [ %.024.i, %17 ] tail call void @llvm.experimental.noalias.scope.decl(metadata !102) %21 = tail call noalias noundef nonnull align 32 dereferenceable(384) ptr @_ZnwmSt11align_val_t(i64 noundef 384, i64 noundef 32) #29, !noalias !102 - call void @llvm.assume(i1 true) [ "align"(ptr %21, i64 32) ] store ptr %21, ptr %6, align 8, !alias.scope !102 %22 = getelementptr inbounds nuw i8, ptr %6, i64 8 store ptr %7, ptr %22, align 8, !alias.scope !102 diff --git a/bench/node/optimized/libnode.cares_wrap.ll b/bench/node/optimized/libnode.cares_wrap.ll index fbc993aa39f..048b98785cb 100644 --- a/bench/node/optimized/libnode.cares_wrap.ll +++ b/bench/node/optimized/libnode.cares_wrap.ll @@ -1571,7 +1571,7 @@ if.then2: ; preds = %if.then br i1 %6, label %switch.lookup, label %_ZN4node10cares_wrap17ToErrorCodeStringEi.exit switch.lookup: ; preds = %if.then2 - %switch.tableidx = add i32 %call, -1 + %switch.tableidx = add nsw i32 %call, -1 %7 = sext i32 %switch.tableidx to i64 %switch.gep = getelementptr inbounds [24 x ptr], ptr @switch.table._ZN4node10cares_wrap9QueryWrapINS0_13ReverseTraitsEE10ParseErrorEi, i64 0, i64 %7 %switch.load = load ptr, ptr %switch.gep, align 8 @@ -1617,7 +1617,7 @@ if.then8: ; preds = %if.end5 br i1 %12, label %switch.lookup41, label %_ZN4node10cares_wrap17ToErrorCodeStringEi.exit31 switch.lookup41: ; preds = %if.then8 - %switch.tableidx42 = add i32 %call6, -1 + %switch.tableidx42 = add nsw i32 %call6, -1 %13 = sext i32 %switch.tableidx42 to i64 %switch.gep43 = getelementptr inbounds [24 x ptr], ptr @switch.table._ZN4node10cares_wrap9QueryWrapINS0_13ReverseTraitsEE10ParseErrorEi, i64 0, i64 %13 %switch.load44 = load ptr, ptr %switch.gep43, align 8 diff --git a/bench/nom-rs/optimized/2mhjsvr4l103ztah.ll b/bench/nom-rs/optimized/2mhjsvr4l103ztah.ll index 1615f36df72..de944aaa5e2 100644 --- a/bench/nom-rs/optimized/2mhjsvr4l103ztah.ll +++ b/bench/nom-rs/optimized/2mhjsvr4l103ztah.ll @@ -309,8 +309,8 @@ _ZN4core4iter6traits8iterator8Iterator8try_fold17h32f5e7b733a25820E.exit: ; pred ret i1 %.not6.i } -; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: none) uwtable -define noundef zeroext i1 @"_ZN73_$LT$$RF$$u5b$char$u5d$$u20$as$u20$nom..traits..FindToken$LT$char$GT$$GT$10find_token17h4bcf14d14e9a2285E"(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0, i32 noundef %1) unnamed_addr #3 personality ptr @rust_eh_personality { +; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: write) uwtable +define noundef zeroext i1 @"_ZN73_$LT$$RF$$u5b$char$u5d$$u20$as$u20$nom..traits..FindToken$LT$char$GT$$GT$10find_token17h4bcf14d14e9a2285E"(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0, i32 noundef %1) unnamed_addr #4 personality ptr @rust_eh_personality { %3 = load ptr, ptr %0, align 8, !nonnull !4, !align !42, !noundef !4 %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !4 @@ -320,15 +320,20 @@ define noundef zeroext i1 @"_ZN73_$LT$$RF$$u5b$char$u5d$$u20$as$u20$nom..traits. 7: ; preds = %9, %2 %8 = phi ptr [ %10, %9 ], [ %3, %2 ] %.not.not.not.i.not.not.not.not.not = icmp ne ptr %8, %6 - br i1 %.not.not.not.i.not.not.not.not.not, label %9, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h0ffc5ca326e65b64E.exit" + br i1 %.not.not.not.i.not.not.not.not.not, label %9, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8cb52221dee7989bE.exit.i" + +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8cb52221dee7989bE.exit.i": ; preds = %7 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] + br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h0ffc5ca326e65b64E.exit" 9: ; preds = %7 %10 = getelementptr inbounds nuw i8, ptr %8, i64 4 + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 4) ] %.val3.i = load i32, ptr %8, align 4, !range !43, !noalias !44, !noundef !4 %11 = icmp eq i32 %.val3.i, %1 br i1 %11, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h0ffc5ca326e65b64E.exit", label %7 -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h0ffc5ca326e65b64E.exit": ; preds = %7, %9 +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h0ffc5ca326e65b64E.exit": ; preds = %9, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8cb52221dee7989bE.exit.i" ret i1 %.not.not.not.i.not.not.not.not.not } @@ -345,15 +350,20 @@ define noundef zeroext i1 @"_ZN77_$LT$$RF$$u5b$char$u5d$$u20$as$u20$nom..traits. 8: ; preds = %10, %2 %9 = phi ptr [ %11, %10 ], [ %4, %2 ] %.not.not.not.i.not.not.not.i.not.not.not.not.not = icmp ne ptr %9, %7 - br i1 %.not.not.not.i.not.not.not.i.not.not.not.not.not, label %10, label %"_ZN73_$LT$$RF$$u5b$char$u5d$$u20$as$u20$nom..traits..FindToken$LT$char$GT$$GT$10find_token17h4bcf14d14e9a2285E.exit" + br i1 %.not.not.not.i.not.not.not.i.not.not.not.not.not, label %10, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8cb52221dee7989bE.exit.i.i" + +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8cb52221dee7989bE.exit.i.i": ; preds = %8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] + br label %"_ZN73_$LT$$RF$$u5b$char$u5d$$u20$as$u20$nom..traits..FindToken$LT$char$GT$$GT$10find_token17h4bcf14d14e9a2285E.exit" 10: ; preds = %8 %11 = getelementptr inbounds nuw i8, ptr %9, i64 4 + call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 4) ] %.val3.i.i = load i32, ptr %9, align 4, !range !43, !noalias !51, !noundef !4 %12 = icmp eq i32 %.val3.i.i, %3 br i1 %12, label %"_ZN73_$LT$$RF$$u5b$char$u5d$$u20$as$u20$nom..traits..FindToken$LT$char$GT$$GT$10find_token17h4bcf14d14e9a2285E.exit", label %8 -"_ZN73_$LT$$RF$$u5b$char$u5d$$u20$as$u20$nom..traits..FindToken$LT$char$GT$$GT$10find_token17h4bcf14d14e9a2285E.exit": ; preds = %8, %10 +"_ZN73_$LT$$RF$$u5b$char$u5d$$u20$as$u20$nom..traits..FindToken$LT$char$GT$$GT$10find_token17h4bcf14d14e9a2285E.exit": ; preds = %10, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8cb52221dee7989bE.exit.i.i" ret i1 %.not.not.not.i.not.not.not.i.not.not.not.not.not } diff --git a/bench/openusd/optimized/align.cpp.ll b/bench/openusd/optimized/align.cpp.ll index 53c158ba679..8ccbce19b62 100644 --- a/bench/openusd/optimized/align.cpp.ll +++ b/bench/openusd/optimized/align.cpp.ll @@ -4,34 +4,29 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80: target triple = "x86_64-pc-linux-gnu" ; Function Attrs: mustprogress nofree nounwind willreturn memory(inaccessiblemem: readwrite) uwtable -define noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__16ArchAlignedAllocEmm(i64 noundef %0, i64 noundef %1) local_unnamed_addr #0 { - %3 = tail call noalias ptr @aligned_alloc(i64 noundef %0, i64 noundef %1) #5 - call void @llvm.assume(i1 true) [ "align"(ptr %3, i64 %0) ] +define noalias noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__16ArchAlignedAllocEmm(i64 noundef %0, i64 noundef %1) local_unnamed_addr #0 { + %3 = tail call noalias ptr @aligned_alloc(i64 noundef %0, i64 noundef %1) #4 ret ptr %3 } ; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized,aligned") allocsize(1) memory(inaccessiblemem: readwrite) declare noalias noundef ptr @aligned_alloc(i64 allocalign noundef, i64 noundef) local_unnamed_addr #1 -; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #2 - ; Function Attrs: mustprogress nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) uwtable -define void @_ZN32pxrInternal_v0_24__pxrReserved__15ArchAlignedFreeEPv(ptr nocapture noundef %0) local_unnamed_addr #3 { - tail call void @free(ptr noundef %0) #6 +define void @_ZN32pxrInternal_v0_24__pxrReserved__15ArchAlignedFreeEPv(ptr nocapture noundef %0) local_unnamed_addr #2 { + tail call void @free(ptr noundef %0) #5 ret void } ; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) -declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #4 +declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #3 attributes #0 = { mustprogress nofree nounwind willreturn memory(inaccessiblemem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized,aligned") allocsize(1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #3 = { mustprogress nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { nounwind allocsize(1) } -attributes #6 = { nounwind } +attributes #2 = { mustprogress nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nounwind allocsize(1) } +attributes #5 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/php/optimized/simplexml.ll b/bench/php/optimized/simplexml.ll index 8506235762e..ee856ac28bb 100644 --- a/bench/php/optimized/simplexml.ll +++ b/bench/php/optimized/simplexml.ll @@ -717,7 +717,7 @@ php_sxe_get_first_node_non_destructive.exit.thread: ; preds = %25, %27 br i1 %30, label %switch.lookup, label %34 switch.lookup: ; preds = %29 - %switch.tableidx = add i32 %24, -1 + %switch.tableidx = add nsw i32 %24, -1 %31 = sext i32 %switch.tableidx to i64 %switch.gep = getelementptr inbounds [3 x i64], ptr @switch.table.sxe_get_prop_hash, i64 0, i64 %31 %switch.load = load i64, ptr %switch.gep, align 8 @@ -981,7 +981,7 @@ php_sxe_get_first_node_non_destructive.exit.thread: ; preds = %24, %26 br i1 %29, label %switch.lookup, label %33 switch.lookup: ; preds = %28 - %switch.tableidx = add i32 %23, -1 + %switch.tableidx = add nsw i32 %23, -1 %30 = sext i32 %switch.tableidx to i64 %switch.gep = getelementptr inbounds [3 x i64], ptr @switch.table.sxe_get_prop_hash, i64 0, i64 %30 %switch.load = load i64, ptr %switch.gep, align 8 @@ -1357,7 +1357,7 @@ php_sxe_get_first_node_non_destructive.exit.thread: ; preds = %27, %29 br i1 %32, label %switch.lookup, label %36 switch.lookup: ; preds = %31 - %switch.tableidx = add i32 %26, -1 + %switch.tableidx = add nsw i32 %26, -1 %33 = sext i32 %switch.tableidx to i64 %switch.gep = getelementptr inbounds [3 x i64], ptr @switch.table.sxe_get_prop_hash, i64 0, i64 %33 %switch.load = load i64, ptr %switch.gep, align 8 @@ -1444,7 +1444,7 @@ php_sxe_get_first_node_non_destructive.exit.thread: ; preds = %18, %20 br i1 %23, label %switch.lookup, label %27 switch.lookup: ; preds = %22 - %switch.tableidx = add i32 %17, -1 + %switch.tableidx = add nsw i32 %17, -1 %24 = sext i32 %switch.tableidx to i64 %switch.gep = getelementptr inbounds [3 x i64], ptr @switch.table.sxe_get_prop_hash, i64 0, i64 %24 %switch.load = load i64, ptr %switch.gep, align 8 @@ -1565,7 +1565,7 @@ php_sxe_get_first_node_non_destructive.exit.thread: ; preds = %24, %26 br i1 %29, label %switch.lookup, label %33 switch.lookup: ; preds = %28 - %switch.tableidx = add i32 %23, -1 + %switch.tableidx = add nsw i32 %23, -1 %30 = sext i32 %switch.tableidx to i64 %switch.gep = getelementptr inbounds [3 x i64], ptr @switch.table.sxe_get_prop_hash, i64 0, i64 %30 %switch.load = load i64, ptr %switch.gep, align 8 @@ -1898,7 +1898,7 @@ php_sxe_get_first_node_non_destructive.exit.thread: ; preds = %34, %36 br i1 %39, label %switch.lookup, label %43 switch.lookup: ; preds = %38 - %switch.tableidx = add i32 %33, -1 + %switch.tableidx = add nsw i32 %33, -1 %40 = sext i32 %switch.tableidx to i64 %switch.gep = getelementptr inbounds [3 x i64], ptr @switch.table.sxe_get_prop_hash, i64 0, i64 %40 %switch.load = load i64, ptr %switch.gep, align 8 @@ -4352,7 +4352,7 @@ define hidden ptr @simplexml_export_node(ptr nocapture noundef readonly %0) #1 { br i1 %16, label %switch.lookup, label %20 switch.lookup: ; preds = %15 - %switch.tableidx = add i32 %10, -1 + %switch.tableidx = add nsw i32 %10, -1 %17 = sext i32 %switch.tableidx to i64 %switch.gep = getelementptr inbounds [3 x i64], ptr @switch.table.sxe_get_prop_hash, i64 0, i64 %17 %switch.load = load i64, ptr %switch.gep, align 8 diff --git a/bench/proxy/optimized/proxy_integration_tests.cpp.ll b/bench/proxy/optimized/proxy_integration_tests.cpp.ll index ef957cfeb73..cad72ab8d64 100644 --- a/bench/proxy/optimized/proxy_integration_tests.cpp.ll +++ b/bench/proxy/optimized/proxy_integration_tests.cpp.ll @@ -3434,10 +3434,8 @@ declare void @_ZSt20__throw_out_of_rangePKc(ptr noundef) local_unnamed_addr #11 ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr dso_local void @_ZN3pro7details26copying_default_dispatcherILm8ELm8EEEvPSt4bytePKS2_(ptr noundef %0, ptr noundef %1) #6 comdat personality ptr @__gxx_personality_v0 { - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] - call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 8) ] - %3 = load i64, ptr %1, align 8 - store i64 %3, ptr %0, align 8 + %3 = load i64, ptr %1, align 1 + store i64 %3, ptr %0, align 1 ret void } diff --git a/bench/proxy/optimized/proxy_invocation_tests.cpp.ll b/bench/proxy/optimized/proxy_invocation_tests.cpp.ll index d0de8f92c73..cde9afc5fd5 100644 --- a/bench/proxy/optimized/proxy_invocation_tests.cpp.ll +++ b/bench/proxy/optimized/proxy_invocation_tests.cpp.ll @@ -10080,10 +10080,8 @@ define linkonce_odr dso_local noundef ptr @_ZN7testing8internal15TestFactoryImpl ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr dso_local void @_ZN3pro7details26copying_default_dispatcherILm8ELm8EEEvPSt4bytePKS2_(ptr noundef %0, ptr noundef %1) #6 comdat personality ptr @__gxx_personality_v0 { - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] - call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 8) ] - %3 = load i64, ptr %1, align 8 - store i64 %3, ptr %0, align 8 + %3 = load i64, ptr %1, align 1 + store i64 %3, ptr %0, align 1 ret void } @@ -12081,10 +12079,8 @@ define internal void @"_ZN3pro7details25invocation_dispatcher_refINS0_11inplace_ ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr dso_local void @_ZN3pro7details26copying_default_dispatcherILm4ELm4EEEvPSt4bytePKS2_(ptr noundef %0, ptr noundef %1) #6 comdat personality ptr @__gxx_personality_v0 { - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 4) ] - call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 4) ] - %3 = load i32, ptr %1, align 4 - store i32 %3, ptr %0, align 4 + %3 = load i32, ptr %1, align 1 + store i32 %3, ptr %0, align 1 ret void } diff --git a/bench/qdrant-rs/optimized/23nlkzsh9fgdn4zq.ll b/bench/qdrant-rs/optimized/23nlkzsh9fgdn4zq.ll index 8d84b27f7ee..b20cdbda7f3 100644 --- a/bench/qdrant-rs/optimized/23nlkzsh9fgdn4zq.ll +++ b/bench/qdrant-rs/optimized/23nlkzsh9fgdn4zq.ll @@ -72,7 +72,7 @@ define hidden void @_ZN3std10sys_common4once5futex4Once4call17h77a8a08035c8bad9E store ptr %5, ptr %19, align 8, !alias.scope !4, !noalias !7 %20 = getelementptr inbounds nuw i8, ptr %6, i64 24 store i64 0, ptr %20, align 8, !alias.scope !4, !noalias !7 - call void @_ZN4core9panicking9panic_fmt17hc69c4d258fe11477E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3) #8 + call void @_ZN4core9panicking9panic_fmt17hc69c4d258fe11477E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3) #9 unreachable 21: ; preds = %.split @@ -95,7 +95,7 @@ define hidden void @_ZN3std10sys_common4once5futex4Once4call17h77a8a08035c8bad9E store ptr @anon.d023d46553e80f33d30700de6f23ad43.2, ptr %26, align 8 %27 = getelementptr inbounds nuw i8, ptr %8, i64 24 store i64 0, ptr %27, align 8 - call void @_ZN4core9panicking9panic_fmt17hc69c4d258fe11477E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3) #8 + call void @_ZN4core9panicking9panic_fmt17hc69c4d258fe11477E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3) #9 unreachable .split19.us: ; preds = %21, %15 @@ -105,12 +105,13 @@ define hidden void @_ZN3std10sys_common4once5futex4Once4call17h77a8a08035c8bad9E store i32 1, ptr %28, align 8 %.val = load ptr, ptr %2, align 8, !nonnull !9, !align !10, !noundef !9 %29 = load ptr, ptr %.val, align 8, !align !10, !noundef !9 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] store ptr null, ptr %.val, align 8 %30 = icmp eq ptr %29, null br i1 %30, label %31, label %32 31: ; preds = %.split19.us - invoke void @_ZN4core6option13unwrap_failed17hac39b9b7507453f8E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.d023d46553e80f33d30700de6f23ad43.12) #8 + invoke void @_ZN4core6option13unwrap_failed17hac39b9b7507453f8E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.d023d46553e80f33d30700de6f23ad43.12) #9 to label %.noexc unwind label %34 .noexc: ; preds = %31 @@ -141,7 +142,7 @@ define hidden void @_ZN3std10sys_common4once5futex4Once4call17h77a8a08035c8bad9E 38: ; preds = %34 %39 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #9 + call void @_ZN4core9panicking16panic_in_cleanup17h76c6e1c84248d3ffE() #10 unreachable "_ZN4core3ptr66drop_in_place$LT$std..sys_common..once..futex..CompletionGuard$GT$17h29211c0c85325dbaE.exit": ; preds = %34 @@ -216,11 +217,14 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #6 ; Function Attrs: nonlazybind uwtable declare void @"_ZN87_$LT$std..sys_common..once..futex..CompletionGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h30bb5f6fba474e2bE"(ptr noalias noundef align 8 dereferenceable(16)) unnamed_addr #1 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #7 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #7 +declare i64 @llvm.umin.i64(i64, i64) #8 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #7 +declare i64 @llvm.umax.i64(i64, i64) #8 attributes #0 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } @@ -229,9 +233,10 @@ attributes #3 = { inlinehint mustprogress nofree norecurse nosync nounwind nonla attributes #4 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #5 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #8 = { noreturn } -attributes #9 = { cold noreturn nounwind } +attributes #7 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #8 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #9 = { noreturn } +attributes #10 = { cold noreturn nounwind } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/qdrant-rs/optimized/3fo8yj5wpdd9t92g.ll b/bench/qdrant-rs/optimized/3fo8yj5wpdd9t92g.ll index c6a3ab20443..6619523e55a 100644 --- a/bench/qdrant-rs/optimized/3fo8yj5wpdd9t92g.ll +++ b/bench/qdrant-rs/optimized/3fo8yj5wpdd9t92g.ll @@ -1939,11 +1939,13 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h32e2239cb3af4b83E.exit.i: ; 13: ; preds = %.noexc, %1 %.0.i.i2.i = phi ptr [ %8, %.noexc ], [ getelementptr inbounds nuw (i8, ptr @_ZN3std4hash6random11RandomState3new4KEYS7__getit5__KEY17h1f381a0e61bae689E, i64 8), %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i.i2.i, i64 8) ] %14 = load i64, ptr %.0.i.i2.i, align 8, !noalias !412, !noundef !18 %15 = getelementptr inbounds nuw i8, ptr %.0.i.i2.i, i64 8 %16 = load i64, ptr %15, align 8, !noalias !412, !noundef !18 %17 = add i64 %14, 1 store i64 %17, ptr %.0.i.i2.i, align 8, !noalias !412 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %18 = getelementptr inbounds nuw i8, ptr %0, i64 200 store ptr null, ptr %18, align 8 %19 = getelementptr inbounds nuw i8, ptr %0, i64 144 @@ -1956,7 +1958,12 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h32e2239cb3af4b83E.exit.i: ; call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.4.0..sroa_idx20, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.4, i64 16, i1 false) %22 = getelementptr inbounds nuw i8, ptr %0, i64 168 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %4, i64 32, i1 false) + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %23 = getelementptr inbounds nuw i8, ptr %0, i64 208 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %24 = getelementptr inbounds nuw i8, ptr %0, i64 120 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %23, i8 0, i64 40, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 24, i1 false) @@ -2133,6 +2140,7 @@ _ZN5alloc5alloc15exchange_malloc17ha641d2894b944555E.exit: ; preds = %2 store i64 -9223372036854775808, ptr %7, align 8 %.sroa.46.0..sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 8 store ptr %17, ptr %.sroa.46.0..sroa_idx, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %35 = getelementptr inbounds nuw i8, ptr %7, i64 40 store ptr null, ptr %35, align 8 %36 = load i32, ptr %30, align 4 @@ -2147,6 +2155,7 @@ _ZN5alloc5alloc15exchange_malloc17ha641d2894b944555E.exit: ; preds = %2 store i32 %39, ptr %41, align 4 %42 = getelementptr inbounds nuw i8, ptr %7, i64 56 store i8 2, ptr %42, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %43 = getelementptr inbounds nuw i8, ptr %7, i64 48 store ptr null, ptr %43, align 8 %44 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !419 @@ -2450,6 +2459,7 @@ _ZN5alloc5alloc15exchange_malloc17ha641d2894b944555E.exit: ; preds = %2 store i64 -9223372036854775808, ptr %7, align 8 %.sroa.46.0..sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 8 store ptr %17, ptr %.sroa.46.0..sroa_idx, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %35 = getelementptr inbounds nuw i8, ptr %7, i64 40 store ptr null, ptr %35, align 8 %36 = load i32, ptr %30, align 4 @@ -2464,6 +2474,7 @@ _ZN5alloc5alloc15exchange_malloc17ha641d2894b944555E.exit: ; preds = %2 store i32 %39, ptr %41, align 4 %42 = getelementptr inbounds nuw i8, ptr %7, i64 56 store i8 2, ptr %42, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %43 = getelementptr inbounds nuw i8, ptr %7, i64 48 store ptr null, ptr %43, align 8 %44 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !452 diff --git a/bench/qdrant-rs/optimized/4iacc535829shmz2.ll b/bench/qdrant-rs/optimized/4iacc535829shmz2.ll index 9697738da90..a5ae02fb734 100644 --- a/bench/qdrant-rs/optimized/4iacc535829shmz2.ll +++ b/bench/qdrant-rs/optimized/4iacc535829shmz2.ll @@ -1658,6 +1658,7 @@ define void @_ZN6sparse5index12posting_list11PostingList4from17hf09543c46381d0a4 %.019.i = phi float [ %45, %.lr.ph.i ], [ 0xFFF0000000000000, %.lr.ph.preheader.i ] %.sroa.4.018.i = phi ptr [ %41, %.lr.ph.i ], [ %40, %.lr.ph.preheader.i ] %41 = getelementptr inbounds i8, ptr %.sroa.4.018.i, i64 -12 + call void @llvm.assume(i1 true) [ "align"(ptr %41, i64 4) ] %42 = getelementptr inbounds i8, ptr %.sroa.4.018.i, i64 -4 store float %.019.i, ptr %42, align 4, !noalias !228 %43 = getelementptr inbounds i8, ptr %.sroa.4.018.i, i64 -8 @@ -1673,6 +1674,7 @@ define void @_ZN6sparse5index12posting_list11PostingList4from17hf09543c46381d0a4 unreachable .loopexit: ; preds = %.lr.ph.i, %38 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %6, i64 24, i1 false), !alias.scope !228 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) @@ -1828,7 +1830,7 @@ define void @_ZN6sparse5index12posting_list11PostingList6upsert17h63af1831e8aac7 %41 = icmp ne ptr %.val13, null tail call void @llvm.assume(i1 %41) %42 = icmp eq i64 %.sroa.7.0.ph, 0 - br i1 %42, label %_ZN6sparse5index12posting_list11PostingList37propagate_max_next_weight_to_the_left17hec35d9b5ff6b23dcE.exit, label %.lr.ph.preheader.i + br i1 %42, label %"_ZN109_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h944707d44ea2b5daE.exit.thread.i", label %.lr.ph.preheader.i .lr.ph.preheader.i: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h7d28550995aaff86E.exit.i" %43 = getelementptr inbounds [0 x { i32, float, float }], ptr %.val13, i64 0, i64 %.sroa.7.0.ph @@ -1850,21 +1852,27 @@ define void @_ZN6sparse5index12posting_list11PostingList6upsert17h63af1831e8aac7 tail call void @_ZN4core9panicking18panic_bounds_check17he5254f424ac3a4c4E(i64 noundef %.sroa.7.0.ph, i64 noundef %.val14, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.81e6ab35a181dc861ce075a8d33b6c5d.16) #32 unreachable -.lr.ph.i: ; preds = %.lr.ph.i, %.lr.ph.preheader.i - %.04.i = phi float [ %59, %.lr.ph.i ], [ %.0.sroa.speculated.i.i, %.lr.ph.preheader.i ] - %.sroa.4.03.i = phi ptr [ %58, %.lr.ph.i ], [ %43, %.lr.ph.preheader.i ] +"_ZN109_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h944707d44ea2b5daE.exit.thread.i": ; preds = %58, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h7d28550995aaff86E.exit.i" + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] + br label %_ZN6sparse5index12posting_list11PostingList37propagate_max_next_weight_to_the_left17hec35d9b5ff6b23dcE.exit + +.lr.ph.i: ; preds = %58, %.lr.ph.preheader.i + %.04.i = phi float [ %60, %58 ], [ %.0.sroa.speculated.i.i, %.lr.ph.preheader.i ] + %.sroa.4.03.i = phi ptr [ %59, %58 ], [ %43, %.lr.ph.preheader.i ] %54 = getelementptr inbounds i8, ptr %.sroa.4.03.i, i64 -4 store float %.04.i, ptr %54, align 4 %55 = getelementptr inbounds i8, ptr %.sroa.4.03.i, i64 -8 %56 = load float, ptr %55, align 4, !noundef !10 - %57 = fcmp oge float %56, %.04.i - %58 = getelementptr inbounds i8, ptr %.sroa.4.03.i, i64 -12 - %59 = tail call float @llvm.maxnum.f32(float %.04.i, float %56) - %60 = icmp eq ptr %.val13, %58 - %or.cond.i = select i1 %57, i1 true, i1 %60 - br i1 %or.cond.i, label %_ZN6sparse5index12posting_list11PostingList37propagate_max_next_weight_to_the_left17hec35d9b5ff6b23dcE.exit, label %.lr.ph.i - -_ZN6sparse5index12posting_list11PostingList37propagate_max_next_weight_to_the_left17hec35d9b5ff6b23dcE.exit: ; preds = %.lr.ph.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h7d28550995aaff86E.exit.i", %32 + %57 = fcmp ult float %56, %.04.i + br i1 %57, label %58, label %_ZN6sparse5index12posting_list11PostingList37propagate_max_next_weight_to_the_left17hec35d9b5ff6b23dcE.exit + +58: ; preds = %.lr.ph.i + %59 = getelementptr inbounds i8, ptr %.sroa.4.03.i, i64 -12 + %60 = tail call float @llvm.maxnum.f32(float %.04.i, float %56) + %61 = icmp eq ptr %.val13, %59 + br i1 %61, label %"_ZN109_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h944707d44ea2b5daE.exit.thread.i", label %.lr.ph.i + +_ZN6sparse5index12posting_list11PostingList37propagate_max_next_weight_to_the_left17hec35d9b5ff6b23dcE.exit: ; preds = %.lr.ph.i, %"_ZN109_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h944707d44ea2b5daE.exit.thread.i", %32 ret void } @@ -1951,6 +1959,7 @@ define void @_ZN6sparse5index12posting_list14PostingBuilder5build17h5c727e63726a br label %.lr.ph ._crit_edge: ; preds = %.lr.ph, %14 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i64 24, i1 false) ret void @@ -1958,6 +1967,7 @@ define void @_ZN6sparse5index12posting_list14PostingBuilder5build17h5c727e63726a %.019 = phi float [ %21, %.lr.ph ], [ 0xFFF0000000000000, %.lr.ph.preheader ] %.sroa.4.018 = phi ptr [ %17, %.lr.ph ], [ %16, %.lr.ph.preheader ] %17 = getelementptr inbounds i8, ptr %.sroa.4.018, i64 -12 + call void @llvm.assume(i1 true) [ "align"(ptr %17, i64 4) ] %18 = getelementptr inbounds i8, ptr %.sroa.4.018, i64 -4 store float %.019, ptr %18, align 4 %19 = getelementptr inbounds i8, ptr %.sroa.4.018, i64 -8 @@ -2122,6 +2132,7 @@ define noundef align 4 dereferenceable_or_null(12) ptr @_ZN6sparse5index12postin 29: ; preds = %.loopexit, %26, %2 %.0 = phi ptr [ null, %2 ], [ null, %.loopexit ], [ %27, %26 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 4) ] ret ptr %.0 } diff --git a/bench/qdrant-rs/optimized/pgs97hhgng8x0qz.ll b/bench/qdrant-rs/optimized/pgs97hhgng8x0qz.ll index 427efc3db77..d5860d665c2 100644 --- a/bench/qdrant-rs/optimized/pgs97hhgng8x0qz.ll +++ b/bench/qdrant-rs/optimized/pgs97hhgng8x0qz.ll @@ -560,6 +560,8 @@ _ZN4core5slice4sort20provide_sorted_batch17h009278cd587dc262E.exit: ; preds = %. %.sroa.18.022.i = phi ptr [ %209, %.lr.ph25.i ], [ %194, %198 ] %206 = getelementptr inbounds i8, ptr %.sroa.10.023.i, i64 -8 %207 = getelementptr inbounds i8, ptr %.sroa.18.022.i, i64 -8 + call void @llvm.assume(i1 true) [ "align"(ptr %206, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %207, i64 4) ] %.val.i58 = load i32, ptr %206, align 4, !noalias !53, !noundef !14 %.val35.i = load i32, ptr %207, align 4, !alias.scope !53, !noundef !14 %208 = icmp ult i32 %.val.i58, %.val35.i @@ -581,6 +583,8 @@ _ZN4core5slice4sort20provide_sorted_batch17h009278cd587dc262E.exit: ; preds = %. %.02819.i = phi ptr [ %220, %.lr.ph.i57 ], [ %194, %202 ] %.sroa.0.118.i = phi ptr [ %223, %.lr.ph.i57 ], [ %14, %202 ] %.sroa.18.217.i = phi ptr [ %218, %.lr.ph.i57 ], [ %193, %202 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.02819.i, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.118.i, i64 4) ] %.028.val.i = load i32, ptr %.02819.i, align 4, !alias.scope !53, !noundef !14 %.val36.i = load i32, ptr %.sroa.0.118.i, align 4, !noalias !53, !noundef !14 %216 = icmp ult i32 %.028.val.i, %.val36.i @@ -1179,6 +1183,7 @@ _ZN4core5slice4sort25insertion_sort_shift_left17h06e2798425a2097eE.exit: ; preds ret void 15: ; preds = %14 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0108, i64 4) ] call fastcc void @_ZN4core5slice4sort14break_patterns17ha575e5d2916bee58E(ptr noalias noundef nonnull align 4 %.sroa.0.0108, i64 noundef %.sroa.14.0107) %16 = add i32 %.036106, -1 br label %17 @@ -1385,6 +1390,7 @@ _ZN4core5slice4sort12choose_pivot17h7559ed29547daebdE.exit: ; preds = %"_ZN4core br i1 %.not, label %103, label %101 99: ; preds = %_ZN4core5slice4sort12choose_pivot17h7559ed29547daebdE.exit + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0108, i64 4) ] %100 = call fastcc noundef zeroext i1 @_ZN4core5slice4sort22partial_insertion_sort17h0b074c0f1f6f1035E(ptr noalias noundef nonnull align 4 %.sroa.0.0108, i64 noundef %.sroa.14.0107) br i1 %100, label %_ZN4core5slice4sort25insertion_sort_shift_left17h06e2798425a2097eE.exit, label %98 @@ -1519,6 +1525,7 @@ _ZN4core5slice4sort12choose_pivot17h7559ed29547daebdE.exit: ; preds = %"_ZN4core %143 = add nuw i64 %.sroa.090.012.i.i, 1 %144 = trunc i64 %.sroa.090.012.i.i to i8 store i8 %144, ptr %.214714.i.i, align 1, !noalias !251 + call void @llvm.assume(i1 true) [ "align"(ptr %.016413.i.i, i64 4) ] %.0164.val.i.i = load i32, ptr %.016413.i.i, align 4, !alias.scope !252, !noalias !255, !noundef !14 %145 = icmp uge i32 %.0164.val.i.i, %110 %146 = zext i1 %145 to i64 @@ -1548,6 +1555,7 @@ _ZN4core5slice4sort12choose_pivot17h7559ed29547daebdE.exit: ; preds = %"_ZN4core %156 = getelementptr inbounds i8, ptr %.016515.i.i, i64 -4 %157 = trunc i64 %.sroa.099.016.i.i to i8 store i8 %157, ptr %.216117.i.i, align 1, !noalias !251 + call void @llvm.assume(i1 true) [ "align"(ptr %156, i64 4) ] %.val.i.i = load i32, ptr %156, align 4, !alias.scope !252, !noalias !255, !noundef !14 %158 = icmp ult i32 %.val.i.i, %110 %159 = zext i1 %158 to i64 @@ -1683,6 +1691,8 @@ _ZN4core5slice4sort12choose_pivot17h7559ed29547daebdE.exit: ; preds = %"_ZN4core %.0.sroa.speculated.i = call noundef i64 @llvm.umin.i64(i64 %216, i64 %222) %223 = lshr i64 %.sroa.14.0107.lcssa126, 3 %224 = icmp uge i64 %.0.sroa.speculated.i, %223 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0108.lcssa134, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %220, i64 4) ] %225 = getelementptr inbounds nuw i8, ptr %220, i64 4 %226 = add i64 %222, -1 %227 = icmp ult i64 %216, %226 @@ -1700,6 +1710,7 @@ _ZN4core5slice4sort12choose_pivot17h7559ed29547daebdE.exit: ; preds = %"_ZN4core unreachable 232: ; preds = %228 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0108, i64 4) ] %.0.copyload.i.i59 = load i32, ptr %.sroa.0.0108, align 4, !alias.scope !263, !noalias !268 store i32 %.val, ptr %.sroa.0.0108, align 4, !alias.scope !263, !noalias !268 store i32 %.0.copyload.i.i59, ptr %229, align 4, !alias.scope !263, !noalias !268 @@ -1758,6 +1769,7 @@ _ZN4core5slice4sort12choose_pivot17h7559ed29547daebdE.exit: ; preds = %"_ZN4core _ZN4core5slice4sort15partition_equal17h395566a2c55f5184E.exit: ; preds = %242 %252 = add i64 %.022.lcssa.i, 1 store i32 %235, ptr %.sroa.0.0108, align 4, !alias.scope !270 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0108, i64 4) ] %253 = icmp ugt i64 %252, %.sroa.14.0107 br i1 %253, label %258, label %254 @@ -1875,6 +1887,7 @@ _ZN4core5slice4sort25insertion_sort_shift_left17hf4626fc25b14025dE.exit: ; preds ret void 16: ; preds = %15 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109, i64 4) ] call fastcc void @_ZN4core5slice4sort14break_patterns17h8270c65349493cfaE(ptr noalias noundef nonnull align 4 %.sroa.0.0109, i64 noundef %.sroa.14.0108) %17 = add i32 %.036107, -1 br label %18 @@ -2092,6 +2105,7 @@ _ZN4core5slice4sort12choose_pivot17h1003228491836206E.exit: ; preds = %"_ZN4core br i1 %.not, label %108, label %106 104: ; preds = %_ZN4core5slice4sort12choose_pivot17h1003228491836206E.exit + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109, i64 4) ] %105 = call fastcc noundef zeroext i1 @_ZN4core5slice4sort22partial_insertion_sort17h998e0540c797da26E(ptr noalias noundef nonnull align 4 %.sroa.0.0109, i64 noundef %.sroa.14.0108) br i1 %105, label %_ZN4core5slice4sort25insertion_sort_shift_left17hf4626fc25b14025dE.exit, label %103 @@ -2231,6 +2245,7 @@ _ZN4core5slice4sort12choose_pivot17h1003228491836206E.exit: ; preds = %"_ZN4core %147 = add nuw i64 %.sroa.090.012.i.i, 1 %148 = trunc i64 %.sroa.090.012.i.i to i8 store i8 %148, ptr %.214514.i.i, align 1, !noalias !368 + call void @llvm.assume(i1 true) [ "align"(ptr %.016213.i.i, i64 4) ] %.0162.val.i.i = load i32, ptr %.016213.i.i, align 4, !alias.scope !368, !noundef !14 %149 = icmp uge i32 %.0162.val.i.i, %.sroa.06.0.copyload.i %150 = zext i1 %149 to i64 @@ -2260,6 +2275,7 @@ _ZN4core5slice4sort12choose_pivot17h1003228491836206E.exit: ; preds = %"_ZN4core %160 = getelementptr inbounds i8, ptr %.016315.i.i, i64 -12 %161 = trunc i64 %.sroa.099.016.i.i to i8 store i8 %161, ptr %.215917.i.i, align 1, !noalias !368 + call void @llvm.assume(i1 true) [ "align"(ptr %160, i64 4) ] %.val.i.i = load i32, ptr %160, align 4, !alias.scope !368, !noundef !14 %162 = icmp ult i32 %.val.i.i, %.sroa.06.0.copyload.i %163 = zext i1 %162 to i64 @@ -2402,6 +2418,8 @@ _ZN4core5slice4sort12choose_pivot17h1003228491836206E.exit: ; preds = %"_ZN4core %.0.sroa.speculated.i = call noundef i64 @llvm.umin.i64(i64 %217, i64 %222) %223 = lshr i64 %.sroa.14.0108.lcssa127, 3 %224 = icmp uge i64 %.0.sroa.speculated.i, %223 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109.lcssa135, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %221, i64 4) ] %225 = getelementptr inbounds nuw i8, ptr %221, i64 12 %226 = add i64 %222, -1 %227 = icmp ult i64 %217, %226 @@ -2419,6 +2437,7 @@ _ZN4core5slice4sort12choose_pivot17h1003228491836206E.exit: ; preds = %"_ZN4core unreachable 232: ; preds = %228 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109, i64 4) ] call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %.sroa.0.i.i59) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.0.i.i59, ptr noundef nonnull align 4 dereferenceable(12) %.sroa.0.0109, i64 12, i1 false), !noalias !375 call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.0.0109, ptr noundef nonnull align 4 dereferenceable(12) %229, i64 12, i1 false), !alias.scope !378, !noalias !375 @@ -2483,6 +2502,7 @@ _ZN4core5slice4sort15partition_equal17h513025a7b3b758bdE.exit: ; preds = %242 %251 = add i64 %.022.lcssa.i, 1 store i32 %.sroa.08.0.copyload.i, ptr %.sroa.0.0109, align 4, !alias.scope !382 store i64 %235, ptr %.sroa.4.0..sroa_idx.i60, align 4, !alias.scope !382 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109, i64 4) ] %252 = icmp ugt i64 %251, %.sroa.14.0108 br i1 %252, label %257, label %253 diff --git a/bench/qemu/optimized/accel_tcg_cputlb.c.ll b/bench/qemu/optimized/accel_tcg_cputlb.c.ll index fe5c236604b..425f390c56b 100644 --- a/bench/qemu/optimized/accel_tcg_cputlb.c.ll +++ b/bench/qemu/optimized/accel_tcg_cputlb.c.ll @@ -3128,7 +3128,6 @@ if.else.i: ; preds = %if.then br i1 %cmp.i.i, label %if.then.i.i, label %if.end.i.i if.then.i.i: ; preds = %if.else.i - call void @llvm.assume(i1 true) [ "align"(ptr %6, i64 2) ] %8 = load atomic i16, ptr %6 monotonic, align 2 br label %load_atom_2.exit.i @@ -3266,7 +3265,6 @@ if.then31.i.i: ; preds = %sw.bb27.i.i %mul.i.i.i = and i64 %conv.i16.i.i, 56 %and1.i17.i.i = and i64 %7, -8 %19 = inttoptr i64 %and1.i17.i.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %19, i64 8) ] %20 = load atomic i64, ptr %19 monotonic, align 8 %shr2.i.i.i = lshr i64 %20, %mul.i.i.i %conv33.i.i = trunc i64 %shr2.i.i.i to i16 @@ -3275,7 +3273,6 @@ if.then31.i.i: ; preds = %sw.bb27.i.i if.end34.i.i: ; preds = %sw.bb27.i.i %and1.i18.i.i = and i64 %7, -16 %21 = inttoptr i64 %and1.i18.i.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %21, i64 16) ] %tobool.not.i.i20.i.i = icmp eq i32 %and2.i.i, 0 br i1 %tobool.not.i.i20.i.i, label %atomic16_read_rw.exit.i.i.i.i, label %if.then.i.i.i.i @@ -3286,7 +3283,6 @@ if.then.i.i.i.i: ; preds = %if.end34.i.i br label %load_atom_extract_al16_or_exit.exit.i.i atomic16_read_rw.exit.i.i.i.i: ; preds = %if.end34.i.i - call void @llvm.assume(i1 true) [ "align"(ptr %21, i64 16) ] %23 = cmpxchg ptr %21, i128 0, i128 0 seq_cst seq_cst, align 16 %24 = extractvalue { i128, i1 } %23, 0 %extract.t2.i.i.i.i.i = trunc i128 %24 to i64 @@ -3437,7 +3433,6 @@ if.else.i: ; preds = %if.then br i1 %cmp.i.i, label %if.then.i.i, label %if.end.i.i if.then.i.i: ; preds = %if.else.i - call void @llvm.assume(i1 true) [ "align"(ptr %6, i64 4) ] %8 = load atomic i32, ptr %6 monotonic, align 4 br label %load_atom_4.exit.i @@ -3575,10 +3570,8 @@ sw.bb.i.i: ; preds = %required_atomicity. %conv.i16.i.i = and i32 %20, 24 %and1.i17.i.i = and i64 %7, -4 %21 = inttoptr i64 %and1.i17.i.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %21, i64 4) ] %22 = load atomic i32, ptr %21 monotonic, align 4 %add.ptr.i.i.i = getelementptr i8, ptr %21, i64 4 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i.i, i64 4) ] %23 = load atomic i32, ptr %add.ptr.i.i.i monotonic, align 4 %shr.i.i.i = lshr i32 %22, %conv.i16.i.i %sub.i.i.i = sub i32 0, %20 @@ -3597,7 +3590,6 @@ if.then29.i.i: ; preds = %sw.bb26.i.i %mul.i.i.i = and i64 %conv.i19.i.i, 24 %and1.i20.i.i = and i64 %7, -8 %24 = inttoptr i64 %and1.i20.i.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %24, i64 8) ] %25 = load atomic i64, ptr %24 monotonic, align 8 %shr2.i.i.i = lshr i64 %25, %mul.i.i.i %conv3.i.i.i = trunc i64 %shr2.i.i.i to i32 @@ -3606,7 +3598,6 @@ if.then29.i.i: ; preds = %sw.bb26.i.i if.end31.i.i: ; preds = %sw.bb26.i.i %and1.i21.i.i = and i64 %7, -8 %26 = inttoptr i64 %and1.i21.i.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %26, i64 16) ] %tobool.not.i.i23.i.i = icmp eq i32 %and2.i.i, 0 br i1 %tobool.not.i.i23.i.i, label %atomic16_read_rw.exit.i.i.i.i, label %if.then.i.i.i.i @@ -3617,7 +3608,6 @@ if.then.i.i.i.i: ; preds = %if.end31.i.i br label %load_atom_extract_al16_or_exit.exit.i.i atomic16_read_rw.exit.i.i.i.i: ; preds = %if.end31.i.i - call void @llvm.assume(i1 true) [ "align"(ptr %26, i64 16) ] %28 = cmpxchg ptr %26, i128 0, i128 0 seq_cst seq_cst, align 16 %29 = extractvalue { i128, i1 } %28, 0 %extract.t2.i.i.i.i.i = trunc i128 %29 to i64 @@ -3934,20 +3924,16 @@ sw.bb.i: ; preds = %required_atomicity. br label %load_atom_16.exit sw.bb12.i: ; preds = %required_atomicity.exit.i - call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 2) ] %19 = load atomic i16, ptr %8 monotonic, align 2 %conv.i.i.i = zext i16 %19 to i64 %add.ptr.i.i.i = getelementptr i8, ptr %8, i64 2 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i.i, i64 2) ] %20 = load atomic i16, ptr %add.ptr.i.i.i monotonic, align 2 %conv2.i.i.i = zext i16 %20 to i64 %shl.i.i.i = shl nuw nsw i64 %conv2.i.i.i, 16 %add.ptr.i.i = getelementptr i8, ptr %8, i64 4 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i, i64 2) ] %21 = load atomic i16, ptr %add.ptr.i.i monotonic, align 2 %conv.i2.i.i = zext i16 %21 to i64 %add.ptr.i3.i.i = getelementptr i8, ptr %8, i64 6 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i3.i.i, i64 2) ] %22 = load atomic i16, ptr %add.ptr.i3.i.i monotonic, align 2 %conv2.i4.i.i = zext i16 %22 to i64 %23 = shl nuw i64 %conv2.i4.i.i, 48 @@ -3956,20 +3942,16 @@ sw.bb12.i: ; preds = %required_atomicity. %or.i.i.i = or disjoint i64 %shl.i.i, %24 %or.i.i = or disjoint i64 %or.i.i.i, %23 %add.ptr.i = getelementptr i8, ptr %8, i64 8 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i, i64 2) ] %25 = load atomic i16, ptr %add.ptr.i monotonic, align 2 %conv.i.i24.i = zext i16 %25 to i64 %add.ptr.i.i25.i = getelementptr i8, ptr %8, i64 10 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i25.i, i64 2) ] %26 = load atomic i16, ptr %add.ptr.i.i25.i monotonic, align 2 %conv2.i.i26.i = zext i16 %26 to i64 %shl.i.i27.i = shl nuw nsw i64 %conv2.i.i26.i, 16 %add.ptr.i28.i = getelementptr i8, ptr %8, i64 12 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i28.i, i64 2) ] %27 = load atomic i16, ptr %add.ptr.i28.i monotonic, align 2 %conv.i2.i29.i = zext i16 %27 to i64 %add.ptr.i3.i30.i = getelementptr i8, ptr %8, i64 14 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i3.i30.i, i64 2) ] %28 = load atomic i16, ptr %add.ptr.i3.i30.i monotonic, align 2 %conv2.i4.i31.i = zext i16 %28 to i64 %29 = shl nuw i64 %conv2.i4.i31.i, 48 @@ -3980,20 +3962,16 @@ sw.bb12.i: ; preds = %required_atomicity. br label %load_atom_16.exit sw.bb15.i: ; preds = %required_atomicity.exit.i - call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 4) ] %31 = load atomic i32, ptr %8 monotonic, align 4 %add.ptr.i35.i = getelementptr i8, ptr %8, i64 4 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i35.i, i64 4) ] %32 = load atomic i32, ptr %add.ptr.i35.i monotonic, align 4 %conv.i36.i = zext i32 %32 to i64 %shl.i37.i = shl nuw i64 %conv.i36.i, 32 %conv2.i.i = zext i32 %31 to i64 %or.i38.i = or disjoint i64 %shl.i37.i, %conv2.i.i %add.ptr17.i = getelementptr i8, ptr %8, i64 8 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr17.i, i64 4) ] %33 = load atomic i32, ptr %add.ptr17.i monotonic, align 4 %add.ptr.i39.i = getelementptr i8, ptr %8, i64 12 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i39.i, i64 4) ] %34 = load atomic i32, ptr %add.ptr.i39.i monotonic, align 4 %conv.i40.i = zext i32 %34 to i64 %shl.i41.i = shl nuw i64 %conv.i40.i, 32 @@ -4002,10 +3980,8 @@ sw.bb15.i: ; preds = %required_atomicity. br label %load_atom_16.exit sw.bb19.i: ; preds = %required_atomicity.exit.i - call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %35 = load atomic i64, ptr %8 monotonic, align 8 %add.ptr21.i = getelementptr i8, ptr %8, i64 8 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr21.i, i64 8) ] %36 = load atomic i64, ptr %add.ptr21.i monotonic, align 8 br label %load_atom_16.exit @@ -4015,10 +3991,8 @@ sw.bb23.i: ; preds = %required_atomicity. %conv.i44.i = and i32 %37, 56 %and1.i45.i = and i64 %9, -8 %38 = inttoptr i64 %and1.i45.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %38, i64 8) ] %39 = load atomic i64, ptr %38 monotonic, align 8 %add.ptr.i46.i = getelementptr i8, ptr %38, i64 8 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i46.i, i64 8) ] %40 = load atomic i64, ptr %add.ptr.i46.i monotonic, align 8 %sh_prom.i.i = zext nneg i32 %conv.i44.i to i64 %shr.i.i = lshr i64 %39, %sh_prom.i.i @@ -4034,10 +4008,8 @@ sw.bb23.i: ; preds = %required_atomicity. %conv.i50.i = and i32 %42, 56 %and1.i51.i = and i64 %41, -8 %43 = inttoptr i64 %and1.i51.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %43, i64 8) ] %44 = load atomic i64, ptr %43 monotonic, align 8 %add.ptr.i52.i = getelementptr i8, ptr %43, i64 8 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i52.i, i64 8) ] %45 = load atomic i64, ptr %add.ptr.i52.i monotonic, align 8 %sh_prom.i53.i = zext nneg i32 %conv.i50.i to i64 %shr.i54.i = lshr i64 %44, %sh_prom.i53.i @@ -4049,7 +4021,6 @@ sw.bb23.i: ; preds = %required_atomicity. br label %load_atom_16.exit sw.bb27.i: ; preds = %required_atomicity.exit.i - call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 16) ] %tobool.not.i.i = icmp eq i32 %and.i, 0 br i1 %tobool.not.i.i, label %atomic16_read_rw.exit.i.i, label %if.then.i.i @@ -4060,7 +4031,6 @@ if.then.i.i: ; preds = %sw.bb27.i br label %load_atom_16.exit atomic16_read_rw.exit.i.i: ; preds = %sw.bb27.i - call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 16) ] %47 = cmpxchg ptr %8, i128 0, i128 0 seq_cst seq_cst, align 16 %48 = extractvalue { i128, i1 } %47, 0 %extract.t2.i.i.i = trunc i128 %48 to i64 @@ -4300,7 +4270,6 @@ if.else17.i: ; preds = %if.else.i br i1 %cmp.i.i, label %if.then.i.i, label %if.end.i.i if.then.i.i: ; preds = %if.else17.i - call void @llvm.assume(i1 true) [ "align"(ptr %7, i64 2) ] store atomic i16 %spec.select12.i, ptr %7 monotonic, align 2 br label %return @@ -4390,7 +4359,6 @@ if.then9.i.i: ; preds = %if.end5.i.i %add.ptr.i.i = getelementptr i8, ptr %7, i64 -1 %conv10.i.i = zext i16 %spec.select12.i to i32 %shl.i.i = shl nuw nsw i32 %conv10.i.i, 8 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i, i64 4) ] %14 = load atomic i32, ptr %add.ptr.i.i monotonic, align 4 br label %do.body1.i.i.i @@ -4412,7 +4380,6 @@ if.then14.i.i: ; preds = %if.else.i.i %add.ptr15.i.i = getelementptr i8, ptr %7, i64 -3 %conv16.i.i = zext i16 %spec.select12.i to i64 %shl17.i.i = shl nuw nsw i64 %conv16.i.i, 24 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr15.i.i, i64 8) ] %18 = load atomic i64, ptr %add.ptr15.i.i monotonic, align 8 br label %do.body1.i15.i.i @@ -4435,7 +4402,6 @@ if.then22.i.i: ; preds = %if.else18.i.i %retval.sroa.0.0.extract.trunc.i.i.i = shl i64 %a.sroa.0.0.insert.ext.i.tr.i.i, 56 %22 = lshr i16 %spec.select12.i, 8 %add.ptr33.i.i = getelementptr i8, ptr %7, i64 -7 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr33.i.i, i64 16) ] %23 = load i128, ptr %add.ptr33.i.i, align 16 %b.sroa.2.0.insert.ext.i18.i.i.i = zext nneg i16 %22 to i128 %b.sroa.2.0.insert.shift.i19.i.i.i = shl nuw nsw i128 %b.sroa.2.0.insert.ext.i18.i.i.i, 64 @@ -4583,7 +4549,6 @@ if.else17.i: ; preds = %if.else.i br i1 %cmp.i.i, label %if.then.i.i, label %if.end.i.i if.then.i.i: ; preds = %if.else17.i - call void @llvm.assume(i1 true) [ "align"(ptr %7, i64 4) ] store atomic i32 %spec.select12.i, ptr %7 monotonic, align 4 br label %return @@ -4678,12 +4643,10 @@ sw.bb.i.i: ; preds = %required_atomicity. sw.bb2.i.i: ; preds = %required_atomicity.exit.i.i %conv.i23.i.i = trunc i32 %spec.select12.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %7, i64 2) ] store atomic i16 %conv.i23.i.i, ptr %7 monotonic, align 2 %add.ptr.i.i.i = getelementptr i8, ptr %7, i64 2 %shr1.i.i.i = lshr i32 %spec.select12.i, 16 %conv2.i.i.i = trunc nuw i32 %shr1.i.i.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i.i, i64 2) ] store atomic i16 %conv2.i.i.i, ptr %add.ptr.i.i.i monotonic, align 2 br label %return @@ -4702,7 +4665,6 @@ sw.bb7.i.i: ; preds = %sw.bb3.i.i %shl6.i.i.i = shl i32 16777215, %mul1.i.i.i %idx.neg.i.i.i = sub nsw i64 0, %and.i.i %add.ptr.i26.i.i = getelementptr i8, ptr %7, i64 %idx.neg.i.i.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i26.i.i, i64 4) ] %16 = load atomic i32, ptr %add.ptr.i26.i.i monotonic, align 4 %not.i.i.i.i = xor i32 %shl6.i.i.i, -1 br label %do.body1.i.i.i.i @@ -4737,7 +4699,6 @@ sw.bb12.i.i: ; preds = %sw.bb3.i.i %idx.ext.i34.i.i = and i64 %21, 3 %idx.neg.i35.i.i = sub nsw i64 0, %idx.ext.i34.i.i %add.ptr.i36.i.i = getelementptr i8, ptr %add.ptr14.i.i, i64 %idx.neg.i35.i.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i36.i.i, i64 4) ] %23 = load atomic i32, ptr %add.ptr.i36.i.i monotonic, align 4 %not.i.i37.i.i = xor i32 %shl6.i33.i.i, -1 br label %do.body1.i.i38.i.i @@ -4768,7 +4729,6 @@ if.then22.i.i: ; preds = %sw.bb18.i.i %shl5.i.i.i = shl nuw nsw i64 4294967295, %mul1.i45.i.i %idx.neg.i47.i.i = sub nsw i64 0, %and.i.i %add.ptr.i48.i.i = getelementptr i8, ptr %7, i64 %idx.neg.i47.i.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i48.i.i, i64 8) ] %27 = load atomic i64, ptr %add.ptr.i48.i.i monotonic, align 8 %not.i.i49.i.i = xor i64 %shl5.i.i.i, -1 br label %do.body1.i.i50.i.i @@ -4795,7 +4755,6 @@ if.else.i.i: ; preds = %sw.bb18.i.i %idx.ext.i55.i.i = and i64 %8, 15 %idx.neg.i56.i.i = sub nsw i64 0, %idx.ext.i55.i.i %add.ptr.i57.i.i = getelementptr i8, ptr %7, i64 %idx.neg.i56.i.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i57.i.i, i64 16) ] %32 = load i128, ptr %add.ptr.i57.i.i, align 16 %not.i.i.i.i.i = xor i64 %retval.sroa.0.0.extract.trunc.i23.i.i.i, -1 %b.sroa.0.0.insert.ext.i.i.i.i.i = zext i64 %not.i.i.i.i.i to i128 @@ -4939,7 +4898,6 @@ if.else34: ; preds = %if.else br i1 %cmp.i, label %if.then.i, label %if.end.i if.then.i: ; preds = %if.else34 - call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 16) ] %11 = load i32, ptr @cpuinfo, align 4 %and.i.i = and i32 %11, 65536 %tobool.not.i.i = icmp eq i32 %and.i.i, 0 @@ -5049,69 +5007,55 @@ sw.bb.i: ; preds = %required_atomicity. sw.bb7.i: ; preds = %required_atomicity.exit.i %conv.i.i.i = trunc i64 %val.addr.1.off0 to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 2) ] store atomic i16 %conv.i.i.i, ptr %9 monotonic, align 2 %add.ptr.i.i.i = getelementptr i8, ptr %9, i64 2 %shr1.i7.i.i = lshr i64 %val.addr.1.off0, 16 %conv2.i.i.i = trunc i64 %shr1.i7.i.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i.i, i64 2) ] store atomic i16 %conv2.i.i.i, ptr %add.ptr.i.i.i monotonic, align 2 %add.ptr.i.i = getelementptr i8, ptr %9, i64 4 %shr1.i.i = lshr i64 %val.addr.1.off0, 32 %conv.i3.i.i = trunc i64 %shr1.i.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i, i64 2) ] store atomic i16 %conv.i3.i.i, ptr %add.ptr.i.i monotonic, align 2 %add.ptr.i4.i.i = getelementptr i8, ptr %9, i64 6 %sum.shift.i.i = lshr i64 %val.addr.1.off0, 48 %conv2.i6.i.i = trunc nuw i64 %sum.shift.i.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i4.i.i, i64 2) ] store atomic i16 %conv2.i6.i.i, ptr %add.ptr.i4.i.i monotonic, align 2 %add.ptr.i = getelementptr i8, ptr %9, i64 8 %conv.i.i35.i = trunc i64 %val.addr.1.off64 to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i, i64 2) ] store atomic i16 %conv.i.i35.i, ptr %add.ptr.i monotonic, align 2 %add.ptr.i.i36.i = getelementptr i8, ptr %9, i64 10 %shr1.i7.i37.i = lshr i64 %val.addr.1.off64, 16 %conv2.i.i38.i = trunc i64 %shr1.i7.i37.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i36.i, i64 2) ] store atomic i16 %conv2.i.i38.i, ptr %add.ptr.i.i36.i monotonic, align 2 %add.ptr.i39.i = getelementptr i8, ptr %9, i64 12 %shr1.i40.i = lshr i64 %val.addr.1.off64, 32 %conv.i3.i41.i = trunc i64 %shr1.i40.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i39.i, i64 2) ] store atomic i16 %conv.i3.i41.i, ptr %add.ptr.i39.i monotonic, align 2 %add.ptr.i4.i42.i = getelementptr i8, ptr %9, i64 14 %sum.shift.i43.i = lshr i64 %val.addr.1.off64, 48 %conv2.i6.i44.i = trunc nuw i64 %sum.shift.i43.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i4.i42.i, i64 2) ] store atomic i16 %conv2.i6.i44.i, ptr %add.ptr.i4.i42.i monotonic, align 2 br label %if.end116 sw.bb8.i: ; preds = %required_atomicity.exit.i %conv.i45.i = trunc i64 %val.addr.1.off0 to i32 - call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 4) ] store atomic i32 %conv.i45.i, ptr %9 monotonic, align 4 %add.ptr.i46.i = getelementptr i8, ptr %9, i64 4 %shr1.i47.i = lshr i64 %val.addr.1.off0, 32 %conv2.i.i = trunc nuw i64 %shr1.i47.i to i32 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i46.i, i64 4) ] store atomic i32 %conv2.i.i, ptr %add.ptr.i46.i monotonic, align 4 %add.ptr9.i = getelementptr i8, ptr %9, i64 8 %conv.i48.i = trunc i64 %val.addr.1.off64 to i32 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr9.i, i64 4) ] store atomic i32 %conv.i48.i, ptr %add.ptr9.i monotonic, align 4 %add.ptr.i49.i = getelementptr i8, ptr %9, i64 12 %shr1.i50.i = lshr i64 %val.addr.1.off64, 32 %conv2.i51.i = trunc nuw i64 %shr1.i50.i to i32 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i49.i, i64 4) ] store atomic i32 %conv2.i51.i, ptr %add.ptr.i49.i monotonic, align 4 br label %if.end116 sw.bb10.i: ; preds = %required_atomicity.exit.i - call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 8) ] store atomic i64 %val.addr.1.off0, ptr %9 monotonic, align 8 %add.ptr11.i = getelementptr i8, ptr %9, i64 8 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr11.i, i64 8) ] store atomic i64 %val.addr.1.off64, ptr %add.ptr11.i monotonic, align 8 br label %if.end116 @@ -5153,7 +5097,6 @@ sw.bb15.i: ; preds = %sw.bb12.i, %sw.bb12 %retval.sroa.2.0.extract.shift.i24.i.i = and i128 %shl.i22.i.i, -18446744073709551616 %idx.neg.i.i = sub nsw i64 0, %and.i %add.ptr.i54.i = getelementptr i8, ptr %9, i64 %idx.neg.i.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i54.i, i64 16) ] %26 = load i128, ptr %add.ptr.i54.i, align 16 %not.i.i.i.i = xor i64 %retval.sroa.0.0.extract.trunc.i23.i.i, -1 %b.sroa.0.0.insert.ext.i.i.i.i = zext i64 %not.i.i.i.i to i128 @@ -5234,7 +5177,6 @@ store_bytes_leN.exit69.i: ; preds = %for.body.i61.i %idx.ext.i92.i = and i64 %31, 15 %idx.neg.i93.i = sub nsw i64 0, %idx.ext.i92.i %add.ptr.i94.i = getelementptr i8, ptr %add.ptr28.i, i64 %idx.neg.i93.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i94.i, i64 16) ] %37 = load i128, ptr %add.ptr.i94.i, align 16 %not.i.i.i95.i = xor i64 %retval.sroa.0.0.extract.trunc.i23.i90.i, -1 %b.sroa.0.0.insert.ext.i.i.i96.i = zext i64 %not.i.i.i95.i to i128 @@ -6725,7 +6667,6 @@ entry: %8 = shl nuw i128 %7, 64 %9 = or disjoint i128 %8, %6 %new.sroa.0.0.insert.insert.i.i = tail call i128 @llvm.bswap.i128(i128 %9) - call void @llvm.assume(i1 true) [ "align"(ptr %call3.i, i64 16) ] %10 = cmpxchg ptr %call3.i, i128 %cmp.sroa.0.0.insert.insert.i.i, i128 %new.sroa.0.0.insert.insert.i.i seq_cst seq_cst, align 16 %11 = extractvalue { i128, i1 } %10, 1 %12 = extractvalue { i128, i1 } %10, 0 @@ -6757,7 +6698,6 @@ entry: %6 = shl nuw i128 %5, 64 %7 = or disjoint i128 %6, %4 %new.sroa.0.0.insert.insert.i = tail call i128 @llvm.bswap.i128(i128 %7) - call void @llvm.assume(i1 true) [ "align"(ptr %call3, i64 16) ] %8 = cmpxchg ptr %call3, i128 %cmp.sroa.0.0.insert.insert.i, i128 %new.sroa.0.0.insert.insert.i seq_cst seq_cst, align 16 %9 = extractvalue { i128, i1 } %8, 1 %10 = extractvalue { i128, i1 } %8, 0 @@ -6789,7 +6729,6 @@ entry: %new.sroa.2.0.insert.shift.i.i = shl nuw i128 %new.sroa.2.0.insert.ext.i.i, 64 %new.sroa.0.0.insert.ext.i.i = zext i64 %newv.coerce0 to i128 %new.sroa.0.0.insert.insert.i.i = or disjoint i128 %new.sroa.2.0.insert.shift.i.i, %new.sroa.0.0.insert.ext.i.i - call void @llvm.assume(i1 true) [ "align"(ptr %call3.i, i64 16) ] %2 = cmpxchg ptr %call3.i, i128 %cmp.sroa.0.0.insert.insert.i.i, i128 %new.sroa.0.0.insert.insert.i.i seq_cst seq_cst, align 16 %3 = extractvalue { i128, i1 } %2, 1 %4 = extractvalue { i128, i1 } %2, 0 @@ -6817,7 +6756,6 @@ entry: %new.sroa.2.0.insert.shift.i = shl nuw i128 %new.sroa.2.0.insert.ext.i, 64 %new.sroa.0.0.insert.ext.i = zext i64 %newv.coerce0 to i128 %new.sroa.0.0.insert.insert.i = or disjoint i128 %new.sroa.2.0.insert.shift.i, %new.sroa.0.0.insert.ext.i - call void @llvm.assume(i1 true) [ "align"(ptr %call3, i64 16) ] %0 = cmpxchg ptr %call3, i128 %cmp.sroa.0.0.insert.insert.i, i128 %new.sroa.0.0.insert.insert.i seq_cst seq_cst, align 16 %1 = extractvalue { i128, i1 } %0, 1 %2 = extractvalue { i128, i1 } %0, 0 @@ -12870,14 +12808,12 @@ do.body.i: ; preds = %sw.epilog.i, %sw.bb ] sw.bb.i: ; preds = %do.body.i - call void @llvm.assume(i1 true) [ "align"(ptr %haddr.0.i, i64 4) ] %8 = load atomic i32, ptr %haddr.0.i monotonic, align 4 %9 = tail call noundef i32 @llvm.bswap.i32(i32 %8) %conv4.i = zext i32 %9 to i64 br label %sw.epilog.i sw.bb6.i: ; preds = %do.body.i, %do.body.i - call void @llvm.assume(i1 true) [ "align"(ptr %haddr.0.i, i64 2) ] %10 = load atomic i16, ptr %haddr.0.i monotonic, align 2 %11 = tail call noundef i16 @llvm.bswap.i16(i16 %10) %conv9.i = zext i16 %11 to i64 @@ -12930,7 +12866,6 @@ if.then17: ; preds = %cond.false13, %cond %idx.ext.i22 = and i64 %15, 7 %idx.neg.i = sub nsw i64 0, %idx.ext.i22 %add.ptr.i23 = getelementptr i8, ptr %16, i64 %idx.neg.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i23, i64 8) ] %17 = load atomic i64, ptr %add.ptr.i23 monotonic, align 8 %18 = tail call noundef i64 @llvm.bswap.i64(i64 %17) %conv.i24 = shl i64 %15, 3 @@ -13007,7 +12942,6 @@ if.else: ; preds = %entry br i1 %cmp.i, label %if.then.i, label %if.end.i if.then.i: ; preds = %if.else - call void @llvm.assume(i1 true) [ "align"(ptr %4, i64 8) ] %6 = load atomic i64, ptr %4 monotonic, align 8 br label %load_atom_8.exit @@ -13133,8 +13067,6 @@ cpu_in_serial_context.exit.i.i: ; preds = %sw.epilog.i.i load_atom_extract_al16_or_exit.exit.i: ; preds = %cpu_in_serial_context.exit.i.i %and1.i10.i = and i64 %5, -8 %18 = inttoptr i64 %and1.i10.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %18, i64 16) ] - call void @llvm.assume(i1 true) [ "align"(ptr %18, i64 16) ] %19 = cmpxchg ptr %18, i128 0, i128 0 seq_cst seq_cst, align 16 %20 = extractvalue { i128, i1 } %19, 0 %21 = trunc i64 %5 to i32 @@ -13151,10 +13083,8 @@ if.end18.i: ; preds = %cpu_in_serial_conte %conv.i22.i = and i32 %22, 56 %and1.i23.i = and i64 %5, -8 %23 = inttoptr i64 %and1.i23.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %23, i64 8) ] %24 = load atomic i64, ptr %23 monotonic, align 8 %add.ptr.i.i = getelementptr i8, ptr %23, i64 8 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i, i64 8) ] %25 = load atomic i64, ptr %add.ptr.i.i monotonic, align 8 %sh_prom.i.i = zext nneg i32 %conv.i22.i to i64 %shr.i.i = lshr i64 %24, %sh_prom.i.i @@ -13405,14 +13335,12 @@ do.body.i: ; preds = %sw.epilog.i, %sw.bb ] sw.bb.i: ; preds = %do.body.i - call void @llvm.assume(i1 true) [ "align"(ptr %haddr.0.i, i64 4) ] %7 = load atomic i32, ptr %haddr.0.i monotonic, align 4 %8 = tail call noundef i32 @llvm.bswap.i32(i32 %7) %conv4.i = zext i32 %8 to i64 br label %sw.epilog.i sw.bb6.i: ; preds = %do.body.i, %do.body.i - call void @llvm.assume(i1 true) [ "align"(ptr %haddr.0.i, i64 2) ] %9 = load atomic i16, ptr %haddr.0.i monotonic, align 2 %10 = tail call noundef i16 @llvm.bswap.i16(i16 %9) %conv9.i = zext i16 %10 to i64 @@ -13462,14 +13390,12 @@ do.body.i35: ; preds = %sw.epilog.i45, %do_ ] sw.bb.i55: ; preds = %do.body.i35 - call void @llvm.assume(i1 true) [ "align"(ptr %haddr.0.i37, i64 4) ] %13 = load atomic i32, ptr %haddr.0.i37 monotonic, align 4 %14 = tail call noundef i32 @llvm.bswap.i32(i32 %13) %conv4.i56 = zext i32 %14 to i64 br label %sw.epilog.i45 sw.bb6.i43: ; preds = %do.body.i35, %do.body.i35 - call void @llvm.assume(i1 true) [ "align"(ptr %haddr.0.i37, i64 2) ] %15 = load atomic i16, ptr %haddr.0.i37 monotonic, align 2 %16 = tail call noundef i16 @llvm.bswap.i16(i16 %15) %conv9.i44 = zext i16 %16 to i64 @@ -13504,7 +13430,6 @@ sw.bb10: ; preds = %if.end %idx.ext.i60 = and i64 %18, 15 %idx.neg.i = sub nsw i64 0, %idx.ext.i60 %add.ptr.i61 = getelementptr i8, ptr %19, i64 %idx.neg.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i61, i64 16) ] %20 = load i32, ptr @cpuinfo, align 4 %and.i.i = and i32 %20, 65536 %tobool.not.i.i = icmp eq i32 %and.i.i, 0 @@ -13517,7 +13442,6 @@ if.then.i.i: ; preds = %sw.bb10 br label %do_ld_whole_be16.exit atomic16_read_rw.exit.i.i: ; preds = %sw.bb10 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i61, i64 16) ] %22 = cmpxchg ptr %add.ptr.i61, i128 0, i128 0 seq_cst seq_cst, align 16 %23 = extractvalue { i128, i1 } %22, 0 %extract.t2.i.i.i = trunc i128 %23 to i64 @@ -13766,13 +13690,11 @@ do.body.i: ; preds = %sw.epilog.i, %sw.bb sw.bb.i: ; preds = %do.body.i %conv1.i = trunc i64 %val_le.addr.0.i to i32 - call void @llvm.assume(i1 true) [ "align"(ptr %pv.addr.0.i, i64 4) ] store atomic i32 %conv1.i, ptr %pv.addr.0.i monotonic, align 4 br label %sw.epilog.i sw.bb2.i: ; preds = %do.body.i, %do.body.i %conv3.i = trunc i64 %val_le.addr.0.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %pv.addr.0.i, i64 2) ] store atomic i16 %conv3.i, ptr %pv.addr.0.i monotonic, align 2 br label %sw.epilog.i @@ -13828,7 +13750,6 @@ if.then30: ; preds = %cond.false26, %cond %idx.ext.i25 = and i64 %12, 7 %idx.neg.i = sub nsw i64 0, %idx.ext.i25 %add.ptr.i26 = getelementptr i8, ptr %11, i64 %idx.neg.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i26, i64 8) ] %13 = load atomic i64, ptr %add.ptr.i26 monotonic, align 8 %not.i.i = xor i64 %shl5.i, -1 br label %do.body1.i.i @@ -13917,7 +13838,6 @@ if.else16: ; preds = %if.else br i1 %cmp.i, label %if.then.i, label %if.end.i if.then.i: ; preds = %if.else16 - call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] store atomic i64 %spec.select12, ptr %5 monotonic, align 8 br label %if.end22 @@ -14013,33 +13933,27 @@ sw.bb.i: ; preds = %required_atomicity. sw.bb2.i: ; preds = %required_atomicity.exit.i %conv.i.i.i = trunc i64 %spec.select12 to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 2) ] store atomic i16 %conv.i.i.i, ptr %5 monotonic, align 2 %add.ptr.i.i.i = getelementptr i8, ptr %5, i64 2 %shr1.i7.i.i = lshr i64 %spec.select12, 16 %conv2.i.i.i = trunc i64 %shr1.i7.i.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i.i, i64 2) ] store atomic i16 %conv2.i.i.i, ptr %add.ptr.i.i.i monotonic, align 2 %add.ptr.i.i = getelementptr i8, ptr %5, i64 4 %shr1.i.i = lshr i64 %spec.select12, 32 %conv.i3.i.i = trunc i64 %shr1.i.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i, i64 2) ] store atomic i16 %conv.i3.i.i, ptr %add.ptr.i.i monotonic, align 2 %add.ptr.i4.i.i = getelementptr i8, ptr %5, i64 6 %sum.shift.i.i = lshr i64 %spec.select12, 48 %conv2.i6.i.i = trunc nuw i64 %sum.shift.i.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i4.i.i, i64 2) ] store atomic i16 %conv2.i6.i.i, ptr %add.ptr.i4.i.i monotonic, align 2 br label %if.end22 sw.bb3.i: ; preds = %required_atomicity.exit.i %conv.i26.i = trunc i64 %spec.select12 to i32 - call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 4) ] store atomic i32 %conv.i26.i, ptr %5 monotonic, align 4 %add.ptr.i27.i = getelementptr i8, ptr %5, i64 4 %shr1.i28.i = lshr i64 %spec.select12, 32 %conv2.i.i = trunc nuw i64 %shr1.i28.i to i32 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i27.i, i64 4) ] store atomic i32 %conv2.i.i, ptr %add.ptr.i27.i monotonic, align 4 br label %if.end22 @@ -14066,7 +13980,6 @@ sw.bb8.i: ; preds = %sw.bb4.i, %sw.bb4.i %shl5.i.i = shl i64 %shr.i.i, %mul1.i.i %idx.neg.i.i = sub nsw i64 0, %and.i %add.ptr.i30.i = getelementptr i8, ptr %5, i64 %idx.neg.i.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i30.i, i64 8) ] %13 = load atomic i64, ptr %add.ptr.i30.i monotonic, align 8 %not.i.i.i = xor i64 %shl5.i.i, -1 br label %do.body1.i.i.i @@ -14126,7 +14039,6 @@ store_bytes_leN.exit46.i: ; preds = %for.body.i38.i %idx.ext.i55.i = and i64 %17, 7 %idx.neg.i56.i = sub nsw i64 0, %idx.ext.i55.i %add.ptr.i57.i = getelementptr i8, ptr %add.ptr14.i, i64 %idx.neg.i56.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i57.i, i64 8) ] %18 = load atomic i64, ptr %add.ptr.i57.i monotonic, align 8 %not.i.i58.i = xor i64 %shl5.i54.i, -1 br label %do.body1.i.i59.i @@ -14157,7 +14069,6 @@ sw.bb17.i: ; preds = %required_atomicity. %idx.ext.i67.i = and i64 %6, 15 %idx.neg.i68.i = sub nsw i64 0, %idx.ext.i67.i %add.ptr.i69.i = getelementptr i8, ptr %5, i64 %idx.neg.i68.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i69.i, i64 16) ] %23 = load i128, ptr %add.ptr.i69.i, align 16 %not.i.i.i.i = xor i64 %retval.sroa.0.0.extract.trunc.i23.i.i, -1 %b.sroa.0.0.insert.ext.i.i.i.i = zext i64 %not.i.i.i.i to i128 @@ -14394,13 +14305,11 @@ do.body.i: ; preds = %sw.epilog.i, %sw.bb sw.bb.i: ; preds = %do.body.i %conv1.i = trunc i64 %val_le.addr.0.i to i32 - call void @llvm.assume(i1 true) [ "align"(ptr %pv.addr.0.i, i64 4) ] store atomic i32 %conv1.i, ptr %pv.addr.0.i monotonic, align 4 br label %sw.epilog.i sw.bb2.i: ; preds = %do.body.i, %do.body.i %conv3.i = trunc i64 %val_le.addr.0.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %pv.addr.0.i, i64 2) ] store atomic i16 %conv3.i, ptr %pv.addr.0.i monotonic, align 2 br label %sw.epilog.i @@ -14447,13 +14356,11 @@ do.body.i20: ; preds = %sw.epilog.i30, %sto sw.bb.i38: ; preds = %do.body.i20 %conv1.i39 = trunc i64 %val_le.addr.0.i23 to i32 - call void @llvm.assume(i1 true) [ "align"(ptr %pv.addr.0.i21, i64 4) ] store atomic i32 %conv1.i39, ptr %pv.addr.0.i21 monotonic, align 4 br label %sw.epilog.i30 sw.bb2.i28: ; preds = %do.body.i20, %do.body.i20 %conv3.i29 = trunc i64 %val_le.addr.0.i23 to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %pv.addr.0.i21, i64 2) ] store atomic i16 %conv3.i29, ptr %pv.addr.0.i21 monotonic, align 2 br label %sw.epilog.i30 @@ -14508,7 +14415,6 @@ sw.bb28: ; preds = %if.end17 %idx.ext.i46 = and i64 %11, 15 %idx.neg.i = sub nsw i64 0, %idx.ext.i46 %add.ptr.i47 = getelementptr i8, ptr %10, i64 %idx.neg.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i47, i64 16) ] %17 = load i128, ptr %add.ptr.i47, align 16 %not.i.i.i = xor i64 %retval.sroa.0.0.extract.trunc.i23.i, -1 %b.sroa.0.0.insert.ext.i.i.i = zext i64 %not.i.i.i to i128 diff --git a/bench/qemu/optimized/accel_tcg_user-exec.c.ll b/bench/qemu/optimized/accel_tcg_user-exec.c.ll index 19918efdbf8..f7f15bab371 100644 --- a/bench/qemu/optimized/accel_tcg_user-exec.c.ll +++ b/bench/qemu/optimized/accel_tcg_user-exec.c.ll @@ -1748,7 +1748,6 @@ cpu_mmu_lookup.exit: ; preds = %get_alignment_bits. br i1 %cmp.i, label %if.then.i9, label %if.end.i if.then.i9: ; preds = %cpu_mmu_lookup.exit - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 2) ] %3 = load atomic i16, ptr %1 monotonic, align 2 br label %load_atom_2.exit @@ -1886,7 +1885,6 @@ if.then31.i: ; preds = %sw.bb27.i %mul.i.i = and i64 %conv.i16.i, 56 %and1.i17.i = and i64 %add.i.i.i, -8 %14 = inttoptr i64 %and1.i17.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %14, i64 8) ] %15 = load atomic i64, ptr %14 monotonic, align 8 %shr2.i.i = lshr i64 %15, %mul.i.i %conv33.i = trunc i64 %shr2.i.i to i16 @@ -1895,7 +1893,6 @@ if.then31.i: ; preds = %sw.bb27.i if.end34.i: ; preds = %sw.bb27.i %and1.i18.i = and i64 %add.i.i.i, -16 %16 = inttoptr i64 %and1.i18.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %16, i64 16) ] %tobool.not.i.i20.i = icmp eq i32 %and2.i, 0 br i1 %tobool.not.i.i20.i, label %if.end.i.i.i, label %if.then.i.i.i @@ -1931,7 +1928,6 @@ if.then12.i.i.i: ; preds = %if.end8.i.i.i br label %cleanup.i.i.i if.end13.i.i.i: ; preds = %if.end8.i.i.i - call void @llvm.assume(i1 true) [ "align"(ptr %16, i64 16) ] %21 = load i32, ptr @cpuinfo, align 4 %and.i12.i.i.i = and i32 %21, 65536 %tobool.not.i.i.i.i = icmp eq i32 %and.i12.i.i.i, 0 @@ -2039,7 +2035,6 @@ cpu_mmu_lookup.exit: ; preds = %get_alignment_bits. if.then.i10: ; preds = %cpu_mmu_lookup.exit %2 = inttoptr i64 %add.i.i.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 4) ] %3 = load atomic i32, ptr %2 monotonic, align 4 br label %load_atom_4.exit @@ -2177,10 +2172,8 @@ sw.bb.i: ; preds = %required_atomicity. %conv.i16.i = and i32 %15, 24 %and1.i17.i = and i64 %add.i.i.i, -4 %16 = inttoptr i64 %and1.i17.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %16, i64 4) ] %17 = load atomic i32, ptr %16 monotonic, align 4 %add.ptr.i.i = getelementptr i8, ptr %16, i64 4 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i, i64 4) ] %18 = load atomic i32, ptr %add.ptr.i.i monotonic, align 4 %shr.i.i7 = lshr i32 %17, %conv.i16.i %sub.i.i = sub i32 0, %15 @@ -2199,7 +2192,6 @@ if.then29.i: ; preds = %sw.bb26.i %mul.i.i = and i64 %conv.i19.i, 24 %and1.i20.i = and i64 %add.i.i.i, -8 %19 = inttoptr i64 %and1.i20.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %19, i64 8) ] %20 = load atomic i64, ptr %19 monotonic, align 8 %shr2.i.i = lshr i64 %20, %mul.i.i %conv3.i.i = trunc i64 %shr2.i.i to i32 @@ -2208,7 +2200,6 @@ if.then29.i: ; preds = %sw.bb26.i if.end31.i: ; preds = %sw.bb26.i %and1.i21.i = and i64 %add.i.i.i, -8 %21 = inttoptr i64 %and1.i21.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %21, i64 16) ] %tobool.not.i.i23.i = icmp eq i32 %and2.i, 0 br i1 %tobool.not.i.i23.i, label %if.end.i.i.i, label %if.then.i.i.i @@ -2244,7 +2235,6 @@ if.then12.i.i.i: ; preds = %if.end8.i.i.i br label %cleanup.i.i.i if.end13.i.i.i: ; preds = %if.end8.i.i.i - call void @llvm.assume(i1 true) [ "align"(ptr %21, i64 16) ] %26 = load i32, ptr @cpuinfo, align 4 %and.i12.i.i.i = and i32 %26, 65536 %tobool.not.i.i.i.i = icmp eq i32 %and.i12.i.i.i, 0 @@ -2355,7 +2345,6 @@ cpu_mmu_lookup.exit: ; preds = %get_alignment_bits. if.then.i10: ; preds = %cpu_mmu_lookup.exit %2 = inttoptr i64 %add.i.i.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] %3 = load atomic i64, ptr %2 monotonic, align 8 br label %load_atom_8.exit @@ -2481,7 +2470,6 @@ cpu_in_serial_context.exit.i.i: ; preds = %sw.epilog.i.i if.end.i.i.i: ; preds = %cpu_in_serial_context.exit.i.i %and1.i10.i = and i64 %add.i.i.i, -8 %15 = inttoptr i64 %and1.i10.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %15, i64 16) ] tail call void @mmap_lock() #16 %16 = load i64, ptr @guest_base, align 8 %sub.i.i.i = sub i64 %and1.i10.i, %16 @@ -2507,7 +2495,6 @@ if.then12.i.i.i: ; preds = %if.end8.i.i.i br label %load_atom_extract_al16_or_exit.exit.i if.end13.i.i.i: ; preds = %if.end8.i.i.i - call void @llvm.assume(i1 true) [ "align"(ptr %15, i64 16) ] %19 = load i32, ptr @cpuinfo, align 4 %and.i12.i.i.i = and i32 %19, 65536 %tobool.not.i.i.i.i = icmp eq i32 %and.i12.i.i.i, 0 @@ -2549,10 +2536,8 @@ if.end18.i: ; preds = %cpu_in_serial_conte %conv.i22.i = and i32 %24, 56 %and1.i23.i = and i64 %add.i.i.i, -8 %25 = inttoptr i64 %and1.i23.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %25, i64 8) ] %26 = load atomic i64, ptr %25 monotonic, align 8 %add.ptr.i.i = getelementptr i8, ptr %25, i64 8 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i, i64 8) ] %27 = load atomic i64, ptr %add.ptr.i.i monotonic, align 8 %sh_prom.i.i = zext nneg i32 %conv.i22.i to i64 %shr.i.i9 = lshr i64 %26, %sh_prom.i.i @@ -2790,20 +2775,16 @@ sw.bb.i: ; preds = %required_atomicity. br label %load_atom_16.exit sw.bb12.i: ; preds = %required_atomicity.exit.i - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 2) ] %10 = load atomic i16, ptr %1 monotonic, align 2 %conv.i.i.i = zext i16 %10 to i64 %add.ptr.i.i.i = getelementptr i8, ptr %1, i64 2 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i.i, i64 2) ] %11 = load atomic i16, ptr %add.ptr.i.i.i monotonic, align 2 %conv2.i.i.i = zext i16 %11 to i64 %shl.i.i.i = shl nuw nsw i64 %conv2.i.i.i, 16 %add.ptr.i.i = getelementptr i8, ptr %1, i64 4 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i, i64 2) ] %12 = load atomic i16, ptr %add.ptr.i.i monotonic, align 2 %conv.i2.i.i = zext i16 %12 to i64 %add.ptr.i3.i.i = getelementptr i8, ptr %1, i64 6 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i3.i.i, i64 2) ] %13 = load atomic i16, ptr %add.ptr.i3.i.i monotonic, align 2 %conv2.i4.i.i = zext i16 %13 to i64 %14 = shl nuw i64 %conv2.i4.i.i, 48 @@ -2812,20 +2793,16 @@ sw.bb12.i: ; preds = %required_atomicity. %or.i.i.i = or disjoint i64 %shl.i.i, %15 %or.i.i = or disjoint i64 %or.i.i.i, %14 %add.ptr.i = getelementptr i8, ptr %1, i64 8 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i, i64 2) ] %16 = load atomic i16, ptr %add.ptr.i monotonic, align 2 %conv.i.i24.i = zext i16 %16 to i64 %add.ptr.i.i25.i = getelementptr i8, ptr %1, i64 10 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i25.i, i64 2) ] %17 = load atomic i16, ptr %add.ptr.i.i25.i monotonic, align 2 %conv2.i.i26.i = zext i16 %17 to i64 %shl.i.i27.i = shl nuw nsw i64 %conv2.i.i26.i, 16 %add.ptr.i28.i = getelementptr i8, ptr %1, i64 12 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i28.i, i64 2) ] %18 = load atomic i16, ptr %add.ptr.i28.i monotonic, align 2 %conv.i2.i29.i = zext i16 %18 to i64 %add.ptr.i3.i30.i = getelementptr i8, ptr %1, i64 14 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i3.i30.i, i64 2) ] %19 = load atomic i16, ptr %add.ptr.i3.i30.i monotonic, align 2 %conv2.i4.i31.i = zext i16 %19 to i64 %20 = shl nuw i64 %conv2.i4.i31.i, 48 @@ -2836,20 +2813,16 @@ sw.bb12.i: ; preds = %required_atomicity. br label %load_atom_16.exit sw.bb15.i: ; preds = %required_atomicity.exit.i - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 4) ] %22 = load atomic i32, ptr %1 monotonic, align 4 %add.ptr.i35.i = getelementptr i8, ptr %1, i64 4 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i35.i, i64 4) ] %23 = load atomic i32, ptr %add.ptr.i35.i monotonic, align 4 %conv.i36.i = zext i32 %23 to i64 %shl.i37.i = shl nuw i64 %conv.i36.i, 32 %conv2.i.i = zext i32 %22 to i64 %or.i38.i = or disjoint i64 %shl.i37.i, %conv2.i.i %add.ptr17.i = getelementptr i8, ptr %1, i64 8 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr17.i, i64 4) ] %24 = load atomic i32, ptr %add.ptr17.i monotonic, align 4 %add.ptr.i39.i = getelementptr i8, ptr %1, i64 12 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i39.i, i64 4) ] %25 = load atomic i32, ptr %add.ptr.i39.i monotonic, align 4 %conv.i40.i = zext i32 %25 to i64 %shl.i41.i = shl nuw i64 %conv.i40.i, 32 @@ -2858,10 +2831,8 @@ sw.bb15.i: ; preds = %required_atomicity. br label %load_atom_16.exit sw.bb19.i: ; preds = %required_atomicity.exit.i - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] %26 = load atomic i64, ptr %1 monotonic, align 8 %add.ptr21.i = getelementptr i8, ptr %1, i64 8 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr21.i, i64 8) ] %27 = load atomic i64, ptr %add.ptr21.i monotonic, align 8 br label %load_atom_16.exit @@ -2871,10 +2842,8 @@ sw.bb23.i: ; preds = %required_atomicity. %conv.i44.i = and i32 %28, 56 %and1.i45.i = and i64 %add.i.i.i, -8 %29 = inttoptr i64 %and1.i45.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %29, i64 8) ] %30 = load atomic i64, ptr %29 monotonic, align 8 %add.ptr.i46.i = getelementptr i8, ptr %29, i64 8 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i46.i, i64 8) ] %31 = load atomic i64, ptr %add.ptr.i46.i monotonic, align 8 %sh_prom.i.i = zext nneg i32 %conv.i44.i to i64 %shr.i.i13 = lshr i64 %30, %sh_prom.i.i @@ -2890,10 +2859,8 @@ sw.bb23.i: ; preds = %required_atomicity. %conv.i50.i = and i32 %33, 56 %and1.i51.i = and i64 %32, -8 %34 = inttoptr i64 %and1.i51.i to ptr - call void @llvm.assume(i1 true) [ "align"(ptr %34, i64 8) ] %35 = load atomic i64, ptr %34 monotonic, align 8 %add.ptr.i52.i = getelementptr i8, ptr %34, i64 8 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i52.i, i64 8) ] %36 = load atomic i64, ptr %add.ptr.i52.i monotonic, align 8 %sh_prom.i53.i = zext nneg i32 %conv.i50.i to i64 %shr.i54.i = lshr i64 %35, %sh_prom.i53.i @@ -2905,7 +2872,6 @@ sw.bb23.i: ; preds = %required_atomicity. br label %load_atom_16.exit sw.bb27.i: ; preds = %required_atomicity.exit.i - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 16) ] %tobool.not.i.i = icmp eq i32 %and.i11, 0 br i1 %tobool.not.i.i, label %if.end.i.i, label %if.then.i.i @@ -2941,7 +2907,6 @@ if.then12.i.i: ; preds = %if.end8.i.i br label %cleanup.i.i if.end13.i.i: ; preds = %if.end8.i.i - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 16) ] %41 = load i32, ptr @cpuinfo, align 4 %and.i12.i.i = and i32 %41, 65536 %tobool.not.i.i62.i = icmp eq i32 %and.i12.i.i, 0 @@ -3109,7 +3074,6 @@ cpu_mmu_lookup.exit: ; preds = %get_alignment_bits. br i1 %cmp.i, label %if.then.i8, label %if.end.i if.then.i8: ; preds = %cpu_mmu_lookup.exit - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 2) ] store atomic i16 %spec.select, ptr %1 monotonic, align 2 br label %store_atom_2.exit @@ -3199,7 +3163,6 @@ if.then9.i: ; preds = %if.end5.i %add.ptr.i = getelementptr i8, ptr %1, i64 -1 %conv10.i = zext i16 %spec.select to i32 %shl.i = shl nuw nsw i32 %conv10.i, 8 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i, i64 4) ] %10 = load atomic i32, ptr %add.ptr.i monotonic, align 4 br label %do.body1.i.i @@ -3221,7 +3184,6 @@ if.then14.i: ; preds = %if.else.i %add.ptr15.i = getelementptr i8, ptr %1, i64 -3 %conv16.i = zext i16 %spec.select to i64 %shl17.i = shl nuw nsw i64 %conv16.i, 24 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr15.i, i64 8) ] %14 = load atomic i64, ptr %add.ptr15.i monotonic, align 8 br label %do.body1.i15.i @@ -3244,7 +3206,6 @@ if.then22.i: ; preds = %if.else18.i %retval.sroa.0.0.extract.trunc.i.i = shl i64 %a.sroa.0.0.insert.ext.i.tr.i, 56 %18 = lshr i16 %spec.select, 8 %add.ptr33.i = getelementptr i8, ptr %1, i64 -7 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr33.i, i64 16) ] %19 = load i128, ptr %add.ptr33.i, align 16 %b.sroa.2.0.insert.ext.i18.i.i = zext nneg i16 %18 to i128 %b.sroa.2.0.insert.shift.i19.i.i = shl nuw nsw i128 %b.sroa.2.0.insert.ext.i18.i.i, 64 @@ -3330,7 +3291,6 @@ cpu_mmu_lookup.exit: ; preds = %get_alignment_bits. br i1 %cmp.i, label %if.then.i9, label %if.end.i if.then.i9: ; preds = %cpu_mmu_lookup.exit - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 4) ] store atomic i32 %spec.select, ptr %1 monotonic, align 4 br label %store_atom_4.exit @@ -3425,12 +3385,10 @@ sw.bb.i: ; preds = %required_atomicity. sw.bb2.i: ; preds = %required_atomicity.exit.i %conv.i23.i = trunc i32 %spec.select to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 2) ] store atomic i16 %conv.i23.i, ptr %1 monotonic, align 2 %add.ptr.i.i = getelementptr i8, ptr %1, i64 2 %shr1.i.i = lshr i32 %spec.select, 16 %conv2.i.i = trunc nuw i32 %shr1.i.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i, i64 2) ] store atomic i16 %conv2.i.i, ptr %add.ptr.i.i monotonic, align 2 br label %store_atom_4.exit @@ -3449,7 +3407,6 @@ sw.bb7.i: ; preds = %sw.bb3.i %shl6.i.i = shl i32 16777215, %mul1.i.i %idx.neg.i.i = sub nsw i64 0, %and.i6 %add.ptr.i26.i = getelementptr i8, ptr %1, i64 %idx.neg.i.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i26.i, i64 4) ] %12 = load atomic i32, ptr %add.ptr.i26.i monotonic, align 4 %not.i.i.i = xor i32 %shl6.i.i, -1 br label %do.body1.i.i.i @@ -3484,7 +3441,6 @@ sw.bb12.i: ; preds = %sw.bb3.i %idx.ext.i34.i = and i64 %17, 3 %idx.neg.i35.i = sub nsw i64 0, %idx.ext.i34.i %add.ptr.i36.i = getelementptr i8, ptr %add.ptr14.i, i64 %idx.neg.i35.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i36.i, i64 4) ] %19 = load atomic i32, ptr %add.ptr.i36.i monotonic, align 4 %not.i.i37.i = xor i32 %shl6.i33.i, -1 br label %do.body1.i.i38.i @@ -3515,7 +3471,6 @@ if.then22.i: ; preds = %sw.bb18.i %shl5.i.i = shl nuw nsw i64 4294967295, %mul1.i45.i %idx.neg.i47.i = sub nsw i64 0, %and.i6 %add.ptr.i48.i = getelementptr i8, ptr %1, i64 %idx.neg.i47.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i48.i, i64 8) ] %23 = load atomic i64, ptr %add.ptr.i48.i monotonic, align 8 %not.i.i49.i = xor i64 %shl5.i.i, -1 br label %do.body1.i.i50.i @@ -3542,7 +3497,6 @@ if.else.i: ; preds = %sw.bb18.i %idx.ext.i55.i = and i64 %add.i.i.i, 15 %idx.neg.i56.i = sub nsw i64 0, %idx.ext.i55.i %add.ptr.i57.i = getelementptr i8, ptr %1, i64 %idx.neg.i56.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i57.i, i64 16) ] %28 = load i128, ptr %add.ptr.i57.i, align 16 %not.i.i.i.i = xor i64 %retval.sroa.0.0.extract.trunc.i23.i.i, -1 %b.sroa.0.0.insert.ext.i.i.i.i = zext i64 %not.i.i.i.i to i128 @@ -3628,7 +3582,6 @@ cpu_mmu_lookup.exit: ; preds = %get_alignment_bits. br i1 %cmp.i, label %if.then.i10, label %if.end.i if.then.i10: ; preds = %cpu_mmu_lookup.exit - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] store atomic i64 %spec.select, ptr %1 monotonic, align 8 br label %store_atom_8.exit @@ -3724,33 +3677,27 @@ sw.bb.i: ; preds = %required_atomicity. sw.bb2.i: ; preds = %required_atomicity.exit.i %conv.i.i.i = trunc i64 %spec.select to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 2) ] store atomic i16 %conv.i.i.i, ptr %1 monotonic, align 2 %add.ptr.i.i.i = getelementptr i8, ptr %1, i64 2 %shr1.i7.i.i = lshr i64 %spec.select, 16 %conv2.i.i.i = trunc i64 %shr1.i7.i.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i.i, i64 2) ] store atomic i16 %conv2.i.i.i, ptr %add.ptr.i.i.i monotonic, align 2 %add.ptr.i.i = getelementptr i8, ptr %1, i64 4 %shr1.i.i = lshr i64 %spec.select, 32 %conv.i3.i.i = trunc i64 %shr1.i.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i, i64 2) ] store atomic i16 %conv.i3.i.i, ptr %add.ptr.i.i monotonic, align 2 %add.ptr.i4.i.i = getelementptr i8, ptr %1, i64 6 %sum.shift.i.i = lshr i64 %spec.select, 48 %conv2.i6.i.i = trunc nuw i64 %sum.shift.i.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i4.i.i, i64 2) ] store atomic i16 %conv2.i6.i.i, ptr %add.ptr.i4.i.i monotonic, align 2 br label %store_atom_8.exit sw.bb3.i: ; preds = %required_atomicity.exit.i %conv.i26.i = trunc i64 %spec.select to i32 - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 4) ] store atomic i32 %conv.i26.i, ptr %1 monotonic, align 4 %add.ptr.i27.i = getelementptr i8, ptr %1, i64 4 %shr1.i28.i = lshr i64 %spec.select, 32 %conv2.i.i = trunc nuw i64 %shr1.i28.i to i32 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i27.i, i64 4) ] store atomic i32 %conv2.i.i, ptr %add.ptr.i27.i monotonic, align 4 br label %store_atom_8.exit @@ -3777,7 +3724,6 @@ sw.bb8.i: ; preds = %sw.bb4.i, %sw.bb4.i %shl5.i.i = shl i64 %shr.i.i9, %mul1.i.i %idx.neg.i.i = sub nsw i64 0, %and.i6 %add.ptr.i30.i = getelementptr i8, ptr %1, i64 %idx.neg.i.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i30.i, i64 8) ] %11 = load atomic i64, ptr %add.ptr.i30.i monotonic, align 8 %not.i.i.i = xor i64 %shl5.i.i, -1 br label %do.body1.i.i.i @@ -3837,7 +3783,6 @@ store_bytes_leN.exit46.i: ; preds = %for.body.i38.i %idx.ext.i55.i = and i64 %15, 7 %idx.neg.i56.i = sub nsw i64 0, %idx.ext.i55.i %add.ptr.i57.i = getelementptr i8, ptr %add.ptr14.i, i64 %idx.neg.i56.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i57.i, i64 8) ] %16 = load atomic i64, ptr %add.ptr.i57.i monotonic, align 8 %not.i.i58.i = xor i64 %shl5.i54.i, -1 br label %do.body1.i.i59.i @@ -3868,7 +3813,6 @@ sw.bb17.i: ; preds = %required_atomicity. %idx.ext.i67.i = and i64 %add.i.i.i, 15 %idx.neg.i68.i = sub nsw i64 0, %idx.ext.i67.i %add.ptr.i69.i = getelementptr i8, ptr %1, i64 %idx.neg.i68.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i69.i, i64 16) ] %21 = load i128, ptr %add.ptr.i69.i, align 16 %not.i.i.i.i = xor i64 %retval.sroa.0.0.extract.trunc.i23.i.i, -1 %b.sroa.0.0.insert.ext.i.i.i.i = zext i64 %not.i.i.i.i to i128 @@ -3960,7 +3904,6 @@ cpu_mmu_lookup.exit: ; preds = %get_alignment_bits. br i1 %cmp.i, label %if.then.i12, label %if.end.i if.then.i12: ; preds = %cpu_mmu_lookup.exit - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 16) ] %6 = load i32, ptr @cpuinfo, align 4 %and.i.i13 = and i32 %6, 65536 %tobool.not.i.i = icmp eq i32 %and.i.i13, 0 @@ -4070,69 +4013,55 @@ sw.bb.i: ; preds = %required_atomicity. sw.bb7.i: ; preds = %required_atomicity.exit.i %conv.i.i.i = trunc i64 %val.addr.0.off0 to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 2) ] store atomic i16 %conv.i.i.i, ptr %1 monotonic, align 2 %add.ptr.i.i.i = getelementptr i8, ptr %1, i64 2 %shr1.i7.i.i = lshr i64 %val.addr.0.off0, 16 %conv2.i.i.i = trunc i64 %shr1.i7.i.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i.i, i64 2) ] store atomic i16 %conv2.i.i.i, ptr %add.ptr.i.i.i monotonic, align 2 %add.ptr.i.i = getelementptr i8, ptr %1, i64 4 %shr1.i.i = lshr i64 %val.addr.0.off0, 32 %conv.i3.i.i = trunc i64 %shr1.i.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i, i64 2) ] store atomic i16 %conv.i3.i.i, ptr %add.ptr.i.i monotonic, align 2 %add.ptr.i4.i.i = getelementptr i8, ptr %1, i64 6 %sum.shift.i.i = lshr i64 %val.addr.0.off0, 48 %conv2.i6.i.i = trunc nuw i64 %sum.shift.i.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i4.i.i, i64 2) ] store atomic i16 %conv2.i6.i.i, ptr %add.ptr.i4.i.i monotonic, align 2 %add.ptr.i = getelementptr i8, ptr %1, i64 8 %conv.i.i35.i = trunc i64 %val.addr.0.off64 to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i, i64 2) ] store atomic i16 %conv.i.i35.i, ptr %add.ptr.i monotonic, align 2 %add.ptr.i.i36.i = getelementptr i8, ptr %1, i64 10 %shr1.i7.i37.i = lshr i64 %val.addr.0.off64, 16 %conv2.i.i38.i = trunc i64 %shr1.i7.i37.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i.i36.i, i64 2) ] store atomic i16 %conv2.i.i38.i, ptr %add.ptr.i.i36.i monotonic, align 2 %add.ptr.i39.i = getelementptr i8, ptr %1, i64 12 %shr1.i40.i = lshr i64 %val.addr.0.off64, 32 %conv.i3.i41.i = trunc i64 %shr1.i40.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i39.i, i64 2) ] store atomic i16 %conv.i3.i41.i, ptr %add.ptr.i39.i monotonic, align 2 %add.ptr.i4.i42.i = getelementptr i8, ptr %1, i64 14 %sum.shift.i43.i = lshr i64 %val.addr.0.off64, 48 %conv2.i6.i44.i = trunc nuw i64 %sum.shift.i43.i to i16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i4.i42.i, i64 2) ] store atomic i16 %conv2.i6.i44.i, ptr %add.ptr.i4.i42.i monotonic, align 2 br label %store_atom_16.exit sw.bb8.i: ; preds = %required_atomicity.exit.i %conv.i45.i = trunc i64 %val.addr.0.off0 to i32 - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 4) ] store atomic i32 %conv.i45.i, ptr %1 monotonic, align 4 %add.ptr.i46.i = getelementptr i8, ptr %1, i64 4 %shr1.i47.i = lshr i64 %val.addr.0.off0, 32 %conv2.i.i = trunc nuw i64 %shr1.i47.i to i32 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i46.i, i64 4) ] store atomic i32 %conv2.i.i, ptr %add.ptr.i46.i monotonic, align 4 %add.ptr9.i = getelementptr i8, ptr %1, i64 8 %conv.i48.i = trunc i64 %val.addr.0.off64 to i32 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr9.i, i64 4) ] store atomic i32 %conv.i48.i, ptr %add.ptr9.i monotonic, align 4 %add.ptr.i49.i = getelementptr i8, ptr %1, i64 12 %shr1.i50.i = lshr i64 %val.addr.0.off64, 32 %conv2.i51.i = trunc nuw i64 %shr1.i50.i to i32 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i49.i, i64 4) ] store atomic i32 %conv2.i51.i, ptr %add.ptr.i49.i monotonic, align 4 br label %store_atom_16.exit sw.bb10.i: ; preds = %required_atomicity.exit.i - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] store atomic i64 %val.addr.0.off0, ptr %1 monotonic, align 8 %add.ptr11.i = getelementptr i8, ptr %1, i64 8 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr11.i, i64 8) ] store atomic i64 %val.addr.0.off64, ptr %add.ptr11.i monotonic, align 8 br label %store_atom_16.exit @@ -4174,7 +4103,6 @@ sw.bb15.i: ; preds = %sw.bb12.i, %sw.bb12 %retval.sroa.2.0.extract.shift.i24.i.i = and i128 %shl.i22.i.i, -18446744073709551616 %idx.neg.i.i = sub nsw i64 0, %and.i10 %add.ptr.i54.i = getelementptr i8, ptr %1, i64 %idx.neg.i.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i54.i, i64 16) ] %21 = load i128, ptr %add.ptr.i54.i, align 16 %not.i.i.i.i = xor i64 %retval.sroa.0.0.extract.trunc.i23.i.i, -1 %b.sroa.0.0.insert.ext.i.i.i.i = zext i64 %not.i.i.i.i to i128 @@ -4255,7 +4183,6 @@ store_bytes_leN.exit69.i: ; preds = %for.body.i61.i %idx.ext.i92.i = and i64 %26, 15 %idx.neg.i93.i = sub nsw i64 0, %idx.ext.i92.i %add.ptr.i94.i = getelementptr i8, ptr %add.ptr28.i, i64 %idx.neg.i93.i - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr.i94.i, i64 16) ] %32 = load i128, ptr %add.ptr.i94.i, align 16 %not.i.i.i95.i = xor i64 %retval.sroa.0.0.extract.trunc.i23.i90.i, -1 %b.sroa.0.0.insert.ext.i.i.i96.i = zext i64 %not.i.i.i95.i to i128 @@ -6416,7 +6343,6 @@ atomic_mmu_lookup.exit: ; preds = %if.end.i %9 = shl nuw i128 %8, 64 %10 = or disjoint i128 %9, %7 %new.sroa.0.0.insert.insert.i = tail call i128 @llvm.bswap.i128(i128 %10) - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 16) ] %11 = cmpxchg ptr %1, i128 %cmp.sroa.0.0.insert.insert.i, i128 %new.sroa.0.0.insert.insert.i seq_cst seq_cst, align 16 %12 = extractvalue { i128, i1 } %11, 1 %13 = extractvalue { i128, i1 } %11, 0 @@ -6501,7 +6427,6 @@ atomic_mmu_lookup.exit: ; preds = %if.end.i %new.sroa.2.0.insert.shift.i = shl nuw i128 %new.sroa.2.0.insert.ext.i, 64 %new.sroa.0.0.insert.ext.i = zext i64 %newv.coerce0 to i128 %new.sroa.0.0.insert.insert.i = or disjoint i128 %new.sroa.2.0.insert.shift.i, %new.sroa.0.0.insert.ext.i - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 16) ] %3 = cmpxchg ptr %1, i128 %cmp.sroa.0.0.insert.insert.i, i128 %new.sroa.0.0.insert.insert.i seq_cst seq_cst, align 16 %4 = extractvalue { i128, i1 } %3, 1 %5 = extractvalue { i128, i1 } %3, 0 diff --git a/bench/rand-rs/optimized/135t15kyxctfb4x9.ll b/bench/rand-rs/optimized/135t15kyxctfb4x9.ll index b6fb34ba1b1..ac8204ca7de 100644 --- a/bench/rand-rs/optimized/135t15kyxctfb4x9.ll +++ b/bench/rand-rs/optimized/135t15kyxctfb4x9.ll @@ -28,6 +28,7 @@ define noundef zeroext i1 @"_ZN77_$LT$rand..distributions..slice..EmptySlice$u20 store ptr @anon.a37fbdd13465bee8b15d068471a4a424.1, ptr %3, align 8 %4 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %4, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %5 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %5, align 8 %6 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -90,13 +91,13 @@ define hidden void @"_ZN112_$LT$rand..rngs..adapter..reseeding..ReseedingCore$LT 26: ; preds = %20 %27 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb369390aba4bc9e0E.llvm.5924959188710931181"(ptr noalias noundef nonnull align 8 dereferenceable(16) %4) #8 + invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb369390aba4bc9e0E.llvm.5924959188710931181"(ptr noalias noundef nonnull align 8 dereferenceable(16) %4) #9 to label %common.resume.i unwind label %28, !noalias !13 28: ; preds = %26 %29 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #9, !noalias !13 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #10, !noalias !13 unreachable common.resume.i: ; preds = %26 @@ -193,13 +194,13 @@ define hidden void @"_ZN4rand4rngs7adapter9reseeding29ReseedingCore$LT$R$C$Rsdr$ 15: ; preds = %9 %16 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb369390aba4bc9e0E.llvm.5924959188710931181"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5) #8 + invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb369390aba4bc9e0E.llvm.5924959188710931181"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5) #9 to label %common.resume unwind label %17 17: ; preds = %15 %18 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #9 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #10 unreachable common.resume: ; preds = %15 @@ -268,8 +269,11 @@ declare hidden void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core.. ; Function Attrs: cold noreturn nounwind nonlazybind uwtable declare void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() unnamed_addr #6 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #7 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #7 +declare void @llvm.experimental.noalias.scope.decl(metadata) #8 attributes #0 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } @@ -278,9 +282,10 @@ attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argm attributes #4 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #5 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #7 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #8 = { cold } -attributes #9 = { cold noreturn nounwind } +attributes #7 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #8 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #9 = { cold } +attributes #10 = { cold noreturn nounwind } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/rand-rs/optimized/2lnmku48it2ei9m4.ll b/bench/rand-rs/optimized/2lnmku48it2ei9m4.ll index e7f0e4d7b00..4097827dc84 100644 --- a/bench/rand-rs/optimized/2lnmku48it2ei9m4.ll +++ b/bench/rand-rs/optimized/2lnmku48it2ei9m4.ll @@ -16,6 +16,7 @@ define noundef zeroext i1 @"_ZN70_$LT$rand_chacha..chacha..ChaCha20Core$u20$as$u store ptr @anon.bfb32b2d99dce86798e78e9774c86fff.4, ptr %3, align 8 %4 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %4, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %5 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %5, align 8 %6 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -354,6 +355,7 @@ define noundef zeroext i1 @"_ZN70_$LT$rand_chacha..chacha..ChaCha12Core$u20$as$u store ptr @anon.bfb32b2d99dce86798e78e9774c86fff.4, ptr %3, align 8 %4 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %4, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %5 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %5, align 8 %6 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -692,6 +694,7 @@ define noundef zeroext i1 @"_ZN69_$LT$rand_chacha..chacha..ChaCha8Core$u20$as$u2 store ptr @anon.bfb32b2d99dce86798e78e9774c86fff.4, ptr %3, align 8 %4 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %4, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %5 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %5, align 8 %6 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -1074,11 +1077,14 @@ declare hidden void @_ZN11rand_chacha4guts11init_chacha8impl_avx17he695ca7497117 ; Function Attrs: nonlazybind uwtable declare hidden noundef i32 @_ZN11rand_chacha4guts10read_u32le17h1e9a6e032093b8f9E.llvm.17720110283109806325(ptr noalias noundef nonnull readonly align 1, i64 noundef) unnamed_addr #0 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #7 + ; Function Attrs: nofree nounwind nonlazybind willreturn memory(argmem: read) -declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #7 +declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #8 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #8 +declare void @llvm.experimental.noalias.scope.decl(metadata) #9 attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } @@ -1087,8 +1093,9 @@ attributes #3 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cp attributes #4 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #5 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" "target-features"="+sse2" } attributes #6 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" "target-features"="+avx" } -attributes #7 = { nofree nounwind nonlazybind willreturn memory(argmem: read) } -attributes #8 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #7 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #8 = { nofree nounwind nonlazybind willreturn memory(argmem: read) } +attributes #9 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/rand-rs/optimized/34yh0c028yq5fj4d.ll b/bench/rand-rs/optimized/34yh0c028yq5fj4d.ll index 28b460c1582..256a7c8dc3d 100644 --- a/bench/rand-rs/optimized/34yh0c028yq5fj4d.ll +++ b/bench/rand-rs/optimized/34yh0c028yq5fj4d.ll @@ -3,7 +3,7 @@ source_filename = "bench/rand-rs/original/34yh0c028yq5fj4d.ll" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -; Function Attrs: nofree nounwind nonlazybind memory(read, inaccessiblemem: none) uwtable +; Function Attrs: nofree nounwind nonlazybind memory(read, inaccessiblemem: write) uwtable define noundef zeroext i1 @"_ZN67_$LT$rand..seq..index..IndexVec$u20$as$u20$core..cmp..PartialEq$GT$2eq17h2445b6c46356fdc0E"(ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %1) unnamed_addr #0 personality ptr @rust_eh_personality { %3 = load i64, ptr %0, align 8, !range !4, !noundef !5 %trunc = trunc nuw i64 %3 to i1 @@ -59,6 +59,10 @@ define noundef zeroext i1 @"_ZN67_$LT$rand..seq..index..IndexVec$u20$as$u20$core %23 = add i64 %21, 1 %24 = getelementptr inbounds i32, ptr %17, i64 %21 %25 = getelementptr inbounds i64, ptr %19, i64 %21 + call void @llvm.assume(i1 true) [ "align"(ptr %24, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %25, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %24, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %25, i64 8) ] %.fca.0.extract.val.i = load i32, ptr %24, align 4, !noalias !6, !noundef !5 %.fca.1.extract.val.i = load i64, ptr %25, align 8, !noalias !6, !noundef !5 %26 = zext i32 %.fca.0.extract.val.i to i64 @@ -87,6 +91,10 @@ define noundef zeroext i1 @"_ZN67_$LT$rand..seq..index..IndexVec$u20$as$u20$core %37 = add i64 %35, 1 %38 = getelementptr inbounds i64, ptr %31, i64 %35 %39 = getelementptr inbounds i32, ptr %33, i64 %35 + call void @llvm.assume(i1 true) [ "align"(ptr %38, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %39, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %38, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %39, i64 4) ] %.fca.0.extract.val.i53 = load i64, ptr %38, align 8, !noalias !9, !noundef !5 %.fca.1.extract.val.i54 = load i32, ptr %39, align 4, !noalias !9, !noundef !5 %40 = zext i32 %.fca.1.extract.val.i54 to i64 @@ -97,12 +105,16 @@ define noundef zeroext i1 @"_ZN67_$LT$rand..seq..index..IndexVec$u20$as$u20$core ; Function Attrs: nonlazybind uwtable declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #1 +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #2 + ; Function Attrs: nofree nounwind nonlazybind willreturn memory(argmem: read) -declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #2 +declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #3 -attributes #0 = { nofree nounwind nonlazybind memory(read, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #0 = { nofree nounwind nonlazybind memory(read, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #2 = { nofree nounwind nonlazybind willreturn memory(argmem: read) } +attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #3 = { nofree nounwind nonlazybind willreturn memory(argmem: read) } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/rayon-rs/optimized/1iwq8xgzg0rclqne.ll b/bench/rayon-rs/optimized/1iwq8xgzg0rclqne.ll index daa6aa43272..8c558329277 100644 --- a/bench/rayon-rs/optimized/1iwq8xgzg0rclqne.ll +++ b/bench/rayon-rs/optimized/1iwq8xgzg0rclqne.ll @@ -281,6 +281,7 @@ define hidden noundef i32 @_ZN4core4sync6atomic11atomic_load17h9063b7aedecf0720E store ptr @anon.412ef50452772e7cece4d25a47724f22.6, ptr %4, align 8 %9 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %9, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %10 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %10, align 8 %11 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -299,6 +300,7 @@ define hidden noundef i32 @_ZN4core4sync6atomic11atomic_load17h9063b7aedecf0720E store ptr @anon.412ef50452772e7cece4d25a47724f22.10, ptr %3, align 8 %16 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %16, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %17 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %17, align 8 %18 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -644,16 +646,19 @@ define hidden void @_ZN10rayon_core8registry8Registry3new17h48fd43abfedc4925E(pt %64 = load ptr, ptr %63, align 8, !align !70, !noundef !8 %65 = getelementptr inbounds nuw i8, ptr %1, i64 32 %66 = load ptr, ptr %65, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] store ptr null, ptr %63, align 8 %67 = getelementptr inbounds nuw i8, ptr %1, i64 56 %68 = load ptr, ptr %67, align 8, !align !70, !noundef !8 %69 = getelementptr inbounds nuw i8, ptr %1, i64 64 %70 = load ptr, ptr %69, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] store ptr null, ptr %67, align 8 %71 = getelementptr inbounds nuw i8, ptr %1, i64 72 %72 = load ptr, ptr %71, align 8, !align !70, !noundef !8 %73 = getelementptr inbounds nuw i8, ptr %1, i64 80 %74 = load ptr, ptr %73, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] store ptr null, ptr %71, align 8 %.sroa.15.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 504 call void @llvm.lifetime.start.p0(i64 640, ptr nonnull %8), !noalias !71 @@ -974,6 +979,7 @@ define hidden void @_ZN10rayon_core8registry8Registry3new17h48fd43abfedc4925E(pt br label %.critedge 151: ; preds = %146 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %.0.val.i = load ptr, ptr @_ZN10rayon_core8registry19WORKER_THREAD_STATE7__getit3VAL17h9453257021be81b2E, align 8, !noundef !8 %152 = icmp eq ptr %.0.val.i, null br i1 %152, label %153, label %211 @@ -1322,7 +1328,7 @@ _ZN3std9panicking3try17h37324d76ce4366a8E.exit.thread: ; preds = %3 %10 = extractvalue { ptr, i32 } %9, 0 call void @_ZN3std9panicking3try8do_catch17h3f6d47912ed2f761E.llvm.17432428852515034553(ptr nonnull %6, ptr %10) %11 = load ptr, ptr %6, align 8, !noalias !191, !nonnull !8, !align !70 - %12 = load ptr, ptr %7, align 8, !noalias !191, !nonnull !8, !align !136 + %12 = load ptr, ptr %7, align 8, !noalias !191, !nonnull !8, !align !136, !noundef !8 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6), !noalias !191 %13 = getelementptr inbounds nuw i8, ptr %0, i64 288 %14 = load ptr, ptr %13, align 32, !noundef !8 @@ -1355,6 +1361,7 @@ _ZN3std9panicking3try17h37324d76ce4366a8E.exit.thread: ; preds = %3 store ptr @anon.e57bac563418e395ded3f76a9b71ce16.33.llvm.4661854399685404667, ptr %5, align 8 %24 = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 1, ptr %24, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %25 = getelementptr inbounds nuw i8, ptr %5, i64 32 store ptr null, ptr %25, align 8 %26 = getelementptr inbounds nuw i8, ptr %5, i64 16 @@ -1408,7 +1415,7 @@ _ZN3std9panicking3try17hf193fa28b097a129E.exit.thread: ; preds = %3 %10 = extractvalue { ptr, i32 } %9, 0 call void @_ZN3std9panicking3try8do_catch17h15cdaf555a9b52c4E.llvm.17432428852515034553(ptr nonnull %6, ptr %10) %11 = load ptr, ptr %6, align 8, !noalias !201, !nonnull !8, !align !70 - %12 = load ptr, ptr %7, align 8, !noalias !201, !nonnull !8, !align !136 + %12 = load ptr, ptr %7, align 8, !noalias !201, !nonnull !8, !align !136, !noundef !8 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6), !noalias !201 %13 = getelementptr inbounds nuw i8, ptr %0, i64 288 %14 = load ptr, ptr %13, align 32, !noundef !8 @@ -1441,6 +1448,7 @@ _ZN3std9panicking3try17hf193fa28b097a129E.exit.thread: ; preds = %3 store ptr @anon.e57bac563418e395ded3f76a9b71ce16.33.llvm.4661854399685404667, ptr %5, align 8 %24 = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 1, ptr %24, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %25 = getelementptr inbounds nuw i8, ptr %5, i64 32 store ptr null, ptr %25, align 8 %26 = getelementptr inbounds nuw i8, ptr %5, i64 16 diff --git a/bench/rayon-rs/optimized/23hapylonnul9vh0.ll b/bench/rayon-rs/optimized/23hapylonnul9vh0.ll index 5308e38457f..e879fe3d6e6 100644 --- a/bench/rayon-rs/optimized/23hapylonnul9vh0.ll +++ b/bench/rayon-rs/optimized/23hapylonnul9vh0.ll @@ -157,8 +157,8 @@ default.unreachable: ; preds = %5 tail call void @llvm.assume(i1 %29) br label %"_ZN3std3sys6common12thread_local10fast_local12Key$LT$T$GT$14try_initialize17hd3a58f82a53581a5E.llvm.17432428852515034553.exit" -"_ZN3std3sys6common12thread_local10fast_local12Key$LT$T$GT$14try_initialize17hd3a58f82a53581a5E.llvm.17432428852515034553.exit": ; preds = %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h3aa63294d30c5feaE.exit.i", %5, %2 - %.0 = phi ptr [ %4, %2 ], [ %4, %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h3aa63294d30c5feaE.exit.i" ], [ null, %5 ] +"_ZN3std3sys6common12thread_local10fast_local12Key$LT$T$GT$14try_initialize17hd3a58f82a53581a5E.llvm.17432428852515034553.exit": ; preds = %2, %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h3aa63294d30c5feaE.exit.i", %5 + %.0 = phi ptr [ %4, %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h3aa63294d30c5feaE.exit.i" ], [ null, %5 ], [ %4, %2 ] ret ptr %.0 } @@ -216,12 +216,14 @@ define internal void @_ZN3std3sys6common12thread_local10fast_local13destroy_valu %27 = extractvalue { ptr, ptr } %21, 1 %28 = icmp ne ptr %26, null tail call void @llvm.assume(i1 %28) + call void @llvm.assume(i1 true) [ "align"(ptr %27, i64 8) ] %29 = icmp ne ptr %27, null tail call void @llvm.assume(i1 %29) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3) store ptr @anon.1e5193481e0f4def8d52ada7935c5b41.1, ptr %3, align 8, !alias.scope !31, !noalias !34 %30 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %30, align 8, !alias.scope !31, !noalias !34 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %31 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %31, align 8, !alias.scope !31, !noalias !34 %32 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -276,6 +278,7 @@ __rust_try.llvm.17432428852515034553.exit: ; preds = %6 %13 = extractvalue { ptr, ptr } %9, 1 %14 = icmp ne ptr %12, null tail call void @llvm.assume(i1 %14) + call void @llvm.assume(i1 true) [ "align"(ptr %13, i64 8) ] %15 = icmp ne ptr %13, null tail call void @llvm.assume(i1 %15) br label %16 @@ -322,6 +325,7 @@ define hidden { ptr, ptr } @_ZN3std9panicking3try17h3b54ab928018d0ecE(ptr noalia %11 = extractvalue { ptr, ptr } %6, 1 %12 = icmp ne ptr %10, null tail call void @llvm.assume(i1 %12) + call void @llvm.assume(i1 true) [ "align"(ptr %11, i64 8) ] %13 = icmp ne ptr %11, null tail call void @llvm.assume(i1 %13) br label %15 @@ -411,6 +415,7 @@ __rust_try.llvm.17432428852515034553.exit: ; preds = %.body.i.i.i.i %33 = extractvalue { ptr, ptr } %29, 1 %34 = icmp ne ptr %32, null tail call void @llvm.assume(i1 %34) + call void @llvm.assume(i1 true) [ "align"(ptr %33, i64 8) ] %35 = icmp ne ptr %33, null tail call void @llvm.assume(i1 %35) br label %37 @@ -456,6 +461,7 @@ __rust_try.llvm.17432428852515034553.exit: ; preds = %6 %13 = extractvalue { ptr, ptr } %9, 1 %14 = icmp ne ptr %12, null tail call void @llvm.assume(i1 %14) + call void @llvm.assume(i1 true) [ "align"(ptr %13, i64 8) ] %15 = icmp ne ptr %13, null tail call void @llvm.assume(i1 %15) br label %16 @@ -589,6 +595,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17h099fa0bb3c2e1354E.llvm.1743 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -613,6 +620,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17h15cdaf555a9b52c4E.llvm.1743 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -637,6 +645,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17h3f6d47912ed2f761E.llvm.1743 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 @@ -661,6 +670,7 @@ define hidden void @_ZN3std9panicking3try8do_catch17h6fa8c5c41703550dE.llvm.1743 %8 = extractvalue { ptr, ptr } %3, 1 %9 = icmp ne ptr %7, null tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %10 = icmp ne ptr %8, null tail call void @llvm.assume(i1 %10) store ptr %7, ptr %0, align 8 diff --git a/bench/rayon-rs/optimized/2lfjygkmshe72z1q.ll b/bench/rayon-rs/optimized/2lfjygkmshe72z1q.ll index c25f71fb488..d5ec769de63 100644 --- a/bench/rayon-rs/optimized/2lfjygkmshe72z1q.ll +++ b/bench/rayon-rs/optimized/2lfjygkmshe72z1q.ll @@ -91,6 +91,7 @@ define hidden void @_ZN4core3fmt9Arguments9new_const17hf50a4933d1135262E.llvm.15 store ptr %1, ptr %0, align 8 %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %2, ptr %7, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %8 = getelementptr inbounds nuw i8, ptr %0, i64 32 store ptr null, ptr %8, align 8 %9 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -104,6 +105,7 @@ define hidden void @_ZN4core3fmt9Arguments9new_const17hf50a4933d1135262E.llvm.15 store ptr @anon.f3b2fad547462e861d3476c3bd8647df.5.llvm.15964793097634730155, ptr %4, align 8, !alias.scope !6, !noalias !9 %12 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %12, align 8, !alias.scope !6, !noalias !9 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %13 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %13, align 8, !alias.scope !6, !noalias !9 %14 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -279,6 +281,7 @@ define hidden noundef i64 @_ZN4core4sync6atomic11atomic_load17h939a445d398624cfE store ptr @anon.f3b2fad547462e861d3476c3bd8647df.11, ptr %4, align 8 %9 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %9, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %10 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %10, align 8 %11 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -297,6 +300,7 @@ define hidden noundef i64 @_ZN4core4sync6atomic11atomic_load17h939a445d398624cfE store ptr @anon.f3b2fad547462e861d3476c3bd8647df.15, ptr %3, align 8 %16 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %16, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %17 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %17, align 8 %18 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -450,6 +454,7 @@ define hidden { i64, i64 } @_ZN4core4sync6atomic23atomic_compare_exchange17h793b store ptr @anon.f3b2fad547462e861d3476c3bd8647df.24, ptr %6, align 8 %48 = getelementptr inbounds nuw i8, ptr %6, i64 8 store i64 1, ptr %48, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %49 = getelementptr inbounds nuw i8, ptr %6, i64 32 store ptr null, ptr %49, align 8 %50 = getelementptr inbounds nuw i8, ptr %6, i64 16 @@ -464,6 +469,7 @@ define hidden { i64, i64 } @_ZN4core4sync6atomic23atomic_compare_exchange17h793b store ptr @anon.f3b2fad547462e861d3476c3bd8647df.27, ptr %7, align 8 %53 = getelementptr inbounds nuw i8, ptr %7, i64 8 store i64 1, ptr %53, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %54 = getelementptr inbounds nuw i8, ptr %7, i64 32 store ptr null, ptr %54, align 8 %55 = getelementptr inbounds nuw i8, ptr %7, i64 16 @@ -710,6 +716,7 @@ _ZN3std3sys4unix5locks11futex_mutex5Mutex4lock17h2824c483f8557e8fE.exit: ; preds 28: ; preds = %"_ZN3std4sync5mutex19MutexGuard$LT$T$GT$3new17hd1113d1d88291f80E.exit" call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7), !noalias !96 + call void @llvm.assume(i1 true) [ "align"(ptr %15, i64 4) ] store ptr %15, ptr %7, align 8, !noalias !96 %29 = getelementptr inbounds nuw i8, ptr %7, i64 8 store i8 %.0.i.i.i, ptr %29, align 8, !noalias !96 @@ -736,6 +743,7 @@ common.resume: ; preds = %118, %75, %84, %30 resume { ptr, i32 } %common.resume.op 35: ; preds = %"_ZN3std4sync5mutex19MutexGuard$LT$T$GT$3new17hd1113d1d88291f80E.exit" + call void @llvm.assume(i1 true) [ "align"(ptr %15, i64 4) ] %36 = cmpxchg ptr %2, i64 1, i64 2 seq_cst monotonic, align 8 %.sroa.18.0.in.i29 = extractvalue { i64, i1 } %36, 1 br i1 %.sroa.18.0.in.i29, label %.preheader, label %39 @@ -802,8 +810,10 @@ common.resume: ; preds = %118, %75, %84, %30 br i1 %65, label %"_ZN10rayon_core8registry12WorkerThread15wait_until_cold28_$u7b$$u7b$closure$u7d$$u7d$17h2e89e11beca417deE.exit.thread", label %66 66: ; preds = %"_ZN10rayon_core8registry12WorkerThread15wait_until_cold28_$u7b$$u7b$closure$u7d$$u7d$17h2e89e11beca417deE.exit" + call void @llvm.assume(i1 true) [ "align"(ptr %15, i64 4) ] %67 = getelementptr inbounds nuw i8, ptr %15, i64 5 store i8 1, ptr %67, align 1 + call void @llvm.assume(i1 true) [ "align"(ptr %15, i64 4) ] %68 = getelementptr inbounds nuw i8, ptr %15, i64 8 %69 = getelementptr inbounds nuw i8, ptr %6, i64 8 br label %71 @@ -818,6 +828,7 @@ common.resume: ; preds = %118, %75, %84, %30 br i1 %73, label %74, label %.loopexit 74: ; preds = %71 + call void @llvm.assume(i1 true) [ "align"(ptr %15, i64 4) ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) store ptr %15, ptr %6, align 8, !noalias !108 store i8 %.0.i.i.i, ptr %69, align 8, !noalias !108 @@ -881,6 +892,7 @@ common.resume: ; preds = %118, %75, %84, %30 br label %_ZN10rayon_core5latch9CoreLatch7wake_up17h904fcd56032c64d5E.exit _ZN10rayon_core5latch9CoreLatch7wake_up17h904fcd56032c64d5E.exit: ; preds = %92, %.loopexit + call void @llvm.assume(i1 true) [ "align"(ptr %15, i64 4) ] %94 = trunc nuw i8 %.0.i.i.i to i1 br i1 %94, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i, label %95 @@ -895,7 +907,7 @@ _ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i.i: ; br i1 %99, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i, label %100 100: ; preds = %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i.i - store atomic i8 1, ptr %26 monotonic, align 1 + store atomic i8 1, ptr %26 monotonic, align 4 br label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i: ; preds = %100, %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i.i, %95, %_ZN10rayon_core5latch9CoreLatch7wake_up17h904fcd56032c64d5E.exit @@ -923,6 +935,7 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i: ; preds = %100, %_ZN br label %_ZN10rayon_core5latch9CoreLatch7wake_up17h904fcd56032c64d5E.exit45 _ZN10rayon_core5latch9CoreLatch7wake_up17h904fcd56032c64d5E.exit45: ; preds = %107, %103, %39 + call void @llvm.assume(i1 true) [ "align"(ptr %15, i64 4) ] %109 = trunc nuw i8 %.0.i.i.i to i1 br i1 %109, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i47, label %110 @@ -937,7 +950,7 @@ _ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i.i46: br i1 %114, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i47, label %115 115: ; preds = %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i.i46 - store atomic i8 1, ptr %26 monotonic, align 1 + store atomic i8 1, ptr %26 monotonic, align 4 br label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i47 _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i47: ; preds = %115, %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i.i46, %110, %_ZN10rayon_core5latch9CoreLatch7wake_up17h904fcd56032c64d5E.exit45 @@ -948,6 +961,7 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i47: ; preds = %115, %_ 118: ; preds = %.noexc38, %58, %.noexc, %49 %119 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "align"(ptr %15, i64 4) ] invoke fastcc void @"_ZN4core3ptr61drop_in_place$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$17h037f25805bba7023E"(ptr nonnull %15, i8 %.0.i.i.i) #16 to label %common.resume unwind label %120 diff --git a/bench/rayon-rs/optimized/4xa8jns6944z4boh.ll b/bench/rayon-rs/optimized/4xa8jns6944z4boh.ll index e197a1ca8c8..656a0da2a65 100644 --- a/bench/rayon-rs/optimized/4xa8jns6944z4boh.ll +++ b/bench/rayon-rs/optimized/4xa8jns6944z4boh.ll @@ -185,6 +185,7 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ _ZN4core4iter6traits8iterator8Iterator4fold17h0bf5859d9790045bE.llvm.17633404800605446996.exit: ; preds = %.lr.ph.i, %3 %9 = phi i64 [ %.sroa.4.0.copyload, %3 ], [ %8, %.lr.ph.i ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.copyload, i64 8) ] %10 = icmp ne ptr %.sroa.0.0.copyload, null tail call void @llvm.assume(i1 %10) store i64 %9, ptr %.sroa.0.0.copyload, align 8, !noalias !62 @@ -221,6 +222,7 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ 9: ; preds = %.lr.ph.i %10 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.copyload, i64 8) ] %11 = icmp ne ptr %.sroa.0.0.copyload, null tail call void @llvm.assume(i1 %11) store i64 %5, ptr %.sroa.0.0.copyload, align 8, !noalias !84 @@ -228,6 +230,7 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ _ZN4core4iter6traits8iterator8Iterator4fold17h553558fae3577eabE.llvm.17633404800605446996.exit: ; preds = %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h67791bc73e95de1dE.llvm.17633404800605446996.exit.i", %3 %12 = phi i64 [ %.sroa.5.0.copyload, %3 ], [ %8, %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h67791bc73e95de1dE.llvm.17633404800605446996.exit.i" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.copyload, i64 8) ] %13 = icmp ne ptr %.sroa.0.0.copyload, null tail call void @llvm.assume(i1 %13) store i64 %12, ptr %.sroa.0.0.copyload, align 8, !noalias !95 @@ -286,7 +289,7 @@ _ZN4core4iter6traits8iterator8Iterator4fold17h9ca3f45ced12f8d8E.llvm.17633404800 ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) uwtable define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hc1cc997030532146E"(i64 noundef %0, i64 noundef %1, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %2) unnamed_addr #3 personality ptr @rust_eh_personality { _ZN4core4iter6traits8iterator8Iterator4fold17h2228c0f206c0be6cE.llvm.17633404800605446996.exit: - %.sroa.0.0.copyload = load ptr, ptr %2, align 8, !nonnull !4, !noundef !4 + %.sroa.0.0.copyload = load ptr, ptr %2, align 8, !nonnull !4, !align !6, !noundef !4 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 %.sroa.4.0.copyload = load i64, ptr %.sroa.4.0..sroa_idx, align 8 %3 = tail call i64 @llvm.usub.sat.i64(i64 %1, i64 %0) @@ -386,6 +389,7 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ %10 = landingpad { ptr, i32 } cleanup store ptr %13, ptr %4, align 8, !alias.scope !148, !noalias !146 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.copyload, i64 8) ] %11 = icmp ne ptr %.sroa.0.0.copyload, null tail call void @llvm.assume(i1 %11) store i64 %.val4.i, ptr %.sroa.0.0.copyload, align 8, !noalias !150 @@ -428,6 +432,7 @@ _ZN4core4iter6traits8iterator8Iterator4fold17h05b978afbde02e09E.llvm.17633404800 _ZN4core4iter6traits8iterator8Iterator4fold17h05b978afbde02e09E.llvm.17633404800605446996.exit: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17h05b978afbde02e09E.llvm.17633404800605446996.exit.loopexit, %2 %.val6.i = phi i64 [ %.sroa.5.0.copyload, %2 ], [ %20, %_ZN4core4iter6traits8iterator8Iterator4fold17h05b978afbde02e09E.llvm.17633404800605446996.exit.loopexit ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.copyload, i64 8) ] %24 = icmp ne ptr %.sroa.0.0.copyload, null tail call void @llvm.assume(i1 %24) store i64 %.val6.i, ptr %.sroa.0.0.copyload, align 8, !noalias !166 diff --git a/bench/regex-rs/optimized/2tkakzvnx24jy4el.ll b/bench/regex-rs/optimized/2tkakzvnx24jy4el.ll index 623bf934862..4e938eb623f 100644 --- a/bench/regex-rs/optimized/2tkakzvnx24jy4el.ll +++ b/bench/regex-rs/optimized/2tkakzvnx24jy4el.ll @@ -49,6 +49,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G .lr.ph.i.i: ; preds = %2, %.lr.ph.i.i %.sroa.0.05.i.i = phi ptr [ %10, %.lr.ph.i.i ], [ %5, %2 ] %10 = getelementptr inbounds nuw i8, ptr %.sroa.0.05.i.i, i64 24 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.05.i.i, i64 8) ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3), !noalias !11 store ptr %.sroa.0.05.i.i, ptr %3, align 8, !noalias !11 %11 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList5entry17h2ed5a4f4153b90ddE(ptr noalias noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 1 %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.47f0a5a52828d2b742d36ebdc600f332.6.llvm.11839231457967886541) @@ -57,6 +58,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G br i1 %12, label %"_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..Debug$GT$3fmt17h096b5675565afe24E.exit", label %.lr.ph.i.i "_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..Debug$GT$3fmt17h096b5675565afe24E.exit": ; preds = %.lr.ph.i.i, %2 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %13 = call noundef zeroext i1 @_ZN4core3fmt8builders9DebugList6finish17hadbed7078d8807f7E(ptr noalias noundef nonnull align 8 dereferenceable(16) %4) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4), !noalias !6 ret i1 %13 @@ -323,7 +325,7 @@ define hidden void @"_ZN95_$LT$alloc..string..String$u20$as$u20$core..iter..trai 6: ; preds = %.loopexit.split-lp, %.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] - invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hbe614eedd24fc738E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) #8 + invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hbe614eedd24fc738E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) #9 to label %9 unwind label %7 "_ZN89_$LT$alloc..string..String$u20$as$u20$core..iter..traits..collect..Extend$LT$char$GT$$GT$6extend17h1c4370f637e765e3E.llvm.14277958325137290771.exit": ; preds = %.noexc3, %3 @@ -334,7 +336,7 @@ define hidden void @"_ZN95_$LT$alloc..string..String$u20$as$u20$core..iter..trai 7: ; preds = %6 %8 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #9 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #10 unreachable 9: ; preds = %6 @@ -399,6 +401,9 @@ declare hidden void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17 ; Function Attrs: nonlazybind uwtable declare noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList5entry17h2ed5a4f4153b90ddE(ptr noalias noundef align 8 dereferenceable(16), ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #2 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #8 + attributes #0 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } @@ -407,8 +412,9 @@ attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argm attributes #5 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #7 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #8 = { cold } -attributes #9 = { cold noreturn nounwind } +attributes #8 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #9 = { cold } +attributes #10 = { cold noreturn nounwind } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/ring-rs/optimized/1ifa1mnaz8f3h6jb.ll b/bench/ring-rs/optimized/1ifa1mnaz8f3h6jb.ll index e33c3478df4..5c498fe2beb 100644 --- a/bench/ring-rs/optimized/1ifa1mnaz8f3h6jb.ll +++ b/bench/ring-rs/optimized/1ifa1mnaz8f3h6jb.ll @@ -1962,9 +1962,9 @@ define void @"_ZN139_$LT$ring..aead..quic..HeaderProtectionKey$u20$as$u20$core.. unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hbd7f023510873fc8E.exit": ; preds = %2 - %.sroa.0.0.copyload = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.sroa.0.0.copyload = load ptr, ptr %1, align 8, !nonnull !4, !align !50, !noundef !4 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.sroa.4.0.copyload = load ptr, ptr %.sroa.4.0..sroa_idx, align 8, !nonnull !4, !noundef !4 + %.sroa.4.0.copyload = load ptr, ptr %.sroa.4.0..sroa_idx, align 8, !nonnull !4, !align !50, !noundef !4 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 16 %.sroa.5.0.copyload = load i64, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.61.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 32 @@ -2389,6 +2389,7 @@ define hidden void @_ZN4ring3rsa7padding4mgf117h24b32f1a0b177c23E(ptr noalias no store ptr @anon.5e9ac13353a974eaad2bf76d6c3f9f95.7, ptr %8, align 8, !noalias !444 %22 = getelementptr inbounds nuw i8, ptr %8, i64 8 store i64 1, ptr %22, align 8, !noalias !444 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %23 = getelementptr inbounds nuw i8, ptr %8, i64 32 store ptr null, ptr %23, align 8, !noalias !444 %24 = getelementptr inbounds nuw i8, ptr %8, i64 16 diff --git a/bench/ring-rs/optimized/4krjvpwhiya9iudo.ll b/bench/ring-rs/optimized/4krjvpwhiya9iudo.ll index adfd9816d34..be9e9a38e91 100644 --- a/bench/ring-rs/optimized/4krjvpwhiya9iudo.ll +++ b/bench/ring-rs/optimized/4krjvpwhiya9iudo.ll @@ -529,11 +529,11 @@ define hidden noundef zeroext i1 @_ZN9untrusted5input5Input8read_all17h75345cb00 store i64 0, ptr %9, align 8 %.sroa.0.0.copyload = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.sroa.4.0.copyload = load ptr, ptr %.sroa.4.0..sroa_idx, align 8, !nonnull !4, !noundef !4 + %.sroa.4.0.copyload = load ptr, ptr %.sroa.4.0..sroa_idx, align 8, !nonnull !4, !align !5, !noundef !4 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 16 - %.sroa.5.0.copyload = load ptr, ptr %.sroa.5.0..sroa_idx, align 8, !nonnull !4, !noundef !4 + %.sroa.5.0.copyload = load ptr, ptr %.sroa.5.0..sroa_idx, align 8, !nonnull !4, !align !5, !noundef !4 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 24 - %.sroa.6.0.copyload = load ptr, ptr %.sroa.6.0..sroa_idx, align 8, !nonnull !4, !noundef !4 + %.sroa.6.0.copyload = load ptr, ptr %.sroa.6.0..sroa_idx, align 8, !nonnull !4, !align !5, !noundef !4 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %3), !noalias !75 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %3, ptr noundef nonnull align 8 dereferenceable(72) %.sroa.5.0.copyload, i64 72, i1 false), !noalias !75 %10 = getelementptr inbounds nuw i8, ptr %.sroa.6.0.copyload, i64 32 @@ -672,7 +672,7 @@ define hidden void @_ZN9untrusted5input5Input8read_all17h91e78c218ee6c2d8E(ptr n store i64 %12, ptr %13, align 8 %14 = getelementptr inbounds nuw i8, ptr %9, i64 16 store i64 0, ptr %14, align 8 - %.sroa.028.0.copyload = load ptr, ptr %4, align 8, !nonnull !4, !noundef !4 + %.sroa.028.0.copyload = load ptr, ptr %4, align 8, !nonnull !4, !align !5, !noundef !4 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 %.sroa.4.0.copyload = load i8, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 9 @@ -1023,7 +1023,7 @@ define hidden noundef zeroext i1 @_ZN9untrusted5input5Input8read_all17hf8c54ada4 %3 = load ptr, ptr %0, align 8, !nonnull !4, !align !12, !noundef !4 %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8, !noundef !4 - %.sroa.06.0.copyload = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.sroa.06.0.copyload = load ptr, ptr %1, align 8, !nonnull !4, !align !5, !noundef !4 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 8 %.sroa.4.0.copyload = load ptr, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.57.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 16 @@ -1035,6 +1035,7 @@ define hidden noundef zeroext i1 @_ZN9untrusted5input5Input8read_all17hf8c54ada4 br i1 %.not51.i, label %.loopexit, label %.lr.ph45.i .lr.ph45.i: ; preds = %2 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.4.0.copyload, i64 8) ] %7 = icmp ne ptr %.sroa.4.0.copyload, null tail call void @llvm.assume(i1 %7) %.pre.i = load i64, ptr %.sroa.4.0.copyload, align 8, !noalias !159 diff --git a/bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll b/bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll index 41befb91076..547238ffb3d 100644 --- a/bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll +++ b/bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll @@ -1209,13 +1209,13 @@ define hidden { ptr, i64 } @_ZN4ring4limb18fold_5_bit_windows17h182ba6429db4f694 %12 = select i1 %10, i64 59, i64 %11 %13 = load i64, ptr %7, align 8, !noundef !7 %14 = tail call noundef i64 @ring_core_0_17_8__LIMBS_window5_split_window(i64 noundef %13, i64 noundef 0, i64 noundef %12) - %.sroa.0.0.copyload = load ptr, ptr %2, align 8, !nonnull !7, !noundef !7 + %.sroa.0.0.copyload = load ptr, ptr %2, align 8, !nonnull !7, !align !14, !noundef !7 %.sroa.412.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 16 - %.sroa.412.0.copyload = load ptr, ptr %.sroa.412.0..sroa_idx, align 8, !nonnull !7, !noundef !7 + %.sroa.412.0.copyload = load ptr, ptr %.sroa.412.0..sroa_idx, align 8, !nonnull !7, !align !14, !noundef !7 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 24 %.sroa.5.0.copyload = load i64, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 32 - %.sroa.6.0.copyload = load ptr, ptr %.sroa.6.0..sroa_idx, align 8, !nonnull !7, !noundef !7 + %.sroa.6.0.copyload = load ptr, ptr %.sroa.6.0..sroa_idx, align 8, !nonnull !7, !align !14, !noundef !7 %15 = load i64, ptr %.sroa.6.0.copyload, align 8, !noalias !359, !noundef !7 tail call void @ring_core_0_17_8__bn_gather5(ptr noundef nonnull align 8 %.sroa.412.0.copyload, i64 noundef %15, ptr noundef nonnull readonly align 8 %.sroa.0.0.copyload, i64 noundef %14), !noalias !359 %16 = getelementptr inbounds i64, ptr %0, i64 %1 @@ -1234,6 +1234,7 @@ define hidden { ptr, i64 } @_ZN4ring4limb18fold_5_bit_windows17h182ba6429db4f694 %.024 = phi i64 [ %17, %.lr.ph.i ], [ %35, %"_ZN4ring4limb18fold_5_bit_windows28_$u7b$$u7b$closure$u7d$$u7d$17h4a60ffd4f1a45d14E.exit.i" ] %.sroa.2.012.i = phi ptr [ %16, %.lr.ph.i ], [ %26, %"_ZN4ring4limb18fold_5_bit_windows28_$u7b$$u7b$closure$u7d$$u7d$17h4a60ffd4f1a45d14E.exit.i" ] %26 = getelementptr inbounds i8, ptr %.sroa.2.012.i, i64 -8 + call void @llvm.assume(i1 true) [ "align"(ptr %26, i64 8) ] %.val.i = load i64, ptr %26, align 8, !noalias !362, !noundef !7 %or.cond.i.i = icmp ugt i64 %.024, 59 br i1 %or.cond.i.i, label %.critedge.i.i, label %.lr.ph.i.i.preheader @@ -1268,6 +1269,7 @@ define hidden { ptr, i64 } @_ZN4ring4limb18fold_5_bit_windows17h182ba6429db4f694 _ZN4core4iter6traits12double_ended19DoubleEndedIterator5rfold17hd72182f069108e24E.exit: ; preds = %"_ZN4ring4limb18fold_5_bit_windows28_$u7b$$u7b$closure$u7d$$u7d$17h4a60ffd4f1a45d14E.exit.i" %37 = insertvalue { ptr, i64 } poison, ptr %.sroa.412.0.copyload, 0 %38 = insertvalue { ptr, i64 } %37, i64 %.sroa.5.0.copyload, 1 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] ret { ptr, i64 } %38 } @@ -1290,13 +1292,13 @@ define hidden { ptr, i64 } @_ZN4ring4limb18fold_5_bit_windows17h847f698419fd7a90 %12 = select i1 %10, i64 59, i64 %11 %13 = load i64, ptr %7, align 8, !noundef !7 %14 = tail call noundef i64 @ring_core_0_17_8__LIMBS_window5_split_window(i64 noundef %13, i64 noundef 0, i64 noundef %12) - %.sroa.0.0.copyload = load ptr, ptr %2, align 8, !nonnull !7, !noundef !7 + %.sroa.0.0.copyload = load ptr, ptr %2, align 8, !nonnull !7, !align !14, !noundef !7 %.sroa.412.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 16 - %.sroa.412.0.copyload = load ptr, ptr %.sroa.412.0..sroa_idx, align 8, !nonnull !7, !noundef !7 + %.sroa.412.0.copyload = load ptr, ptr %.sroa.412.0..sroa_idx, align 8, !nonnull !7, !align !14, !noundef !7 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 24 %.sroa.5.0.copyload = load i64, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 32 - %.sroa.6.0.copyload = load ptr, ptr %.sroa.6.0..sroa_idx, align 8, !nonnull !7, !noundef !7 + %.sroa.6.0.copyload = load ptr, ptr %.sroa.6.0..sroa_idx, align 8, !nonnull !7, !align !14, !noundef !7 %15 = load i64, ptr %.sroa.6.0.copyload, align 8, !noalias !381, !noundef !7 tail call void @ring_core_0_17_8__bn_gather5(ptr noundef nonnull align 8 %.sroa.412.0.copyload, i64 noundef %15, ptr noundef nonnull readonly align 8 %.sroa.0.0.copyload, i64 noundef %14), !noalias !381 %16 = getelementptr inbounds i64, ptr %0, i64 %1 @@ -1315,6 +1317,7 @@ define hidden { ptr, i64 } @_ZN4ring4limb18fold_5_bit_windows17h847f698419fd7a90 %.024 = phi i64 [ %17, %.lr.ph.i ], [ %35, %"_ZN4ring4limb18fold_5_bit_windows28_$u7b$$u7b$closure$u7d$$u7d$17h5c16a37c8e46fd0cE.exit.i" ] %.sroa.2.012.i = phi ptr [ %16, %.lr.ph.i ], [ %26, %"_ZN4ring4limb18fold_5_bit_windows28_$u7b$$u7b$closure$u7d$$u7d$17h5c16a37c8e46fd0cE.exit.i" ] %26 = getelementptr inbounds i8, ptr %.sroa.2.012.i, i64 -8 + call void @llvm.assume(i1 true) [ "align"(ptr %26, i64 8) ] %.val.i = load i64, ptr %26, align 8, !noalias !384, !noundef !7 %or.cond.i.i = icmp ugt i64 %.024, 59 br i1 %or.cond.i.i, label %.critedge.i.i, label %.lr.ph.i.i.preheader @@ -1349,6 +1352,7 @@ define hidden { ptr, i64 } @_ZN4ring4limb18fold_5_bit_windows17h847f698419fd7a90 _ZN4core4iter6traits12double_ended19DoubleEndedIterator5rfold17hb160ad6756f962f3E.exit: ; preds = %"_ZN4ring4limb18fold_5_bit_windows28_$u7b$$u7b$closure$u7d$$u7d$17h5c16a37c8e46fd0cE.exit.i" %37 = insertvalue { ptr, i64 } poison, ptr %.sroa.412.0.copyload, 0 %38 = insertvalue { ptr, i64 } %37, i64 %.sroa.5.0.copyload, 1 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] ret { ptr, i64 } %38 } @@ -1773,6 +1777,7 @@ define hidden { ptr, i64 } @_ZN4ring3rsa10public_key5Inner12exponentiate17hcd4c5 36: ; preds = %32 %37 = extractvalue { ptr, i64 } %33, 0 %38 = extractvalue { ptr, i64 } %33, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %37, i64 8) ] call void @llvm.experimental.noalias.scope.decl(metadata !440) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) store ptr %37, ptr %5, align 8, !noalias !443 @@ -1930,6 +1935,7 @@ define hidden { ptr, i64 } @_ZN4ring3rsa10public_key5Inner17exponentiate_elem17h call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !455 %32 = extractvalue { ptr, i64 } %31, 0 %33 = extractvalue { ptr, i64 } %31, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %32, i64 8) ] %34 = icmp ne ptr %32, null tail call void @llvm.assume(i1 %34) tail call void @llvm.experimental.noalias.scope.decl(metadata !464) diff --git a/bench/ripgrep-rs/optimized/5b9w3b7qw59yuxz3.ll b/bench/ripgrep-rs/optimized/5b9w3b7qw59yuxz3.ll index f5d47aec4fb..c6d7b59daf8 100644 --- a/bench/ripgrep-rs/optimized/5b9w3b7qw59yuxz3.ll +++ b/bench/ripgrep-rs/optimized/5b9w3b7qw59yuxz3.ll @@ -198,6 +198,7 @@ define void @_ZN12grep_printer4json10SubMatches3new17hc057495b62827390E(ptr noal to label %53 unwind label %51 ._crit_edge: ; preds = %44, %20 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %27 = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr noundef nonnull align 8 dereferenceable(24) %6, i64 24, i1 false) store i64 2, ptr %0, align 8 @@ -208,6 +209,7 @@ define void @_ZN12grep_printer4json10SubMatches3new17hc057495b62827390E(ptr noal %28 = phi i64 [ %49, %44 ], [ 0, %20 ] %.sroa.0.033 = phi ptr [ %29, %44 ], [ %3, %20 ] %29 = getelementptr inbounds nuw i8, ptr %.sroa.0.033, i64 16 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.033, i64 8) ] %30 = load i64, ptr %.sroa.0.033, align 8, !noundef !8 %31 = getelementptr inbounds nuw i8, ptr %.sroa.0.033, i64 8 %32 = load i64, ptr %31, align 8, !noundef !8 @@ -280,7 +282,7 @@ define void @_ZN12grep_printer4json10SubMatches5empty17h3cd8f2c49c978b89E(ptr no ret void } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable define { ptr, i64 } @_ZN12grep_printer4json10SubMatches8as_slice17h4535112f120692a8E(ptr noalias noundef readonly align 8 dereferenceable(40) %0) unnamed_addr #5 { %2 = load i64, ptr %0, align 8, !range !17, !noundef !8 switch i64 %2, label %default.unreachable5 [ @@ -306,6 +308,7 @@ default.unreachable5: ; preds = %1 10: ; preds = %1, %5, %3 %.sroa.4.0 = phi i64 [ %9, %5 ], [ 1, %3 ], [ %2, %1 ] %.sroa.0.0 = phi ptr [ %7, %5 ], [ %4, %3 ], [ @anon.e5a21969a08b2e51c219523ba678c9c3.12, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0, i64 8) ] %11 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0, 0 %12 = insertvalue { ptr, i64 } %11, i64 %.sroa.4.0, 1 ret { ptr, i64 } %12 @@ -355,7 +358,7 @@ attributes #1 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x attributes #2 = { mustprogress nofree nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #5 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #5 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #7 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #8 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } diff --git a/bench/ropey-rs/optimized/3dnc959gvadodw9w.ll b/bench/ropey-rs/optimized/3dnc959gvadodw9w.ll index a789e0aa93f..b10b8226806 100644 --- a/bench/ropey-rs/optimized/3dnc959gvadodw9w.ll +++ b/bench/ropey-rs/optimized/3dnc959gvadodw9w.ll @@ -118,6 +118,8 @@ define hidden void @"_ZN4core3ptr140drop_in_place$LT$alloc..sync..Weak$LT$core.. 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !25 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h9ef1e4a253597148E.llvm.10316259052761615454.exit" @@ -497,6 +499,8 @@ define hidden void @"_ZN4core3ptr69drop_in_place$LT$alloc..sync..Weak$LT$ropey.. 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !227 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc1ba8e14f14bfdf0E.llvm.10316259052761615454.exit" @@ -819,6 +823,8 @@ define hidden void @"_ZN4core3ptr96drop_in_place$LT$alloc..sync..Weak$LT$ropey.. 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !347 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc76e47a32d657e49E.llvm.10316259052761615454.exit" @@ -1202,6 +1208,8 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %9 @@ -1223,6 +1231,8 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %9 @@ -1244,6 +1254,8 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %9 diff --git a/bench/ropey-rs/optimized/598mb8dcqw4tyfm.ll b/bench/ropey-rs/optimized/598mb8dcqw4tyfm.ll index 72724f32575..269e22aa978 100644 --- a/bench/ropey-rs/optimized/598mb8dcqw4tyfm.ll +++ b/bench/ropey-rs/optimized/598mb8dcqw4tyfm.ll @@ -231,6 +231,8 @@ define internal fastcc noundef nonnull align 8 dereferenceable(1008) ptr @"_ZN5a br i1 %45, label %"_ZN4core3ptr69drop_in_place$LT$alloc..sync..Weak$LT$ropey..tree..node..Node$GT$$GT$17hc24acb1e8161cd3fE.exit", label %46 46: ; preds = %43 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %11, i64 8) ] %47 = atomicrmw sub ptr %12, i64 1 release, align 8, !noalias !58 %48 = icmp eq i64 %47, 1 br i1 %48, label %49, label %"_ZN4core3ptr69drop_in_place$LT$alloc..sync..Weak$LT$ropey..tree..node..Node$GT$$GT$17hc24acb1e8161cd3fE.exit" @@ -277,6 +279,8 @@ define internal fastcc noundef nonnull align 8 dereferenceable(1008) ptr @"_ZN5a br i1 %63, label %"_ZN4core3ptr69drop_in_place$LT$alloc..sync..Weak$LT$ropey..tree..node..Node$GT$$GT$17hc24acb1e8161cd3fE.exit19", label %64 64: ; preds = %58 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %11, i64 8) ] %65 = atomicrmw sub ptr %12, i64 1 release, align 8, !noalias !63 %66 = icmp eq i64 %65, 1 br i1 %66, label %67, label %"_ZN4core3ptr69drop_in_place$LT$alloc..sync..Weak$LT$ropey..tree..node..Node$GT$$GT$17hc24acb1e8161cd3fE.exit19" @@ -767,10 +771,12 @@ define void @_ZN5ropey4rope4Rope13shrink_to_fit17ha3ca49b8d1746939E(ptr noalias %74 = load ptr, ptr %14, align 8, !nonnull !5, !noundef !5 %75 = add i64 %73, -1 %76 = getelementptr inbounds [0 x ptr], ptr %74, i64 0, i64 %75 + call void @llvm.assume(i1 true) [ "align"(ptr %76, i64 8) ] %77 = load ptr, ptr %76, align 8, !nonnull !5, !noundef !5 %78 = getelementptr inbounds nuw i8, ptr %77, i64 16 %79 = load i8, ptr %78, align 8, !range !4, !alias.scope !158, !noundef !5 %trunc.i = trunc nuw i8 %79 to i1 + call void @llvm.assume(i1 true) [ "align"(ptr %76, i64 8) ] br i1 %trunc.i, label %80, label %116 80: ; preds = %72 @@ -801,6 +807,7 @@ define void @_ZN5ropey4rope4Rope13shrink_to_fit17ha3ca49b8d1746939E(ptr noalias 90: ; preds = %80 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) + call void @llvm.assume(i1 true) [ "align"(ptr %76, i64 8) ] %91 = invoke fastcc noundef align 8 dereferenceable(1008) ptr @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$8make_mut17h4b2c8c9d5667e931E"(ptr noalias noundef align 8 dereferenceable(8) %76) to label %92 unwind label %.thread69.loopexit @@ -2204,8 +2211,10 @@ _ZN5ropey4rope4Rope13chunk_at_char17h6e1e5bf745b5c6dfE.exit.i.i: ; preds = %.noe %.sroa.014.1.i162.i.i = phi i64 [ %275, %.lr.ph164.i.i ], [ %.sroa.014.0.i.lcssa.i.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hcfa64467e91e4558E.exit.i.i.i" ] %.sroa.512.0161.i.i = phi i64 [ %253, %.lr.ph164.i.i ], [ %214, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hcfa64467e91e4558E.exit.i.i.i" ] %.sroa.011.0160.i.i = phi ptr [ %252, %.lr.ph164.i.i ], [ %205, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hcfa64467e91e4558E.exit.i.i.i" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.011.0160.i.i, i64 16) ] %252 = getelementptr inbounds nuw i8, ptr %.sroa.011.0160.i.i, i64 64 %253 = add i64 %.sroa.512.0161.i.i, -4 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.011.0160.i.i, i64 16) ] %254 = load <16 x i8>, ptr %.sroa.011.0160.i.i, align 16 %255 = icmp slt <16 x i8> %254, splat (i8 -64) %256 = zext <16 x i1> %255 to <16 x i8> @@ -4256,6 +4265,7 @@ define noundef nonnull ptr @"_ZN88_$LT$ropey..rope..Rope$u20$as$u20$core..conver br i1 %16, label %46, label %17 17: ; preds = %1 + call void @llvm.assume(i1 true) [ "align"(ptr %15, i64 8) ] %18 = getelementptr inbounds nuw i8, ptr %0, i64 16 %19 = load i64, ptr %18, align 8, !noundef !5 %20 = getelementptr inbounds nuw i8, ptr %0, i64 48 diff --git a/bench/ropey-rs/optimized/sjmtivrqc2m3vu9.ll b/bench/ropey-rs/optimized/sjmtivrqc2m3vu9.ll index d4904f8443a..151ff32037c 100644 --- a/bench/ropey-rs/optimized/sjmtivrqc2m3vu9.ll +++ b/bench/ropey-rs/optimized/sjmtivrqc2m3vu9.ll @@ -64,7 +64,9 @@ define hidden void @"_ZN133_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ite "_ZN8smallvec17SmallVec$LT$A$GT$10triple_mut17h071505bc27cf3d0bE.llvm.16952314824741166450.exit.i": ; preds = %15, %12 %17 = phi i64 [ %.pre, %12 ], [ %9, %15 ] + %.sink12.i.i = phi ptr [ %14, %12 ], [ %8, %15 ] %.sink.i.i = phi i64 [ %9, %12 ], [ 984, %15 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sink12.i.i, i64 8) ] %18 = sub i64 %.sink.i.i, %17 %.not.i = icmp ult i64 %18, %7 br i1 %.not.i, label %19, label %_ZN8smallvec10infallible17hac02ab9634219958E.exit @@ -132,6 +134,7 @@ _ZN8smallvec10infallible17hac02ab9634219958E.exit: ; preds = %"_ZN8smallvec17Sma %.sink13.i = phi ptr [ %41, %38 ], [ %45, %43 ] %.sink12.i = phi ptr [ %42, %38 ], [ %8, %43 ] %.sink.i = phi i64 [ %36, %38 ], [ 984, %43 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sink12.i, i64 8) ] %46 = load i64, ptr %.sink12.i, align 8, !noundef !11 %47 = icmp ult i64 %46, %.sink.i br i1 %47, label %.lr.ph, label %._crit_edge @@ -181,6 +184,7 @@ _ZN8smallvec10infallible17hac02ab9634219958E.exit: ; preds = %"_ZN8smallvec17Sma %.sink13.i.i = phi ptr [ %59, %57 ], [ %48, %60 ] %.sink12.i.i16 = phi ptr [ %50, %57 ], [ %8, %60 ] %.sink.i.i17 = phi i64 [ %54, %57 ], [ 984, %60 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sink12.i.i16, i64 8) ] %63 = icmp eq i64 %62, %.sink.i.i17 br i1 %63, label %64, label %"_ZN8smallvec17SmallVec$LT$A$GT$4push17h759dcdac6bdea756E.exit" @@ -197,8 +201,11 @@ _ZN8smallvec10infallible17hac02ab9634219958E.exit: ; preds = %"_ZN8smallvec17Sma %68 = phi i64 [ %.pre.i, %64 ], [ %62, %"_ZN8smallvec17SmallVec$LT$A$GT$10triple_mut17h071505bc27cf3d0bE.llvm.16952314824741166450.exit.i15" ] %.sroa.01.0.i = phi ptr [ %50, %64 ], [ %.sink12.i.i16, %"_ZN8smallvec17SmallVec$LT$A$GT$10triple_mut17h071505bc27cf3d0bE.llvm.16952314824741166450.exit.i15" ] %.sroa.0.0.i18 = phi ptr [ %67, %64 ], [ %.sink13.i.i, %"_ZN8smallvec17SmallVec$LT$A$GT$10triple_mut17h071505bc27cf3d0bE.llvm.16952314824741166450.exit.i15" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.01.0.i, i64 8) ] %69 = getelementptr inbounds i8, ptr %.sroa.0.0.i18, i64 %68 store i8 %53, ptr %69, align 1 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.01.0.i, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.01.0.i, i64 8) ] %70 = load i64, ptr %.sroa.01.0.i, align 8, !alias.scope !34, !noundef !11 %71 = add i64 %70, 1 store i64 %71, ptr %.sroa.01.0.i, align 8, !alias.scope !34 @@ -450,6 +457,7 @@ define hidden { ptr, i64 } @"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$co "_ZN8smallvec17SmallVec$LT$A$GT$10triple_mut17h071505bc27cf3d0bE.llvm.16952314824741166450.exit": ; preds = %7, %12 %.sink13.i = phi ptr [ %10, %7 ], [ %14, %12 ] %.sink12.i = phi ptr [ %11, %7 ], [ %3, %12 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sink12.i, i64 8) ] %15 = load i64, ptr %.sink12.i, align 8, !noundef !11 %16 = insertvalue { ptr, i64 } poison, ptr %.sink13.i, 0 %17 = insertvalue { ptr, i64 } %16, i64 %15, 1 @@ -481,6 +489,7 @@ define hidden { ptr, i64 } @"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$co "_ZN8smallvec17SmallVec$LT$A$GT$10triple_mut17hc2d58eb60de132d3E.llvm.16952314824741166450.exit": ; preds = %7, %12 %.sink13.i = phi ptr [ %10, %7 ], [ %14, %12 ] %.sink12.i = phi ptr [ %11, %7 ], [ %3, %12 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sink12.i, i64 8) ] %15 = load i64, ptr %.sink12.i, align 8, !noundef !11 %16 = insertvalue { ptr, i64 } poison, ptr %.sink13.i, 0 %17 = insertvalue { ptr, i64 } %16, i64 %15, 1 @@ -488,7 +497,7 @@ define hidden { ptr, i64 } @"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$co } ; Function Attrs: nonlazybind uwtable -define hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17hafbd8ec1fb7085dcE"(ptr noalias noundef readonly align 8 dereferenceable(48) %0, i64 noundef %1, ptr noalias noundef readonly align 8 dereferenceable(24) %2) unnamed_addr #1 personality ptr @rust_eh_personality { +define hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZN83_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17hafbd8ec1fb7085dcE"(ptr noalias noundef align 8 dereferenceable(48) %0, i64 noundef %1, ptr noalias noundef readonly align 8 dereferenceable(24) %2) unnamed_addr #1 personality ptr @rust_eh_personality { %4 = getelementptr inbounds nuw i8, ptr %0, i64 40 %5 = load i64, ptr %4, align 8, !alias.scope !75, !noalias !78, !noundef !11 %6 = icmp ugt i64 %5, 4 @@ -512,6 +521,7 @@ define hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZN83_$LT$smallve "_ZN8smallvec17SmallVec$LT$A$GT$10triple_mut17hc2d58eb60de132d3E.llvm.16952314824741166450.exit": ; preds = %8, %13 %.sink13.i = phi ptr [ %11, %8 ], [ %15, %13 ] %.sink12.i = phi ptr [ %12, %8 ], [ %4, %13 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sink12.i, i64 8) ] %16 = load i64, ptr %.sink12.i, align 8, !noundef !11 %17 = icmp ult i64 %1, %16 br i1 %17, label %"_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h45ec3214435d9227E.llvm.16952314824741166450.exit", label %18, !prof !47 @@ -634,6 +644,7 @@ define hidden { i64, i64 } @"_ZN8smallvec17SmallVec$LT$A$GT$11try_reserve17h92d9 "_ZN8smallvec17SmallVec$LT$A$GT$10triple_mut17h071505bc27cf3d0bE.llvm.16952314824741166450.exit": ; preds = %7, %10 %.sink12.i = phi ptr [ %9, %7 ], [ %3, %10 ] %.sink.i = phi i64 [ %4, %7 ], [ 984, %10 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sink12.i, i64 8) ] %12 = load i64, ptr %.sink12.i, align 8, !noundef !11 %13 = sub i64 %.sink.i, %12 %.not = icmp ult i64 %13, %1 @@ -757,6 +768,7 @@ define hidden { i64, i64 } @"_ZN8smallvec17SmallVec$LT$A$GT$17try_reserve_exact1 "_ZN8smallvec17SmallVec$LT$A$GT$10triple_mut17h071505bc27cf3d0bE.llvm.16952314824741166450.exit": ; preds = %7, %10 %.sink12.i = phi ptr [ %9, %7 ], [ %3, %10 ] %.sink.i = phi i64 [ %4, %7 ], [ 984, %10 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sink12.i, i64 8) ] %12 = load i64, ptr %.sink12.i, align 8, !noundef !11 %13 = sub i64 %.sink.i, %12 %.not = icmp ult i64 %13, %1 @@ -940,6 +952,7 @@ define hidden void @"_ZN8smallvec17SmallVec$LT$A$GT$6insert17h999ac5928038a5a5E" %.sink13.i = phi ptr [ %12, %9 ], [ %16, %14 ] %.sink12.i = phi ptr [ %13, %9 ], [ %5, %14 ] %.sink.i = phi i64 [ %6, %9 ], [ 4, %14 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sink12.i, i64 8) ] %23 = icmp eq i64 %22, %.sink.i br i1 %23, label %24, label %25 @@ -951,6 +964,7 @@ define hidden void @"_ZN8smallvec17SmallVec$LT$A$GT$6insert17h999ac5928038a5a5E" %26 = phi i64 [ %.pre10, %28 ], [ %22, %"_ZN8smallvec17SmallVec$LT$A$GT$10triple_mut17hc2d58eb60de132d3E.llvm.16952314824741166450.exit" ] %.sroa.05.0 = phi ptr [ %33, %28 ], [ %.sink12.i, %"_ZN8smallvec17SmallVec$LT$A$GT$10triple_mut17hc2d58eb60de132d3E.llvm.16952314824741166450.exit" ] %.sroa.04.0 = phi ptr [ %32, %28 ], [ %.sink13.i, %"_ZN8smallvec17SmallVec$LT$A$GT$10triple_mut17hc2d58eb60de132d3E.llvm.16952314824741166450.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.05.0, i64 8) ] %27 = icmp ugt i64 %1, %26 br i1 %27, label %37, label %34 @@ -974,6 +988,7 @@ define hidden void @"_ZN8smallvec17SmallVec$LT$A$GT$6insert17h999ac5928038a5a5E" to label %45 unwind label %17 38: ; preds = %41, %34 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.05.0, i64 8) ] %39 = add i64 %26, 1 store i64 %39, ptr %.sroa.05.0, align 8 %40 = load ptr, ptr %4, align 8, !nonnull !11, !noundef !11 @@ -1096,7 +1111,7 @@ define hidden { ptr, i64 } @"_ZN8smallvec17SmallVec$LT$A$GT$8as_slice17h3e407e10 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable -define hidden void @"_ZN8smallvec17SmallVec$LT$A$GT$8truncate17h5e63882184e2c3ebE"(ptr noalias nocapture noundef align 8 dereferenceable(1000) %0, i64 noundef %1) unnamed_addr #6 { +define hidden void @"_ZN8smallvec17SmallVec$LT$A$GT$8truncate17h5e63882184e2c3ebE"(ptr noalias noundef align 8 dereferenceable(1000) %0, i64 noundef %1) unnamed_addr #6 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 992 %4 = load i64, ptr %3, align 8, !alias.scope !126, !noalias !129, !noundef !11 %5 = icmp ugt i64 %4, 984 @@ -1116,6 +1131,7 @@ define hidden void @"_ZN8smallvec17SmallVec$LT$A$GT$8truncate17h5e63882184e2c3eb "_ZN8smallvec17SmallVec$LT$A$GT$10triple_mut17h071505bc27cf3d0bE.llvm.16952314824741166450.exit": ; preds = %7, %10 %.sink12.i = phi ptr [ %9, %7 ], [ %3, %10 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sink12.i, i64 8) ] %.sink12.i.promoted = load i64, ptr %.sink12.i, align 8 %12 = icmp ult i64 %1, %.sink12.i.promoted br i1 %12, label %.lr.ph.preheader, label %13 @@ -1156,6 +1172,7 @@ define hidden { i64, i64 } @"_ZN8smallvec17SmallVec$LT$A$GT$8try_grow17h0a833344 %.sink13.i = phi ptr [ %12, %9 ], [ %16, %14 ] %.sink12.i = phi ptr [ %13, %9 ], [ %4, %14 ] %.sink.i = phi i64 [ %5, %9 ], [ 4, %14 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sink12.i, i64 8) ] %17 = load i64, ptr %.sink12.i, align 8, !noundef !11 %.not = icmp ult i64 %1, %17 br i1 %.not, label %18, label %19 @@ -1269,6 +1286,7 @@ define internal fastcc { i64, i64 } @"_ZN8smallvec17SmallVec$LT$A$GT$8try_grow17 %.sink13.i = phi ptr [ %10, %7 ], [ %14, %12 ] %.sink12.i = phi ptr [ %11, %7 ], [ %4, %12 ] %.sink.i = phi i64 [ %5, %7 ], [ 984, %12 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sink12.i, i64 8) ] %15 = load i64, ptr %.sink12.i, align 8, !noundef !11 %.not70 = icmp ult i64 %1, %15 br i1 %.not70, label %16, label %17 diff --git a/bench/serde-rs-json/optimized/1z3u82elh7pk3w5r.ll b/bench/serde-rs-json/optimized/1z3u82elh7pk3w5r.ll index 8f8e603195b..5ff9d5f721b 100644 --- a/bench/serde-rs-json/optimized/1z3u82elh7pk3w5r.ll +++ b/bench/serde-rs-json/optimized/1z3u82elh7pk3w5r.ll @@ -130,6 +130,7 @@ define hidden { ptr, i64 } @_ZN4core4char7methods15encode_utf8_raw17h01952874170 store ptr @anon.7b12c2ab9e1ce74a96d00cd7e4c1ea31.10, ptr %6, align 8, !alias.scope !23, !noalias !26 %20 = getelementptr inbounds nuw i8, ptr %6, i64 8 store i64 3, ptr %20, align 8, !alias.scope !23, !noalias !26 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %21 = getelementptr inbounds nuw i8, ptr %6, i64 32 store ptr null, ptr %21, align 8, !alias.scope !23, !noalias !26 %22 = getelementptr inbounds nuw i8, ptr %6, i64 16 @@ -281,6 +282,7 @@ default.unreachable7: ; preds = %2 store ptr @anon.7b12c2ab9e1ce74a96d00cd7e4c1ea31.23, ptr %11, align 8, !alias.scope !29, !noalias !32 %19 = getelementptr inbounds nuw i8, ptr %11, i64 8 store i64 2, ptr %19, align 8, !alias.scope !29, !noalias !32 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %20 = getelementptr inbounds nuw i8, ptr %11, i64 32 store ptr null, ptr %20, align 8, !alias.scope !29, !noalias !32 %21 = getelementptr inbounds nuw i8, ptr %11, i64 16 @@ -305,6 +307,7 @@ default.unreachable7: ; preds = %2 store ptr @anon.f288aba1288e7a615443dffa1f18fa93.13.llvm.17788874430417167, ptr %5, align 8, !alias.scope !39, !noalias !42 %27 = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 2, ptr %27, align 8, !alias.scope !39, !noalias !42 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %28 = getelementptr inbounds nuw i8, ptr %5, i64 32 store ptr null, ptr %28, align 8, !alias.scope !39, !noalias !42 %29 = getelementptr inbounds nuw i8, ptr %5, i64 16 @@ -329,6 +332,7 @@ default.unreachable7: ; preds = %2 store ptr @anon.7b12c2ab9e1ce74a96d00cd7e4c1ea31.25, ptr %8, align 8, !alias.scope !45, !noalias !48 %35 = getelementptr inbounds nuw i8, ptr %8, i64 8 store i64 2, ptr %35, align 8, !alias.scope !45, !noalias !48 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %36 = getelementptr inbounds nuw i8, ptr %8, i64 32 store ptr null, ptr %36, align 8, !alias.scope !45, !noalias !48 %37 = getelementptr inbounds nuw i8, ptr %8, i64 16 @@ -795,6 +799,8 @@ _ZN10serde_json3ser18format_escaped_str17hc54fac0069c29f8cE.exit.thread.i.i.i: ; 201: ; preds = %189 %.fca.1.extract.i.i = extractvalue { ptr, ptr } %190, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.0.extract.i.i, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.1.extract.i.i, i64 8) ] %202 = icmp ne ptr %.fca.1.extract.i.i, null call void @llvm.assume(i1 %202) %203 = call noundef align 8 ptr @_ZN5serde3ser12SerializeMap15serialize_entry17h5980ccf8922e7ac7E(ptr noalias noundef nonnull align 8 dereferenceable(16) %15, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.fca.0.extract.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %.fca.1.extract.i.i) @@ -812,15 +818,18 @@ _ZN10serde_json3ser18format_escaped_str17hc54fac0069c29f8cE.exit.thread.i.i.i: ; _ZN10serde_json3ser9to_writer17h4f601c413d134b6eE.exit.thread: ; preds = %206, %27, %36, %87, %139, %148, %152, %_ZN10serde_json3ser18format_escaped_str17hc54fac0069c29f8cE.exit.thread.i.i.i %.0.i.i.ph = phi ptr [ %168, %_ZN10serde_json3ser18format_escaped_str17hc54fac0069c29f8cE.exit.thread.i.i.i ], [ %153, %152 ], [ %149, %148 ], [ %140, %139 ], [ %88, %87 ], [ %37, %36 ], [ %28, %27 ], [ %.1.i.i, %206 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i.i.ph, i64 8) ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16), !noalias !64 br label %207 _ZN10serde_json3ser9to_writer17h4f601c413d134b6eE.exit.thread57: ; preds = %24, %_ZN10serde_json3ser9Formatter10write_bool17h7ec1e3dc0b6bf878E.exit.i.i.i, %_ZN10serde_json3ser9Formatter9write_u6417h834517c92d4fb842E.exit.i.i.i.i, %_ZN10serde_json3ser9Formatter9write_i6417h9b366e3739ad435dE.exit.i.i.i.i, %144, %select.unfold.i.i.i.i, %_ZN10serde_json3ser18format_escaped_str17hc54fac0069c29f8cE.exit.i.i.i + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16), !noalias !64 br label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hd835812e833fb377E.exit" _ZN10serde_json3ser9to_writer17h4f601c413d134b6eE.exit: ; preds = %169, %"_ZN83_$LT$serde_json..ser..Compound$LT$W$C$F$GT$$u20$as$u20$serde..ser..SerializeMap$GT$3end17h03981213a55c5436E.exit.i.i" %.0.i.i = phi ptr [ %.0.i18.i.i, %"_ZN83_$LT$serde_json..ser..Compound$LT$W$C$F$GT$$u20$as$u20$serde..ser..SerializeMap$GT$3end17h03981213a55c5436E.exit.i.i" ], [ %171, %169 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i.i, i64 8) ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16), !noalias !64 %.not64 = icmp eq ptr %.0.i.i, null br i1 %.not64, label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hd835812e833fb377E.exit", label %207 @@ -1284,6 +1293,8 @@ _ZN10serde_json3ser18format_escaped_str17hda01937d878482f2E.exit.thread.i.i.i: ; %.fca.0.extract38.i.i = phi ptr [ %.fca.0.extract.i.i16, %_ZN5serde3ser12SerializeMap15serialize_entry17h410e038fe18d3eacE.exit.i.i ], [ %.fca.0.extract37.i.i, %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$4iter17h155e9fd32c552b4bE.exit.i.i3" ] %404 = phi { ptr, ptr } [ %418, %_ZN5serde3ser12SerializeMap15serialize_entry17h410e038fe18d3eacE.exit.i.i ], [ %372, %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$4iter17h155e9fd32c552b4bE.exit.i.i3" ] %.fca.1.extract.i.i15 = extractvalue { ptr, ptr } %404, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.0.extract38.i.i, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.1.extract.i.i15, i64 8) ] %405 = icmp ne ptr %.fca.1.extract.i.i15, null call void @llvm.assume(i1 %405) %406 = call noundef align 8 ptr @"_ZN83_$LT$serde_json..ser..Compound$LT$W$C$F$GT$$u20$as$u20$serde..ser..SerializeMap$GT$13serialize_key17hf321a2c2cffe7efcE.llvm.18206402751905676474"(ptr noalias noundef nonnull align 8 dereferenceable(16) %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.fca.0.extract38.i.i), !noalias !225 @@ -1329,15 +1340,18 @@ _ZN5serde3ser12SerializeMap15serialize_entry17h410e038fe18d3eacE.exit.i.i: ; pre _ZN10serde_json3ser16to_writer_pretty17h43d5d3095db3fc07E.exit.thread: ; preds = %420, %214, %223, %274, %326, %335, %339, %_ZN10serde_json3ser18format_escaped_str17hda01937d878482f2E.exit.thread.i.i.i %.0.i.i2.ph = phi ptr [ %354, %_ZN10serde_json3ser18format_escaped_str17hda01937d878482f2E.exit.thread.i.i.i ], [ %340, %339 ], [ %336, %335 ], [ %327, %326 ], [ %275, %274 ], [ %224, %223 ], [ %215, %214 ], [ %.1.i.i1, %420 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i.i2.ph, i64 8) ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9), !noalias !135 br label %421 _ZN10serde_json3ser16to_writer_pretty17h43d5d3095db3fc07E.exit.thread62: ; preds = %211, %_ZN10serde_json3ser9Formatter10write_bool17h3cf53aafdd323af7E.exit.i.i.i, %_ZN10serde_json3ser9Formatter9write_u6417hc93ca8d034f51936E.exit.i.i.i.i, %_ZN10serde_json3ser9Formatter9write_i6417h0c3664d217a454d2E.exit.i.i.i.i, %331, %select.unfold.i.i.i.i19, %_ZN10serde_json3ser18format_escaped_str17hda01937d878482f2E.exit.i.i.i + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9), !noalias !135 br label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hd835812e833fb377E.exit" _ZN10serde_json3ser16to_writer_pretty17h43d5d3095db3fc07E.exit: ; preds = %355, %"_ZN83_$LT$serde_json..ser..Compound$LT$W$C$F$GT$$u20$as$u20$serde..ser..SerializeMap$GT$3end17h03e2085cde463d2dE.exit.i.i" %.0.i.i2 = phi ptr [ %.0.i20.i.i, %"_ZN83_$LT$serde_json..ser..Compound$LT$W$C$F$GT$$u20$as$u20$serde..ser..SerializeMap$GT$3end17h03e2085cde463d2dE.exit.i.i" ], [ %357, %355 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i.i2, i64 8) ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9), !noalias !135 %.not = icmp eq ptr %.0.i.i2, null br i1 %.not, label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hd835812e833fb377E.exit", label %421 diff --git a/bench/serde-rs-json/optimized/2g78x8xblier5b5n.ll b/bench/serde-rs-json/optimized/2g78x8xblier5b5n.ll index 7204ae4bef8..af430e39ae7 100644 --- a/bench/serde-rs-json/optimized/2g78x8xblier5b5n.ll +++ b/bench/serde-rs-json/optimized/2g78x8xblier5b5n.ll @@ -382,7 +382,7 @@ define hidden void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allo ; Function Attrs: inlinehint nonlazybind uwtable define hidden void @"_ZN64_$LT$core..fmt..Arguments$u20$as$u20$alloc..string..ToString$GT$9to_string17h562b7f62fc3b256cE.llvm.15834873109261722949"(ptr noalias nocapture noundef sret({ { { i64, ptr }, i64 } }) align 8 dereferenceable(24) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(48) %1) unnamed_addr #2 personality ptr @rust_eh_personality { %3 = alloca { { ptr, i64 }, { ptr, i64 }, { ptr, i64 } }, align 8 - %.sroa.0.0.copyload = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.sroa.0.0.copyload = load ptr, ptr %1, align 8, !nonnull !4, !align !5, !noundef !4 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 8 %.sroa.5.0.copyload = load i64, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 16 @@ -632,7 +632,7 @@ define hidden noundef nonnull align 8 ptr @"_ZN61_$LT$serde_json..error..Error$u call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) tail call void @llvm.experimental.noalias.scope.decl(metadata !141) tail call void @llvm.experimental.noalias.scope.decl(metadata !144) - %.sroa.0.0.copyload.i = load ptr, ptr %0, align 8, !alias.scope !144, !noalias !141, !nonnull !4, !noundef !4 + %.sroa.0.0.copyload.i = load ptr, ptr %0, align 8, !alias.scope !144, !noalias !141, !nonnull !4, !align !5, !noundef !4 %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 8 %.sroa.5.0.copyload.i = load i64, ptr %.sroa.5.0..sroa_idx.i, align 8, !alias.scope !144, !noalias !141 %.sroa.6.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -756,7 +756,7 @@ define void @"_ZN75_$LT$serde_json..ser..PrettyFormatter$u20$as$u20$core..defaul ret void } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable define noundef align 8 dereferenceable_or_null(32) ptr @"_ZN57_$LT$usize$u20$as$u20$serde_json..value..index..Index$GT$10index_into17h031de2ad1a2a34cdE"(ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %1) unnamed_addr #7 { %3 = load i8, ptr %1, align 8, !range !188, !noundef !4 %4 = icmp eq i8 %3, 4 @@ -777,10 +777,11 @@ define noundef align 8 dereferenceable_or_null(32) ptr @"_ZN57_$LT$usize$u20$as$ 14: ; preds = %5, %2, %10 %.0 = phi ptr [ %13, %10 ], [ null, %2 ], [ null, %5 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable define noundef align 8 dereferenceable_or_null(32) ptr @"_ZN57_$LT$usize$u20$as$u20$serde_json..value..index..Index$GT$14index_into_mut17hd5acbd0843545bc3E"(ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %1) unnamed_addr #7 { %3 = load i8, ptr %1, align 8, !range !188, !noundef !4 %4 = icmp eq i8 %3, 4 @@ -801,6 +802,7 @@ define noundef align 8 dereferenceable_or_null(32) ptr @"_ZN57_$LT$usize$u20$as$ 14: ; preds = %5, %2, %10 %.0 = phi ptr [ %13, %10 ], [ null, %2 ], [ null, %5 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -842,6 +844,7 @@ define noundef nonnull align 8 dereferenceable(32) ptr @"_ZN57_$LT$usize$u20$as$ store ptr @anon.8ee8e6336c12f85abf0522abe3e6113a.20, ptr %7, align 8, !alias.scope !189, !noalias !192 %20 = getelementptr inbounds nuw i8, ptr %7, i64 8 store i64 2, ptr %20, align 8, !alias.scope !189, !noalias !192 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %21 = getelementptr inbounds nuw i8, ptr %7, i64 32 store ptr null, ptr %21, align 8, !alias.scope !189, !noalias !192 %22 = getelementptr inbounds nuw i8, ptr %7, i64 16 @@ -864,6 +867,7 @@ define noundef nonnull align 8 dereferenceable(32) ptr @"_ZN57_$LT$usize$u20$as$ store ptr @anon.8ee8e6336c12f85abf0522abe3e6113a.16, ptr %4, align 8, !alias.scope !195, !noalias !198 %28 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 2, ptr %28, align 8, !alias.scope !195, !noalias !198 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %29 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %29, align 8, !alias.scope !195, !noalias !198 %30 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -877,6 +881,7 @@ define noundef nonnull align 8 dereferenceable(32) ptr @"_ZN57_$LT$usize$u20$as$ %33 = getelementptr inbounds nuw i8, ptr %1, i64 16 %34 = load ptr, ptr %33, align 8, !nonnull !4 %35 = getelementptr inbounds { i8, [31 x i8] }, ptr %34, i64 %15 + call void @llvm.assume(i1 true) [ "align"(ptr %35, i64 8) ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) ret ptr %35 } @@ -886,7 +891,7 @@ define noundef align 8 dereferenceable_or_null(32) ptr @"_ZN55_$LT$str$u20$as$u2 %4 = alloca { i64, [3 x i64] }, align 8 %5 = load i8, ptr %2, align 8, !range !188, !noundef !4 %6 = icmp eq i8 %5, 5 - br i1 %6, label %7, label %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$3get17h6c60ddd5564b8f49E.exit" + br i1 %6, label %7, label %22 7: ; preds = %3 %8 = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -902,25 +907,35 @@ define noundef align 8 dereferenceable_or_null(32) ptr @"_ZN55_$LT$str$u20$as$u2 call void @"_ZN5alloc11collections5btree6search142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$11search_tree17h03e0c3cb68d088edE"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %4, ptr noundef nonnull %9, i64 noundef %13, ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1), !noalias !201 %14 = load i64, ptr %4, align 8, !range !207, !noalias !206, !noundef !4 %trunc.i = trunc nuw i64 %14 to i1 - br i1 %trunc.i, label %19, label %15 + br i1 %trunc.i, label %21, label %15 15: ; preds = %11 %16 = getelementptr inbounds nuw i8, ptr %4, i64 8 %.sroa.0.0.copyload.i = load ptr, ptr %16, align 8, !noalias !206, !nonnull !4, !noundef !4 %.sroa.28.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 24 %.sroa.28.0.copyload.i = load i64, ptr %.sroa.28.0..sroa_idx.i, align 8, !noalias !206 - %17 = icmp ult i64 %.sroa.28.0.copyload.i, 11 - tail call void @llvm.assume(i1 %17) - %18 = getelementptr inbounds nuw { [4 x i64] }, ptr %.sroa.0.0.copyload.i, i64 %.sroa.28.0.copyload.i - br label %19 + %17 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i, i64 360 + %18 = icmp ult i64 %.sroa.28.0.copyload.i, 11 + tail call void @llvm.assume(i1 %18) + %19 = getelementptr inbounds nuw { [3 x i64] }, ptr %17, i64 %.sroa.28.0.copyload.i + %20 = getelementptr inbounds nuw { [4 x i64] }, ptr %.sroa.0.0.copyload.i, i64 %.sroa.28.0.copyload.i + call void @llvm.assume(i1 true) [ "align"(ptr %19, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %20, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %20, i64 8) ] + br label %21 -19: ; preds = %15, %11 - %.1.i = phi ptr [ %18, %15 ], [ null, %11 ] +21: ; preds = %15, %11 + %.1.i = phi ptr [ %20, %15 ], [ null, %11 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4), !noalias !206 br label %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$3get17h6c60ddd5564b8f49E.exit" -"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$3get17h6c60ddd5564b8f49E.exit": ; preds = %19, %7, %3 - %.0 = phi ptr [ null, %3 ], [ %.1.i, %19 ], [ null, %7 ] +"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$3get17h6c60ddd5564b8f49E.exit": ; preds = %7, %21 + %.0.i = phi ptr [ %.1.i, %21 ], [ null, %7 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i, i64 8) ] + br label %22 + +22: ; preds = %3, %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$3get17h6c60ddd5564b8f49E.exit" + %.0 = phi ptr [ %.0.i, %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$3get17h6c60ddd5564b8f49E.exit" ], [ null, %3 ] ret ptr %.0 } @@ -929,7 +944,7 @@ define noundef align 8 dereferenceable_or_null(32) ptr @"_ZN55_$LT$str$u20$as$u2 %4 = alloca { i64, [3 x i64] }, align 8 %5 = load i8, ptr %2, align 8, !range !188, !noundef !4 %6 = icmp eq i8 %5, 5 - br i1 %6, label %7, label %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$7get_mut17hc871f1687b8ff7adE.exit" + br i1 %6, label %7, label %17 7: ; preds = %3 %8 = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -954,8 +969,13 @@ define noundef align 8 dereferenceable_or_null(32) ptr @"_ZN55_$LT$str$u20$as$u2 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4), !noalias !213 br label %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$7get_mut17hc871f1687b8ff7adE.exit" -"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$7get_mut17hc871f1687b8ff7adE.exit": ; preds = %11, %7, %3 - %.0 = phi ptr [ null, %3 ], [ %.1.i, %11 ], [ null, %7 ] +"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$7get_mut17hc871f1687b8ff7adE.exit": ; preds = %7, %11 + %.0.i = phi ptr [ %.1.i, %11 ], [ null, %7 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i, i64 8) ] + br label %17 + +17: ; preds = %3, %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$7get_mut17hc871f1687b8ff7adE.exit" + %.0 = phi ptr [ %.0.i, %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$7get_mut17hc871f1687b8ff7adE.exit" ], [ null, %3 ] ret ptr %.0 } @@ -1070,6 +1090,7 @@ _ZN10serde_json3map5Entry9or_insert17hc50b8275d310848dE.exit: ; preds = %24, %26 store ptr @anon.8ee8e6336c12f85abf0522abe3e6113a.24, ptr %10, align 8, !alias.scope !240, !noalias !243 %32 = getelementptr inbounds nuw i8, ptr %10, i64 8 store i64 2, ptr %32, align 8, !alias.scope !240, !noalias !243 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %33 = getelementptr inbounds nuw i8, ptr %10, i64 32 store ptr null, ptr %33, align 8, !alias.scope !240, !noalias !243 %34 = getelementptr inbounds nuw i8, ptr %10, i64 16 @@ -1267,7 +1288,7 @@ attributes #3 = { inlinehint nounwind nonlazybind uwtable "probe-stack"="inline- attributes #4 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #5 = { cold inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #7 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #7 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #8 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #10 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } diff --git a/bench/serde-rs-json/optimized/36shr7j8gl5gy6fn.ll b/bench/serde-rs-json/optimized/36shr7j8gl5gy6fn.ll index af64c221760..68925c0dea0 100644 --- a/bench/serde-rs-json/optimized/36shr7j8gl5gy6fn.ll +++ b/bench/serde-rs-json/optimized/36shr7j8gl5gy6fn.ll @@ -52,6 +52,7 @@ default.unreachable: ; preds = %.lr.ph37 18: ; preds = %.lr.ph37 %19 = getelementptr i8, ptr %9, i64 -1 + call void @llvm.assume(i1 true) [ "align"(ptr %19, i64 8) ] %20 = icmp ne ptr %19, null call void @llvm.assume(i1 %20) %21 = getelementptr i8, ptr %9, i64 15 @@ -140,6 +141,7 @@ define hidden noundef zeroext i1 @"_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..D .lr.ph.i: ; preds = %3, %.lr.ph.i %.sroa.0.05.i = phi ptr [ %8, %.lr.ph.i ], [ %0, %3 ] %8 = getelementptr inbounds nuw i8, ptr %.sroa.0.05.i, i64 32 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.05.i, i64 8) ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4), !noalias !30 store ptr %.sroa.0.05.i, ptr %4, align 8, !noalias !30 %9 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList5entry17h2ed5a4f4153b90ddE(ptr noalias noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 1 %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.f288aba1288e7a615443dffa1f18fa93.3.llvm.17788874430417167) @@ -148,6 +150,7 @@ define hidden noundef zeroext i1 @"_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..D br i1 %10, label %_ZN4core3fmt8builders9DebugList7entries17h98a615cf2a9210e6E.exit, label %.lr.ph.i _ZN4core3fmt8builders9DebugList7entries17h98a615cf2a9210e6E.exit: ; preds = %.lr.ph.i, %3 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %11 = call noundef zeroext i1 @_ZN4core3fmt8builders9DebugList6finish17hadbed7078d8807f7E(ptr noalias noundef nonnull align 8 dereferenceable(16) %5) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) ret i1 %11 @@ -408,8 +411,9 @@ define hidden void @"_ZN5alloc11collections5btree8navigate75LazyLeafRange$LT$all ret void } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(inaccessiblemem: write) uwtable define hidden noalias noundef align 8 ptr @"_ZN68_$LT$serde..de..impls..UnitVisitor$u20$as$u20$serde..de..Visitor$GT$10visit_unit17h14bb56ec77c06779E.llvm.12841644863924027351"() unnamed_addr #7 { + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] ret ptr null } @@ -465,7 +469,7 @@ define noundef zeroext i1 @"_ZN179_$LT$$LT$serde_json..map..Map$LT$alloc..string define noundef nonnull align 8 dereferenceable(24) ptr @_ZN10serde_json3map5Entry3key17h6bd5d69f5952b80aE(ptr noalias noundef readonly align 8 dereferenceable(56) %0) unnamed_addr #9 { %2 = load i64, ptr %0, align 8, !range !50, !noundef !10 %3 = icmp eq i64 %2, -9223372036854775808 - br i1 %3, label %4, label %12 + br i1 %3, label %4, label %13 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -476,9 +480,13 @@ define noundef nonnull align 8 dereferenceable(24) ptr @_ZN10serde_json3map5Entr %10 = icmp ult i64 %8, 11 tail call void @llvm.assume(i1 %10) %11 = getelementptr inbounds nuw { [3 x i64] }, ptr %9, i64 %8 - br label %12 + %12 = getelementptr inbounds nuw { [4 x i64] }, ptr %6, i64 %8 + call void @llvm.assume(i1 true) [ "align"(ptr %11, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %11, i64 8) ] + br label %13 -12: ; preds = %1, %4 +13: ; preds = %1, %4 %.0 = phi ptr [ %11, %4 ], [ %0, %1 ] ret ptr %.0 } @@ -520,31 +528,35 @@ define hidden noundef align 8 ptr @"_ZN10serde_json5value2de78_$LT$impl$u20$serd %2 = alloca {}, align 1 %3 = load i8, ptr %0, align 8, !range !33, !noundef !10 %4 = icmp eq i8 %3, 0 - br i1 %4, label %9, label %5 + br i1 %4, label %5, label %6 5: ; preds = %1 - %6 = invoke noundef nonnull align 8 ptr @"_ZN10serde_json5value2de42_$LT$impl$u20$serde_json..value..Value$GT$12invalid_type17h76010d995c7009dbE.llvm.12841644863924027351"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.26c0cb6590748a1386405b514f6d4bfd.8.llvm.12841644863924027351) - to label %9 unwind label %7 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] + br label %10 + +6: ; preds = %1 + %7 = invoke noundef nonnull align 8 ptr @"_ZN10serde_json5value2de42_$LT$impl$u20$serde_json..value..Value$GT$12invalid_type17h76010d995c7009dbE.llvm.12841644863924027351"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.26c0cb6590748a1386405b514f6d4bfd.8.llvm.12841644863924027351) + to label %10 unwind label %8 -7: ; preds = %5 - %8 = landingpad { ptr, i32 } +8: ; preds = %6 + %9 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h2104f8452adb367aE.llvm.12841644863924027351"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0) #19 - to label %12 unwind label %10 + to label %13 unwind label %11 -9: ; preds = %1, %5 - %.0 = phi ptr [ %6, %5 ], [ null, %1 ] +10: ; preds = %5, %6 + %.0 = phi ptr [ null, %5 ], [ %7, %6 ] call void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h2104f8452adb367aE.llvm.12841644863924027351"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0) ret ptr %.0 -10: ; preds = %7 - %11 = landingpad { ptr, i32 } +11: ; preds = %8 + %12 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #20 unreachable -12: ; preds = %7 - resume { ptr, i32 } %8 +13: ; preds = %8 + resume { ptr, i32 } %9 } ; Function Attrs: nonlazybind uwtable @@ -552,14 +564,18 @@ define hidden noundef align 8 ptr @"_ZN10serde_json5value2de82_$LT$impl$u20$serd %2 = alloca {}, align 1 %3 = load i8, ptr %0, align 8, !range !33, !noundef !10 %4 = icmp eq i8 %3, 0 - br i1 %4, label %7, label %5 + br i1 %4, label %5, label %6 5: ; preds = %1 - %6 = call noundef nonnull align 8 ptr @"_ZN10serde_json5value2de42_$LT$impl$u20$serde_json..value..Value$GT$12invalid_type17h76010d995c7009dbE.llvm.12841644863924027351"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.26c0cb6590748a1386405b514f6d4bfd.8.llvm.12841644863924027351) - br label %7 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] + br label %8 + +6: ; preds = %1 + %7 = call noundef nonnull align 8 ptr @"_ZN10serde_json5value2de42_$LT$impl$u20$serde_json..value..Value$GT$12invalid_type17h76010d995c7009dbE.llvm.12841644863924027351"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.26c0cb6590748a1386405b514f6d4bfd.8.llvm.12841644863924027351) + br label %8 -7: ; preds = %1, %5 - %.0 = phi ptr [ %6, %5 ], [ null, %1 ] +8: ; preds = %5, %6 + %.0 = phi ptr [ null, %5 ], [ %7, %6 ] ret ptr %.0 } @@ -676,7 +692,7 @@ attributes #3 = { inlinehint mustprogress nofree norecurse nosync nounwind nonla attributes #4 = { inlinehint nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #5 = { nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #7 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #7 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #8 = { mustprogress nofree nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #9 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #10 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } diff --git a/bench/serde-rs-json/optimized/3o41byb1p1zh3720.ll b/bench/serde-rs-json/optimized/3o41byb1p1zh3720.ll index be2afbb71ac..9546ca5796a 100644 --- a/bench/serde-rs-json/optimized/3o41byb1p1zh3720.ll +++ b/bench/serde-rs-json/optimized/3o41byb1p1zh3720.ll @@ -106,41 +106,45 @@ define noundef align 8 ptr @"_ZN87_$LT$serde_json..value..de..VariantDeserialize %3 = alloca { i8, [31 x i8] }, align 8 %4 = load i8, ptr %0, align 8, !range !14, !noundef !13 %5 = icmp eq i8 %4, 6 - br i1 %5, label %16, label %6 + br i1 %5, label %17, label %6 6: ; preds = %1 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %0, i64 32, i1 false) call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %2) %7 = load i8, ptr %3, align 8, !range !15, !alias.scope !16, !noundef !13 %8 = icmp eq i8 %7, 0 - br i1 %8, label %"_ZN10serde_json5value2de78_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$serde_json..value..Value$GT$16deserialize_unit17hf476754e1ce12faeE.exit", label %9 + br i1 %8, label %9, label %10 9: ; preds = %6 - %10 = invoke noundef nonnull align 8 ptr @"_ZN10serde_json5value2de42_$LT$impl$u20$serde_json..value..Value$GT$12invalid_type17h76010d995c7009dbE.llvm.12841644863924027351"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %3, ptr noundef nonnull align 1 %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.26c0cb6590748a1386405b514f6d4bfd.8.llvm.12841644863924027351) - to label %"_ZN10serde_json5value2de78_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$serde_json..value..Value$GT$16deserialize_unit17hf476754e1ce12faeE.exit" unwind label %11 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] + br label %"_ZN10serde_json5value2de78_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$serde_json..value..Value$GT$16deserialize_unit17hf476754e1ce12faeE.exit" -11: ; preds = %9 - %12 = landingpad { ptr, i32 } +10: ; preds = %6 + %11 = invoke noundef nonnull align 8 ptr @"_ZN10serde_json5value2de42_$LT$impl$u20$serde_json..value..Value$GT$12invalid_type17h76010d995c7009dbE.llvm.12841644863924027351"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %3, ptr noundef nonnull align 1 %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.26c0cb6590748a1386405b514f6d4bfd.8.llvm.12841644863924027351) + to label %"_ZN10serde_json5value2de78_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$serde_json..value..Value$GT$16deserialize_unit17hf476754e1ce12faeE.exit" unwind label %12 + +12: ; preds = %10 + %13 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h2104f8452adb367aE.llvm.12841644863924027351"(ptr noalias noundef nonnull align 8 dereferenceable(32) %3) #20 - to label %15 unwind label %13 + to label %16 unwind label %14 -13: ; preds = %11 - %14 = landingpad { ptr, i32 } +14: ; preds = %12 + %15 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #21 unreachable -15: ; preds = %11 - resume { ptr, i32 } %12 +16: ; preds = %12 + resume { ptr, i32 } %13 -"_ZN10serde_json5value2de78_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$serde_json..value..Value$GT$16deserialize_unit17hf476754e1ce12faeE.exit": ; preds = %6, %9 - %.0.i = phi ptr [ %10, %9 ], [ null, %6 ] +"_ZN10serde_json5value2de78_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$serde_json..value..Value$GT$16deserialize_unit17hf476754e1ce12faeE.exit": ; preds = %9, %10 + %.0.i = phi ptr [ null, %9 ], [ %11, %10 ] call void @"_ZN4core3ptr45drop_in_place$LT$serde_json..value..Value$GT$17h2104f8452adb367aE.llvm.12841644863924027351"(ptr noalias noundef nonnull align 8 dereferenceable(32) %3) call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %2) - br label %16 + br label %17 -16: ; preds = %1, %"_ZN10serde_json5value2de78_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$serde_json..value..Value$GT$16deserialize_unit17hf476754e1ce12faeE.exit" +17: ; preds = %1, %"_ZN10serde_json5value2de78_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$serde_json..value..Value$GT$16deserialize_unit17hf476754e1ce12faeE.exit" %.0 = phi ptr [ %.0.i, %"_ZN10serde_json5value2de78_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$serde_json..value..Value$GT$16deserialize_unit17hf476754e1ce12faeE.exit" ], [ null, %1 ] ret ptr %.0 } @@ -223,24 +227,28 @@ define { i64, i64 } @"_ZN79_$LT$serde_json..value..de..MapDeserializer$u20$as$u2 define noundef align 8 ptr @"_ZN90_$LT$serde_json..value..de..VariantRefDeserializer$u20$as$u20$serde..de..VariantAccess$GT$12unit_variant17he5e15287735f9a22E"(ptr noalias noundef readonly align 8 dereferenceable_or_null(32) %0) unnamed_addr #5 personality ptr @rust_eh_personality { %2 = alloca {}, align 1 %3 = icmp eq ptr %0, null - br i1 %3, label %9, label %4 + br i1 %3, label %10, label %4 4: ; preds = %1 call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %2) %5 = load i8, ptr %0, align 8, !range !15, !alias.scope !24, !noundef !13 %6 = icmp eq i8 %5, 0 - br i1 %6, label %"_ZN10serde_json5value2de82_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$$RF$serde_json..value..Value$GT$16deserialize_unit17h3c238fe8469112a9E.exit", label %7 + br i1 %6, label %7, label %8 7: ; preds = %4 - %8 = call noundef nonnull align 8 ptr @"_ZN10serde_json5value2de42_$LT$impl$u20$serde_json..value..Value$GT$12invalid_type17h76010d995c7009dbE.llvm.12841644863924027351"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.26c0cb6590748a1386405b514f6d4bfd.8.llvm.12841644863924027351) + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] br label %"_ZN10serde_json5value2de82_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$$RF$serde_json..value..Value$GT$16deserialize_unit17h3c238fe8469112a9E.exit" -"_ZN10serde_json5value2de82_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$$RF$serde_json..value..Value$GT$16deserialize_unit17h3c238fe8469112a9E.exit": ; preds = %4, %7 - %.0.i = phi ptr [ %8, %7 ], [ null, %4 ] +8: ; preds = %4 + %9 = call noundef nonnull align 8 ptr @"_ZN10serde_json5value2de42_$LT$impl$u20$serde_json..value..Value$GT$12invalid_type17h76010d995c7009dbE.llvm.12841644863924027351"(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %0, ptr noundef nonnull align 1 %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.26c0cb6590748a1386405b514f6d4bfd.8.llvm.12841644863924027351) + br label %"_ZN10serde_json5value2de82_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$$RF$serde_json..value..Value$GT$16deserialize_unit17h3c238fe8469112a9E.exit" + +"_ZN10serde_json5value2de82_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$$RF$serde_json..value..Value$GT$16deserialize_unit17h3c238fe8469112a9E.exit": ; preds = %7, %8 + %.0.i = phi ptr [ null, %7 ], [ %9, %8 ] call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %2) - br label %9 + br label %10 -9: ; preds = %1, %"_ZN10serde_json5value2de82_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$$RF$serde_json..value..Value$GT$16deserialize_unit17h3c238fe8469112a9E.exit" +10: ; preds = %1, %"_ZN10serde_json5value2de82_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$$RF$serde_json..value..Value$GT$16deserialize_unit17h3c238fe8469112a9E.exit" %.0 = phi ptr [ %.0.i, %"_ZN10serde_json5value2de82_$LT$impl$u20$serde..de..Deserializer$u20$for$u20$$RF$serde_json..value..Value$GT$16deserialize_unit17h3c238fe8469112a9E.exit" ], [ null, %1 ] ret ptr %.0 } @@ -360,6 +368,7 @@ define noundef align 8 dereferenceable_or_null(32) ptr @"_ZN73_$LT$alloc..string call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %20, i64 24, i1 false), !noalias !49 %21 = call { ptr, ptr } @"_ZN5alloc11collections5btree4node173Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Immut$C$K$C$V$C$NodeType$GT$$C$alloc..collections..btree..node..marker..KV$GT$7into_kv17ha248e88e5d7f0c6dE"(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %3), !noalias !46 %.fca.1.extract.i.i = extractvalue { ptr, ptr } %21, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.1.extract.i.i, i64 8) ] %22 = icmp ne ptr %.fca.1.extract.i.i, null tail call void @llvm.assume(i1 %22) br label %23 @@ -371,6 +380,7 @@ define noundef align 8 dereferenceable_or_null(32) ptr @"_ZN73_$LT$alloc..string "_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$3get17h6c60ddd5564b8f49E.exit.i": ; preds = %23, %11 %.0.i.i = phi ptr [ %.1.i.i, %23 ], [ null, %11 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i.i, i64 8) ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3), !noalias !45 br label %"_ZN55_$LT$str$u20$as$u20$serde_json..value..index..Index$GT$10index_into17h111be33034785bb5E.exit" @@ -396,7 +406,7 @@ define noundef align 8 dereferenceable_or_null(32) ptr @"_ZN73_$LT$alloc..string tail call void @llvm.experimental.noalias.scope.decl(metadata !56) %12 = load ptr, ptr %11, align 8, !alias.scope !59, !noalias !60, !noundef !13 %13 = icmp eq ptr %12, null - br i1 %13, label %"_ZN55_$LT$str$u20$as$u20$serde_json..value..index..Index$GT$14index_into_mut17h5705f0ed611e6abeE.exit", label %14 + br i1 %13, label %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$7get_mut17hc871f1687b8ff7adE.exit.i", label %14 14: ; preds = %10 %15 = getelementptr inbounds nuw i8, ptr %1, i64 16 @@ -412,10 +422,15 @@ define noundef align 8 dereferenceable_or_null(32) ptr @"_ZN73_$LT$alloc..string %19 = getelementptr inbounds { [4 x i64] }, ptr %.sroa.0.0.copyload.i.i, i64 %.sroa.27.0.copyload.i.i %.1.i.i = select i1 %trunc.i.i, ptr null, ptr %19 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3), !noalias !62 + br label %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$7get_mut17hc871f1687b8ff7adE.exit.i" + +"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$7get_mut17hc871f1687b8ff7adE.exit.i": ; preds = %14, %10 + %.0.i.i = phi ptr [ %.1.i.i, %14 ], [ null, %10 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i.i, i64 8) ] br label %"_ZN55_$LT$str$u20$as$u20$serde_json..value..index..Index$GT$14index_into_mut17h5705f0ed611e6abeE.exit" -"_ZN55_$LT$str$u20$as$u20$serde_json..value..index..Index$GT$14index_into_mut17h5705f0ed611e6abeE.exit": ; preds = %2, %10, %14 - %.0.i = phi ptr [ null, %2 ], [ %.1.i.i, %14 ], [ null, %10 ] +"_ZN55_$LT$str$u20$as$u20$serde_json..value..index..Index$GT$14index_into_mut17h5705f0ed611e6abeE.exit": ; preds = %2, %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$7get_mut17hc871f1687b8ff7adE.exit.i" + %.0.i = phi ptr [ %.0.i.i, %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$7get_mut17hc871f1687b8ff7adE.exit.i" ], [ null, %2 ] ret ptr %.0.i } diff --git a/bench/serde-rs/optimized/15c4aj0j8k4kz6cj.ll b/bench/serde-rs/optimized/15c4aj0j8k4kz6cj.ll index d4468ca27d8..ab56daa142b 100644 --- a/bench/serde-rs/optimized/15c4aj0j8k4kz6cj.ll +++ b/bench/serde-rs/optimized/15c4aj0j8k4kz6cj.ll @@ -44,7 +44,7 @@ define hidden noundef zeroext i1 @"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..Slic %4 = getelementptr inbounds { ptr, i64 }, ptr %1, i64 %2 tail call void @llvm.experimental.noalias.scope.decl(metadata !17) %.not.i = icmp eq i64 %2, 0 - br i1 %.not.i, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h3b0d78e82faf87b5E.llvm.2284647516453932833.exit", label %.lr.ph.i + br i1 %.not.i, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit.i", label %.lr.ph.i .lr.ph.i: ; preds = %3 %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -52,9 +52,14 @@ define hidden noundef zeroext i1 @"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..Slic %7 = load ptr, ptr %0, align 8, !alias.scope !17, !noalias !29, !nonnull !4, !align !5 br label %8 +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit.i": ; preds = %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit.backedge.i", %3 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] + br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h3b0d78e82faf87b5E.llvm.2284647516453932833.exit" + 8: ; preds = %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit.backedge.i", %.lr.ph.i %9 = phi ptr [ %1, %.lr.ph.i ], [ %10, %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit.backedge.i" ] %10 = getelementptr inbounds nuw i8, ptr %9, i64 16 + call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !30) tail call void @llvm.experimental.noalias.scope.decl(metadata !31) tail call void @llvm.experimental.noalias.scope.decl(metadata !32) @@ -71,11 +76,11 @@ define hidden noundef zeroext i1 @"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..Slic "_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit.backedge.i": ; preds = %13, %8 %.not11.i = icmp eq ptr %10, %4 - br i1 %.not11.i, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h3b0d78e82faf87b5E.llvm.2284647516453932833.exit", label %8 + br i1 %.not11.i, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit.i", label %8 -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h3b0d78e82faf87b5E.llvm.2284647516453932833.exit": ; preds = %13, %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit.backedge.i", %3 - %.lcssa.i = phi i1 [ false, %3 ], [ false, %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit.backedge.i" ], [ true, %13 ] - ret i1 %.lcssa.i +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3any17h3b0d78e82faf87b5E.llvm.2284647516453932833.exit": ; preds = %13, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit.i" + %16 = phi i1 [ false, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit.i" ], [ true, %13 ] + ret i1 %16 } ; Function Attrs: inlinehint mustprogress nofree nounwind nonlazybind willreturn memory(read) uwtable @@ -116,9 +121,18 @@ define hidden noundef zeroext i1 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u2 %7 = load ptr, ptr %1, align 8, !nonnull !4, !align !5 br label %8 +"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit._ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit_crit_edge": ; preds = %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit.backedge" + store ptr %10, ptr %0, align 8, !alias.scope !57 + br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit" + +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit": ; preds = %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit._ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit_crit_edge", %2 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] + br label %16 + 8: ; preds = %.lr.ph, %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit.backedge" %9 = phi ptr [ %.promoted, %.lr.ph ], [ %10, %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit.backedge" ] %10 = getelementptr inbounds nuw i8, ptr %9, i64 16 + call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !68) tail call void @llvm.experimental.noalias.scope.decl(metadata !69) tail call void @llvm.experimental.noalias.scope.decl(metadata !60) @@ -131,23 +145,22 @@ define hidden noundef zeroext i1 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u2 %14 = load ptr, ptr %9, align 8, !alias.scope !70, !noalias !71, !nonnull !4, !align !5, !noundef !4 %bcmp.i.i.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %14, ptr nonnull readonly align 1 %7, i64 %6), !alias.scope !72, !noalias !79 %15 = icmp eq i32 %bcmp.i.i.i.i, 0 - br i1 %15, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit.sink.split", label %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit.backedge" + br i1 %15, label %.loopexit, label %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit.backedge" "_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit.backedge": ; preds = %13, %8 %.not11 = icmp eq ptr %10, %4 - br i1 %.not11, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit.sink.split", label %8 + br i1 %.not11, label %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit._ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit_crit_edge", label %8 -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit.sink.split": ; preds = %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit.backedge", %13 - %.lcssa.ph = phi i1 [ true, %13 ], [ false, %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit.backedge" ] +.loopexit: ; preds = %13 store ptr %10, ptr %0, align 8, !alias.scope !57 - br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit" + br label %16 -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit.sink.split", %2 - %.lcssa = phi i1 [ false, %2 ], [ %.lcssa.ph, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit.sink.split" ] - ret i1 %.lcssa +16: ; preds = %.loopexit, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit" + %17 = phi i1 [ true, %.loopexit ], [ false, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833.exit" ] + ret i1 %17 } -; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable +; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h92faf1476f0ac206E.llvm.2284647516453932833"(ptr noalias nocapture noundef align 8 dereferenceable(16) %0) unnamed_addr #5 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load ptr, ptr %2, align 8, !nonnull !4, !noundef !4 @@ -162,27 +175,32 @@ define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core.. 8: ; preds = %1, %6 %.0 = phi ptr [ %4, %6 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } ; Function Attrs: nonlazybind uwtable declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #6 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #7 + ; Function Attrs: nofree nounwind nonlazybind willreturn memory(argmem: read) -declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #7 +declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #8 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #8 +declare void @llvm.experimental.noalias.scope.decl(metadata) #9 attributes #0 = { inlinehint mustprogress nofree nounwind nonlazybind willreturn memory(read, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { inlinehint mustprogress nofree nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { nofree nounwind nonlazybind memory(read, inaccessiblemem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { inlinehint mustprogress nofree nounwind nonlazybind willreturn memory(read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { inlinehint nofree nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #5 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #5 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #7 = { nofree nounwind nonlazybind willreturn memory(argmem: read) } -attributes #8 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #7 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #8 = { nofree nounwind nonlazybind willreturn memory(argmem: read) } +attributes #9 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/smol-rs/optimized/2itwlwnaucg2cdit.ll b/bench/smol-rs/optimized/2itwlwnaucg2cdit.ll index 6cd644f4265..0830db57967 100644 --- a/bench/smol-rs/optimized/2itwlwnaucg2cdit.ll +++ b/bench/smol-rs/optimized/2itwlwnaucg2cdit.ll @@ -137,6 +137,7 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i: ; preds = %38, %.noe br i1 %.not, label %47, label %44 44: ; preds = %"_ZN4core3ptr81drop_in_place$LT$std..sync..mutex..MutexGuard$LT$async_executor..Sleepers$GT$$GT$17heb022e5d62b48961E.exit" + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.0.extract1, i64 8) ] %45 = getelementptr inbounds nuw i8, ptr %.fca.0.extract1, i64 8 %46 = load ptr, ptr %45, align 8, !nonnull !10, !noundef !10 tail call void %46(ptr noundef %.fca.1.extract2) @@ -146,6 +147,7 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i: ; preds = %38, %.noe ret void 48: ; preds = %42 + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.0.extract1, i64 8) ] %49 = getelementptr inbounds nuw i8, ptr %.fca.0.extract1, i64 24 %50 = load ptr, ptr %49, align 8, !nonnull !10, !noundef !10 invoke void %50(ptr noundef %.fca.1.extract2) @@ -333,6 +335,7 @@ _ZN3std4sync6poison4Flag5guard17h47496af5b61686c3E.llvm.17208988669928403088.exi 26: ; preds = %25 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4), !noalias !14 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] store ptr %12, ptr %4, align 8, !noalias !14 %27 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i8 %.0.i.i.i, ptr %27, align 8, !noalias !14 @@ -355,6 +358,7 @@ _ZN3std4sync6poison4Flag5guard17h47496af5b61686c3E.llvm.17208988669928403088.exi unreachable 33: ; preds = %25 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] %34 = getelementptr inbounds nuw i8, ptr %11, i64 744 %35 = load i64, ptr %34, align 8, !noundef !10 %36 = invoke noundef align 8 dereferenceable(8) ptr @_ZN14async_executor8Executor5state17h87e19c1abb7a92d7E(ptr noundef nonnull align 8 %0) @@ -363,6 +367,7 @@ _ZN3std4sync6poison4Flag5guard17h47496af5b61686c3E.llvm.17208988669928403088.exi "_ZN4core3ptr51drop_in_place$LT$async_task..runnable..Runnable$GT$17h41e61eb678c80758E.exit": ; preds = %117, %44, %118, %116, %37 %.2 = phi i1 [ false, %116 ], [ false, %118 ], [ false, %44 ], [ true, %37 ], [ false, %117 ] %.pn = phi { ptr, i32 } [ %eh.lpad-body22, %116 ], [ %119, %118 ], [ %45, %44 ], [ %38, %37 ], [ %eh.lpad-body22, %117 ] + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] invoke fastcc void @"_ZN4core3ptr98drop_in_place$LT$std..sync..mutex..MutexGuard$LT$slab..Slab$LT$core..task..wake..Waker$GT$$GT$$GT$17h0933420ef6e14d74E"(ptr nonnull %12, i8 %.0.i.i.i) #18 to label %9 unwind label %114 @@ -411,6 +416,7 @@ _ZN3std4sync6poison4Flag5guard17h47496af5b61686c3E.llvm.17208988669928403088.exi store ptr %47, ptr %7, align 8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) store ptr %47, ptr %6, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] %49 = load ptr, ptr %47, align 8, !nonnull !10, !align !13, !noundef !10 %50 = getelementptr inbounds nuw i8, ptr %49, i64 48 %51 = load ptr, ptr %50, align 8, !nonnull !10, !noundef !10 @@ -434,6 +440,7 @@ _ZN3std4sync6poison4Flag5guard17h47496af5b61686c3E.llvm.17208988669928403088.exi %57 = extractvalue { ptr, ptr } %52, 0 %58 = extractvalue { ptr, ptr } %52, 1 %59 = load i64, ptr %34, align 8, !noundef !10 + call void @llvm.assume(i1 true) [ "align"(ptr %57, i64 8) ] %60 = icmp ne ptr %57, null tail call void @llvm.assume(i1 %60) tail call void @llvm.experimental.noalias.scope.decl(metadata !20) @@ -482,6 +489,7 @@ _ZN3std4sync6poison4Flag5guard17h47496af5b61686c3E.llvm.17208988669928403088.exi unreachable 80: ; preds = %66 + call void @llvm.assume(i1 true) [ "align"(ptr %69, i64 8) ] %81 = load ptr, ptr %69, align 8, !noalias !31, !noundef !10 %82 = icmp eq ptr %81, null br i1 %82, label %"_ZN4core3ptr63drop_in_place$LT$slab..Entry$LT$core..task..wake..Waker$GT$$GT$17hfe1f73715ddae98fE.exit.i", label %83 @@ -491,6 +499,7 @@ _ZN3std4sync6poison4Flag5guard17h47496af5b61686c3E.llvm.17208988669928403088.exi to label %88 unwind label %97, !noalias !31 "_ZN4core3ptr63drop_in_place$LT$slab..Entry$LT$core..task..wake..Waker$GT$$GT$17hfe1f73715ddae98fE.exit.i": ; preds = %80 + call void @llvm.assume(i1 true) [ "align"(ptr %69, i64 8) ] %84 = getelementptr inbounds nuw i8, ptr %69, i64 8 %85 = load i64, ptr %84, align 8, !noalias !31, !noundef !10 store i64 %85, ptr %34, align 8, !alias.scope !20, !noalias !23 @@ -539,6 +548,7 @@ _ZN3std4sync6poison4Flag5guard17h47496af5b61686c3E.llvm.17208988669928403088.exi 103: ; preds = %"_ZN4slab13Slab$LT$T$GT$9insert_at17hc240560d0918b05bE.exit" call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] %104 = trunc nuw i8 %.0.i.i.i to i1 br i1 %104, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i, label %105 @@ -1132,7 +1142,7 @@ define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h3b7b60c4dc814 resume { ptr, i32 } %10 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(readwrite, inaccessiblemem: none) uwtable +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(readwrite, inaccessiblemem: write) uwtable define hidden { ptr, ptr } @"_ZN4slab13Slab$LT$T$GT$10try_remove17h8b15e882417c2670E"(ptr noalias nocapture noundef align 8 dereferenceable(40) %0, i64 noundef %1) unnamed_addr #5 personality ptr @rust_eh_personality { %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 %4 = load i64, ptr %3, align 8, !noundef !10 @@ -1143,6 +1153,7 @@ define hidden { ptr, ptr } @"_ZN4slab13Slab$LT$T$GT$10try_remove17h8b15e882417c2 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 %7 = load ptr, ptr %6, align 8, !nonnull !10 %8 = getelementptr inbounds { ptr, [1 x i64] }, ptr %7, i64 %1 + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %9 = getelementptr inbounds nuw i8, ptr %0, i64 32 %10 = load i64, ptr %9, align 8, !noundef !10 %.sroa.02.0.copyload = load ptr, ptr %8, align 8 @@ -1154,6 +1165,7 @@ define hidden { ptr, ptr } @"_ZN4slab13Slab$LT$T$GT$10try_remove17h8b15e882417c2 br i1 %.not18, label %18, label %11 11: ; preds = %5 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.02.0.copyload, i64 8) ] %12 = getelementptr inbounds nuw i8, ptr %0, i64 24 %13 = load i64, ptr %12, align 8, !noundef !10 %14 = add i64 %13, -1 @@ -1420,7 +1432,7 @@ attributes #1 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x attributes #2 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #5 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(readwrite, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #5 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(readwrite, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #7 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #8 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } diff --git a/bench/smol-rs/optimized/393v1jffjrg19g06.ll b/bench/smol-rs/optimized/393v1jffjrg19g06.ll index 2dc22e7e71a..41ac5fe248d 100644 --- a/bench/smol-rs/optimized/393v1jffjrg19g06.ll +++ b/bench/smol-rs/optimized/393v1jffjrg19g06.ll @@ -72,6 +72,7 @@ default.unreachable: ; preds = %15 24: ; preds = %15 %25 = getelementptr i8, ptr %.val, i64 -1 + call void @llvm.assume(i1 true) [ "align"(ptr %25, i64 8) ] %26 = icmp ne ptr %25, null call void @llvm.assume(i1 %26) %27 = getelementptr i8, ptr %.val, i64 15 @@ -466,8 +467,8 @@ default.unreachable: ; preds = %6 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.5.i.i), !noalias !71 br label %"_ZN3std3sys6common12thread_local10fast_local12Key$LT$T$GT$14try_initialize17h8ea3550920377486E.llvm.15000012031496853258.exit" -"_ZN3std3sys6common12thread_local10fast_local12Key$LT$T$GT$14try_initialize17h8ea3550920377486E.llvm.15000012031496853258.exit": ; preds = %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h73072c25d77c27ddE.exit.i", %6, %2 - %.0 = phi ptr [ %5, %2 ], [ %5, %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h73072c25d77c27ddE.exit.i" ], [ null, %6 ] +"_ZN3std3sys6common12thread_local10fast_local12Key$LT$T$GT$14try_initialize17h8ea3550920377486E.llvm.15000012031496853258.exit": ; preds = %2, %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h73072c25d77c27ddE.exit.i", %6 + %.0 = phi ptr [ %5, %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h73072c25d77c27ddE.exit.i" ], [ null, %6 ], [ %5, %2 ] ret ptr %.0 } @@ -548,8 +549,8 @@ default.unreachable: ; preds = %7 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) br label %"_ZN3std3sys6common12thread_local10fast_local12Key$LT$T$GT$14try_initialize17h701a525cd2ce12dfE.llvm.15000012031496853258.exit" -"_ZN3std3sys6common12thread_local10fast_local12Key$LT$T$GT$14try_initialize17h701a525cd2ce12dfE.llvm.15000012031496853258.exit": ; preds = %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h313b4058bd6ef2f9E.exit.i", %7, %2 - %.0 = phi ptr [ %6, %2 ], [ %6, %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h313b4058bd6ef2f9E.exit.i" ], [ null, %7 ] +"_ZN3std3sys6common12thread_local10fast_local12Key$LT$T$GT$14try_initialize17h701a525cd2ce12dfE.llvm.15000012031496853258.exit": ; preds = %2, %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h313b4058bd6ef2f9E.exit.i", %7 + %.0 = phi ptr [ %6, %"_ZN3std3sys6common12thread_local4lazy21LazyKeyInner$LT$T$GT$10initialize17h313b4058bd6ef2f9E.exit.i" ], [ null, %7 ], [ %6, %2 ] ret ptr %.0 } @@ -585,6 +586,7 @@ define internal void @_ZN3std3sys6common12thread_local10fast_local13destroy_valu store ptr @anon.445062df179d5f28331d80dcff370e0c.11, ptr %4, align 8, !alias.scope !114, !noalias !117 %11 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %11, align 8, !alias.scope !114, !noalias !117 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %12 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %12, align 8, !alias.scope !114, !noalias !117 %13 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -646,6 +648,7 @@ define internal void @_ZN3std3sys6common12thread_local10fast_local13destroy_valu store ptr @anon.445062df179d5f28331d80dcff370e0c.11, ptr %4, align 8, !alias.scope !122, !noalias !125 %11 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %11, align 8, !alias.scope !122, !noalias !125 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %12 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %12, align 8, !alias.scope !122, !noalias !125 %13 = getelementptr inbounds nuw i8, ptr %4, i64 16 diff --git a/bench/smol-rs/optimized/5836b0ge3mikiq0d.ll b/bench/smol-rs/optimized/5836b0ge3mikiq0d.ll index 2b44c549eb9..0ebaa4454b9 100644 --- a/bench/smol-rs/optimized/5836b0ge3mikiq0d.ll +++ b/bench/smol-rs/optimized/5836b0ge3mikiq0d.ll @@ -450,6 +450,7 @@ _ZN7tracing4span4Span8do_enter17hbc9c1a32e0d90029E.exit: ; preds = %.thread, %65 %70 = atomicrmw add ptr @_ZN8async_io6driver14BLOCK_ON_COUNT17ha4c66b7e5ff821edE, i64 1 seq_cst, align 8 call void @llvm.lifetime.start.p0(i64 192, ptr nonnull %44) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(192) %44, ptr noundef nonnull align 8 dereferenceable(192) %0, i64 192, i1 false) + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %71 = load i64, ptr @_ZN8async_io6driver8block_on5CACHE7__getit5__KEY17h084c86aeafa17e1dE, align 8, !range !95, !noalias !96, !noundef !17 %trunc.i.i.i = trunc nuw i64 %71 to i1 br i1 %trunc.i.i.i, label %_ZN8async_io6driver8block_on5CACHE7__getit17h278e05a6d0505739E.exit.thread.i, label %72 @@ -464,6 +465,7 @@ _ZN8async_io6driver8block_on5CACHE7__getit17h278e05a6d0505739E.exit.i: ; preds = _ZN8async_io6driver8block_on5CACHE7__getit17h278e05a6d0505739E.exit.thread.i: ; preds = %_ZN8async_io6driver8block_on5CACHE7__getit17h278e05a6d0505739E.exit.i, %_ZN7tracing4span4Span8do_enter17hbc9c1a32e0d90029E.exit %.0.i.i6.i = phi ptr [ %73, %_ZN8async_io6driver8block_on5CACHE7__getit17h278e05a6d0505739E.exit.i ], [ getelementptr inbounds nuw (i8, ptr @_ZN8async_io6driver8block_on5CACHE7__getit5__KEY17h084c86aeafa17e1dE, i64 8), %_ZN7tracing4span4Span8do_enter17hbc9c1a32e0d90029E.exit ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i.i6.i, i64 8) ] call void @llvm.lifetime.start.p0(i64 192, ptr nonnull %43), !noalias !103 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(192) %43, ptr noundef nonnull align 8 dereferenceable(192) %44, i64 192, i1 false) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42), !noalias !104 @@ -632,6 +634,7 @@ default.unreachable: ; preds = %.backedge.i.i to label %131 unwind label %127, !noalias !107 131: ; preds = %129 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %132 = load i64, ptr @_ZN8fastrand10global_rng3RNG7__getit5__KEY17h9ffb0d3aa2679fc3E, align 8, !range !95, !noalias !110, !noundef !17 %trunc.i.i.i.i.i.i.i = trunc nuw i64 %132 to i1 br i1 %trunc.i.i.i.i.i.i.i, label %135, label %_ZN8fastrand10global_rng3RNG7__getit17h976a44bdba5e523cE.exit.i.i.i.i.i @@ -646,6 +649,7 @@ _ZN8fastrand10global_rng3RNG7__getit17h976a44bdba5e523cE.exit.i.i.i.i.i: ; preds 135: ; preds = %.noexc.i.i.i, %131 %.0.i.i2.i.i.i.i.i = phi ptr [ %133, %.noexc.i.i.i ], [ getelementptr inbounds nuw (i8, ptr @_ZN8fastrand10global_rng3RNG7__getit5__KEY17h9ffb0d3aa2679fc3E, i64 8), %131 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i.i2.i.i.i.i.i, i64 8) ] %136 = load i64, ptr %.0.i.i2.i.i.i.i.i, align 8, !noalias !107, !noundef !17 %137 = add i64 %136, -6884282663029611473 %138 = zext i64 %137 to i128 @@ -865,6 +869,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17h75ffbf7bbedb93daE.exit.th store ptr @anon.48b364105262d98143e18c033d61e33e.35, ptr %36, align 8, !noalias !104 %206 = getelementptr inbounds nuw i8, ptr %36, i64 8 store i64 1, ptr %206, align 8, !noalias !104 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %207 = getelementptr inbounds nuw i8, ptr %36, i64 32 store ptr null, ptr %207, align 8, !noalias !104 %208 = getelementptr inbounds nuw i8, ptr %36, i64 16 @@ -1061,6 +1066,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17h75ffbf7bbedb93daE.exit.th store i64 %.fca.0.extract31.i.i, ptr %28, align 8, !noalias !104 %.fca.1.extract32.i.i = extractvalue { i64, i32 } %260, 1 store i32 %.fca.1.extract32.i.i, ptr %.fca.1.gep.i.i, align 8, !noalias !104 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] br label %263 .loopexit.i.i: ; preds = %299, %296, %295, %293, %"_ZN84_$LT$tracing_core..field..Iter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hff2f44893287cde2E.exit369.i.i", %.critedge318.i.i, %_ZN12tracing_core8callsite15DefaultCallsite8interest17h75ffbf7bbedb93daE.exit363.thread.i.i, %273, %263 @@ -1156,6 +1162,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17h75ffbf7bbedb93daE.exit363 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %21), !noalias !104 store ptr @anon.48b364105262d98143e18c033d61e33e.40, ptr %21, align 8, !noalias !104 store i64 1, ptr %97, align 8, !noalias !104 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] store ptr null, ptr %98, align 8, !noalias !104 store ptr @anon.48b364105262d98143e18c033d61e33e.2, ptr %99, align 8, !noalias !104 store i64 0, ptr %100, align 8, !noalias !104 @@ -1274,7 +1281,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17h75ffbf7bbedb93daE.exit378 br i1 %317, label %330, label %.critedge322.i.i .critedge322.i.i: ; preds = %340, %318, %_ZN12tracing_core8callsite15DefaultCallsite8interest17h75ffbf7bbedb93daE.exit378.i.i, %311, %"_ZN62_$LT$core..time..Duration$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h0113a959e2ea9a8eE.exit.thread.i.i" - %.sroa.3532.0.copyload.i.i = load ptr, ptr %.sroa.3532.0..sroa_idx.i.i, align 8, !noalias !104, !nonnull !17, !noundef !17 + %.sroa.3532.0.copyload.i.i = load ptr, ptr %.sroa.3532.0..sroa_idx.i.i, align 8, !noalias !104, !nonnull !17, !align !18, !noundef !17 %.sroa.4533.0.copyload.i.i = load i8, ptr %.sroa.4533.0..sroa_idx.i.i, align 8, !noalias !104 %319 = getelementptr inbounds nuw i8, ptr %.sroa.3532.0.copyload.i.i, i64 4 %320 = trunc nuw i8 %.sroa.4533.0.copyload.i.i to i1 @@ -1333,6 +1340,7 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.14408593437386099104.exit call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15), !noalias !104 store ptr @anon.48b364105262d98143e18c033d61e33e.43, ptr %15, align 8, !noalias !104 store i64 1, ptr %102, align 8, !noalias !104 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] store ptr null, ptr %103, align 8, !noalias !104 store ptr @anon.48b364105262d98143e18c033d61e33e.2, ptr %104, align 8, !noalias !104 store i64 0, ptr %105, align 8, !noalias !104 @@ -1446,6 +1454,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17h75ffbf7bbedb93daE.exit396 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %18), !noalias !104 store ptr @anon.48b364105262d98143e18c033d61e33e.46, ptr %18, align 8, !noalias !104 store i64 1, ptr %106, align 8, !noalias !104 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] store ptr null, ptr %107, align 8, !noalias !104 store ptr @anon.48b364105262d98143e18c033d61e33e.2, ptr %108, align 8, !noalias !104 store i64 0, ptr %109, align 8, !noalias !104 @@ -1526,6 +1535,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17h75ffbf7bbedb93daE.exit405 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %24), !noalias !104 store ptr @anon.48b364105262d98143e18c033d61e33e.46, ptr %24, align 8, !noalias !104 store i64 1, ptr %110, align 8, !noalias !104 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] store ptr null, ptr %111, align 8, !noalias !104 store ptr @anon.48b364105262d98143e18c033d61e33e.2, ptr %112, align 8, !noalias !104 store i64 0, ptr %113, align 8, !noalias !104 @@ -1681,6 +1691,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17h75ffbf7bbedb93daE.exit421 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %12), !noalias !104 store ptr @anon.48b364105262d98143e18c033d61e33e.50, ptr %12, align 8, !noalias !104 store i64 1, ptr %93, align 8, !noalias !104 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] store ptr null, ptr %94, align 8, !noalias !104 store ptr @anon.48b364105262d98143e18c033d61e33e.2, ptr %95, align 8, !noalias !104 store i64 0, ptr %96, align 8, !noalias !104 @@ -1772,6 +1783,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17h75ffbf7bbedb93daE.exit437 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %33), !noalias !104 store ptr @anon.48b364105262d98143e18c033d61e33e.46, ptr %33, align 8, !noalias !104 store i64 1, ptr %114, align 8, !noalias !104 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] store ptr null, ptr %115, align 8, !noalias !104 store ptr @anon.48b364105262d98143e18c033d61e33e.2, ptr %116, align 8, !noalias !104 store i64 0, ptr %117, align 8, !noalias !104 @@ -1825,6 +1837,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17h75ffbf7bbedb93daE.exit437 469: ; preds = %464 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31), !noalias !104 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 8 dereferenceable(24) %32, i64 24, i1 false), !noalias !104 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] store i8 1, ptr @_ZN8async_io6driver8block_on10IO_POLLING7__getit3VAL17h7f4766a92789bb9eE, align 1, !noalias !104 %470 = invoke noundef ptr @_ZN8async_io7reactor11ReactorLock5react17hff79c4bca079fbf6E(ptr noalias noundef nonnull align 8 dereferenceable(24) %31, i64 0, i32 noundef 0) to label %471 unwind label %467, !noalias !104 diff --git a/bench/softposit-rs/optimized/8mae6k72v4zmmji.ll b/bench/softposit-rs/optimized/8mae6k72v4zmmji.ll index fcae1d9ba58..b7b5b767c9d 100644 --- a/bench/softposit-rs/optimized/8mae6k72v4zmmji.ll +++ b/bench/softposit-rs/optimized/8mae6k72v4zmmji.ll @@ -47,7 +47,7 @@ define hidden { ptr, i64 } @"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20 br i1 %8, label %15, label %10 9: ; preds = %5 - tail call void @_ZN4core5slice5index22slice_index_order_fail17h5e9dd78f70220ca8E(i64 noundef %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #13 + tail call void @_ZN4core5slice5index22slice_index_order_fail17h5e9dd78f70220ca8E(i64 noundef %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #14 unreachable 10: ; preds = %7 @@ -58,7 +58,7 @@ define hidden { ptr, i64 } @"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20 ret { ptr, i64 } %14 15: ; preds = %7 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9965f4285b8d5d41E(i64 noundef %1, i64 noundef %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #13 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9965f4285b8d5d41E(i64 noundef %1, i64 noundef %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #14 unreachable } @@ -75,11 +75,11 @@ define hidden { ptr, i64 } @"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$ ret { ptr, i64 } %10 11: ; preds = %4 - tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h559b8f6dc3428c29E(i64 noundef %0, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3) #13 + tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h559b8f6dc3428c29E(i64 noundef %0, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3) #14 unreachable } -; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable +; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable define hidden noundef align 4 dereferenceable_or_null(4) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he8e5a1430972fb36E.llvm.10961338582784087609"(ptr noalias nocapture noundef align 8 dereferenceable(16) %0) unnamed_addr #3 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load ptr, ptr %2, align 8, !nonnull !4, !noundef !4 @@ -94,6 +94,7 @@ define hidden noundef align 4 dereferenceable_or_null(4) ptr @"_ZN91_$LT$core..s 8: ; preds = %1, %6 %.0 = phi ptr [ %4, %6 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 4) ] ret ptr %.0 } @@ -409,6 +410,7 @@ _ZN9softposit5p32e27convert22convert_p32bits_to_u3217h036161cc6e46248cE.exit.i: br i1 %64, label %"_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..SubAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$2$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10sub_assign17h39b0f72ff6c85675E.llvm.10961338582784087609.exit", label %62 "_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..SubAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$2$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10sub_assign17h39b0f72ff6c85675E.llvm.10961338582784087609.exit": ; preds = %62 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) %65 = call noundef i32 @"_ZN9softposit7quire327convert43_$LT$impl$u20$softposit..quire32..Q32E2$GT$8to_posit17hb1dd72d059b8f6f8E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %7) %66 = call noundef i32 @"_ZN9softposit5p32e23ops41_$LT$impl$u20$softposit..p32e2..P32E2$GT$3mul17heda7a0367370492dE"(i32 noundef %65, i32 noundef %65), !noalias !10 @@ -720,6 +722,7 @@ _ZN9softposit5p32e27convert22convert_u32_to_p32bits17h615e043045e072d1E.exit.i: br i1 %89, label %"_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..AddAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$2$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10add_assign17h4f2d721ddc9d80fbE.llvm.10961338582784087609.exit", label %87 "_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..AddAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$2$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10add_assign17h4f2d721ddc9d80fbE.llvm.10961338582784087609.exit": ; preds = %87 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %5) call void @_ZN9softposit7quire323ops3fdp17hff26f46db2bab75eE(ptr noalias noundef nonnull align 8 dereferenceable(64) %6, i32 noundef %40, i32 noundef 1207959552, i1 noundef zeroext true) %90 = call noundef i32 @"_ZN9softposit5p32e23ops41_$LT$impl$u20$softposit..p32e2..P32E2$GT$3mul17heda7a0367370492dE"(i32 noundef %41, i32 noundef %40) @@ -1217,6 +1220,7 @@ _ZN9softposit5p32e27convert22convert_p32bits_to_u3217h036161cc6e46248cE.exit.i.i br i1 %192, label %"_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..SubAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$2$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10sub_assign17h39b0f72ff6c85675E.llvm.10961338582784087609.exit.i", label %190 "_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..SubAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$2$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10sub_assign17h39b0f72ff6c85675E.llvm.10961338582784087609.exit.i": ; preds = %190 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) %193 = call noundef i32 @"_ZN9softposit7quire327convert43_$LT$impl$u20$softposit..quire32..Q32E2$GT$8to_posit17hb1dd72d059b8f6f8E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %8) %194 = call noundef i32 @"_ZN9softposit5p32e23ops41_$LT$impl$u20$softposit..p32e2..P32E2$GT$3mul17heda7a0367370492dE"(i32 noundef %193, i32 noundef %193), !noalias !49 @@ -1697,6 +1701,7 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 br i1 %70, label %"_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..SubAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$3$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10sub_assign17h5d80efe7337d000fE.exit", label %68 "_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..SubAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$3$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10sub_assign17h5d80efe7337d000fE.exit": ; preds = %68 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %6, ptr noundef nonnull align 8 dereferenceable(64) %8, i64 64, i1 false) @@ -1733,7 +1738,7 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 br label %12 79: ; preds = %10 - tail call void @_ZN4core9panicking5panic17h8ddd58dc57c2dc00E(ptr noalias noundef nonnull readonly align 1 @anon.ac126eff600bc81a71c3caf3aa4ad48d.4, i64 noundef 19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.6) #13 + tail call void @_ZN4core9panicking5panic17h8ddd58dc57c2dc00E(ptr noalias noundef nonnull readonly align 1 @anon.ac126eff600bc81a71c3caf3aa4ad48d.4, i64 noundef 19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.6) #14 unreachable } @@ -1977,6 +1982,7 @@ _ZN9softposit5p32e27convert22convert_u32_to_p32bits17h615e043045e072d1E.exit.i: br i1 %123, label %"_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..SubAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$3$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10sub_assign17h5d80efe7337d000fE.exit", label %121 "_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..SubAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$3$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10sub_assign17h5d80efe7337d000fE.exit": ; preds = %121 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %6, ptr noundef nonnull align 8 dereferenceable(64) %8, i64 64, i1 false) @@ -2015,7 +2021,7 @@ _ZN9softposit5p32e27convert22convert_u32_to_p32bits17h615e043045e072d1E.exit.i: br label %12 134: ; preds = %10 - tail call void @_ZN4core9panicking5panic17h8ddd58dc57c2dc00E(ptr noalias noundef nonnull readonly align 1 @anon.ac126eff600bc81a71c3caf3aa4ad48d.4, i64 noundef 19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.7) #13 + tail call void @_ZN4core9panicking5panic17h8ddd58dc57c2dc00E(ptr noalias noundef nonnull readonly align 1 @anon.ac126eff600bc81a71c3caf3aa4ad48d.4, i64 noundef 19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.7) #14 unreachable } @@ -2045,7 +2051,7 @@ define { i32, i32 } @_ZN9softposit5p32e24math5sleef7sin_cos17h26098b81853a2de8E( ret { i32, i32 } %15 16: ; preds = %11 - tail call void @_ZN4core9panicking5panic17h8ddd58dc57c2dc00E(ptr noalias noundef nonnull readonly align 1 @anon.ac126eff600bc81a71c3caf3aa4ad48d.4, i64 noundef 19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.8) #13 + tail call void @_ZN4core9panicking5panic17h8ddd58dc57c2dc00E(ptr noalias noundef nonnull readonly align 1 @anon.ac126eff600bc81a71c3caf3aa4ad48d.4, i64 noundef 19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.8) #14 unreachable 17: ; preds = %11 @@ -2175,6 +2181,7 @@ _ZN9softposit5p32e27convert22convert_p32bits_to_u3217h036161cc6e46248cE.exit.i: br i1 %77, label %"_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..SubAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$3$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10sub_assign17h5d80efe7337d000fE.exit", label %75 "_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..SubAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$3$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10sub_assign17h5d80efe7337d000fE.exit": ; preds = %75 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %7, ptr noundef nonnull align 8 dereferenceable(64) %9, i64 64, i1 false) @@ -2378,6 +2385,7 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 br i1 %70, label %"_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..SubAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$3$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10sub_assign17h5d80efe7337d000fE.exit", label %68 "_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..SubAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$3$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10sub_assign17h5d80efe7337d000fE.exit": ; preds = %68 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %3) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %3, ptr noundef nonnull align 8 dereferenceable(64) %5, i64 64, i1 false) @@ -2388,7 +2396,7 @@ _ZN9softposit5p32e25P32E215calculate_scale17h23828a4b6407a1edE.llvm.164196413843 br i1 %.0.i, label %74, label %87 73: ; preds = %7 - tail call void @_ZN4core9panicking5panic17h8ddd58dc57c2dc00E(ptr noalias noundef nonnull readonly align 1 @anon.ac126eff600bc81a71c3caf3aa4ad48d.4, i64 noundef 19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.9) #13 + tail call void @_ZN4core9panicking5panic17h8ddd58dc57c2dc00E(ptr noalias noundef nonnull readonly align 1 @anon.ac126eff600bc81a71c3caf3aa4ad48d.4, i64 noundef 19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.9) #14 unreachable 74: ; preds = %"_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..SubAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$3$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10sub_assign17h5d80efe7337d000fE.exit" @@ -3140,6 +3148,7 @@ define noundef i32 @_ZN9softposit5p32e24math5sleef5exp1017h0aa6f3c223873f50E(i32 br i1 %10, label %"_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..SubAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$2$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10sub_assign17h39b0f72ff6c85675E.llvm.10961338582784087609.exit", label %8 "_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..SubAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$2$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10sub_assign17h39b0f72ff6c85675E.llvm.10961338582784087609.exit": ; preds = %8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %3) %11 = call noundef i32 @"_ZN9softposit7quire327convert43_$LT$impl$u20$softposit..quire32..Q32E2$GT$8to_posit17hb1dd72d059b8f6f8E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %4) call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %2) @@ -3398,6 +3407,7 @@ _ZN9softposit5p32e27convert22convert_p32bits_to_u3217h036161cc6e46248cE.exit.i: br i1 %64, label %"_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..SubAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$2$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10sub_assign17h39b0f72ff6c85675E.llvm.10961338582784087609.exit", label %62 "_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith..SubAssign$LT$$LP$softposit..p32e2..P32E2$C$$u5b$softposit..p32e2..P32E2$u3b$$u20$2$u5d$$RP$$GT$$u20$for$u20$softposit..quire32..Q32E2$GT$10sub_assign17h39b0f72ff6c85675E.llvm.10961338582784087609.exit": ; preds = %62 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) %65 = call noundef i32 @"_ZN9softposit7quire327convert43_$LT$impl$u20$softposit..quire32..Q32E2$GT$8to_posit17hb1dd72d059b8f6f8E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %7) %66 = call noundef i32 @"_ZN9softposit5p32e23ops41_$LT$impl$u20$softposit..p32e2..P32E2$GT$3mul17heda7a0367370492dE"(i32 noundef %65, i32 noundef %65), !noalias !202 @@ -3650,7 +3660,7 @@ define hidden noundef i32 @_ZN9softposit7polynom4poly4Poly7poly2kt17hc6182c55e07 ret i32 %13 14: ; preds = %5 - tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef 1, i64 noundef %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.14) #13 + tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef 1, i64 noundef %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.14) #14 unreachable } @@ -3681,7 +3691,7 @@ define hidden noundef i32 @_ZN9softposit7polynom4poly4Poly7poly3kt17hf5d6e687720 ret i32 %16 17: ; preds = %6 - tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef 2, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.16) #13 + tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef 2, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.16) #14 unreachable } @@ -3712,7 +3722,7 @@ define hidden noundef i32 @_ZN9softposit7polynom4poly4Poly6poly3k17h9e067b2a1965 ret i32 %16 17: ; preds = %6 - tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef 2, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.19) #13 + tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef 2, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.19) #14 unreachable } @@ -3746,7 +3756,7 @@ define hidden noundef i32 @_ZN9softposit7polynom4poly4Poly6poly4k17h8ac4f25f467f ret i32 %19 20: ; preds = %7 - tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef 3, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.22) #13 + tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef 3, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.22) #14 unreachable } @@ -3780,7 +3790,7 @@ define hidden noundef i32 @_ZN9softposit7polynom4poly4Poly7poly4kt17h74ebe4cced2 ret i32 %19 20: ; preds = %7 - tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef 3, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.26) #13 + tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef 3, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.26) #14 unreachable } @@ -3794,7 +3804,7 @@ define hidden noundef i32 @_ZN9softposit7polynom4poly4Poly6poly5k17h46a5a2d118b8 br i1 %11, label %12, label %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hdf1e7444d11dea39E.llvm.10961338582784087609.exit" 12: ; preds = %6 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9965f4285b8d5d41E(i64 noundef 2, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.30.llvm.10961338582784087609) #13, !noalias !235 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9965f4285b8d5d41E(i64 noundef 2, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.30.llvm.10961338582784087609) #14, !noalias !235 unreachable "_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hdf1e7444d11dea39E.llvm.10961338582784087609.exit": ; preds = %6 @@ -3820,7 +3830,7 @@ define hidden noundef i32 @_ZN9softposit7polynom4poly4Poly6poly5k17h46a5a2d118b8 br i1 %18, label %_ZN9softposit7polynom4poly4Poly6poly3k17h9e067b2a19653192E.llvm.10961338582784087609.exit, label %19, !prof !222 19: ; preds = %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hdf1e7444d11dea39E.llvm.10961338582784087609.exit" - call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef 2, i64 noundef %17, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.19) #13, !noalias !244 + call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef 2, i64 noundef %17, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.19) #14, !noalias !244 unreachable _ZN9softposit7polynom4poly4Poly6poly3k17h9e067b2a19653192E.llvm.10961338582784087609.exit: ; preds = %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hdf1e7444d11dea39E.llvm.10961338582784087609.exit" @@ -3852,7 +3862,7 @@ define hidden noundef i32 @_ZN9softposit7polynom4poly4Poly6poly7k17h37a5fe4b7ac3 br i1 %12, label %13, label %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hdf1e7444d11dea39E.llvm.10961338582784087609.exit" 13: ; preds = %7 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9965f4285b8d5d41E(i64 noundef 3, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.34.llvm.10961338582784087609) #13, !noalias !250 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9965f4285b8d5d41E(i64 noundef 3, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.34.llvm.10961338582784087609) #14, !noalias !250 unreachable "_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hdf1e7444d11dea39E.llvm.10961338582784087609.exit": ; preds = %7 @@ -3881,7 +3891,7 @@ define hidden noundef i32 @_ZN9softposit7polynom4poly4Poly6poly7k17h37a5fe4b7ac3 br i1 %21, label %_ZN9softposit7polynom4poly4Poly6poly4k17h8ac4f25f467f9e17E.llvm.10961338582784087609.exit, label %22, !prof !222 22: ; preds = %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hdf1e7444d11dea39E.llvm.10961338582784087609.exit" - call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef 3, i64 noundef %20, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.22) #13, !noalias !259 + call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef 3, i64 noundef %20, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.22) #14, !noalias !259 unreachable _ZN9softposit7polynom4poly4Poly6poly4k17h8ac4f25f467f9e17E.llvm.10961338582784087609.exit: ; preds = %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hdf1e7444d11dea39E.llvm.10961338582784087609.exit" @@ -3916,7 +3926,7 @@ define hidden noundef i32 @_ZN9softposit7polynom4poly4Poly6poly8k17hefd6015b8a1a br i1 %12, label %13, label %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hdf1e7444d11dea39E.llvm.10961338582784087609.exit" 13: ; preds = %7 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9965f4285b8d5d41E(i64 noundef 4, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.36.llvm.10961338582784087609) #13, !noalias !265 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9965f4285b8d5d41E(i64 noundef 4, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.36.llvm.10961338582784087609) #14, !noalias !265 unreachable "_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hdf1e7444d11dea39E.llvm.10961338582784087609.exit": ; preds = %7 @@ -3948,7 +3958,7 @@ define hidden noundef i32 @_ZN9softposit7polynom4poly4Poly6poly8k17hefd6015b8a1a br i1 %23, label %_ZN9softposit7polynom4poly4Poly6poly4k17h8ac4f25f467f9e17E.llvm.10961338582784087609.exit, label %24, !prof !222 24: ; preds = %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hdf1e7444d11dea39E.llvm.10961338582784087609.exit" - call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef 3, i64 noundef %22, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.22) #13, !noalias !274 + call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef 3, i64 noundef %22, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ac126eff600bc81a71c3caf3aa4ad48d.22) #14, !noalias !274 unreachable _ZN9softposit7polynom4poly4Poly6poly4k17h8ac4f25f467f9e17E.llvm.10961338582784087609.exit: ; preds = %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hdf1e7444d11dea39E.llvm.10961338582784087609.exit" @@ -4096,6 +4106,7 @@ define hidden void @"_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith. br label %5 4: ; preds = %5 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] ret void 5: ; preds = %2, %5 @@ -4114,6 +4125,7 @@ define hidden void @"_ZN9softposit7quire323ops169_$LT$impl$u20$core..ops..arith. br label %5 4: ; preds = %5 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] ret void 5: ; preds = %2, %5 @@ -4180,35 +4192,39 @@ declare noundef i32 @"_ZN9softposit5p32e23ops41_$LT$impl$u20$softposit..p32e2..P ; Function Attrs: nonlazybind uwtable declare hidden noundef i32 @_ZN9softposit5p32e24math5sleef6kernel5pow2i17hee776e34a5c33325E.llvm.580202203830469859(i32 noundef) unnamed_addr #6 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #10 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #10 +declare void @llvm.experimental.noalias.scope.decl(metadata) #11 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.abs.i32(i32, i1 immarg) #11 +declare i32 @llvm.abs.i32(i32, i1 immarg) #12 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #12 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #13 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #11 +declare i32 @llvm.smax.i32(i32, i32) #12 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smin.i32(i32, i32) #11 +declare i32 @llvm.smin.i32(i32, i32) #12 attributes #0 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { alwaysinline nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #3 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #3 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { inlinehint nofree norecurse nosync nounwind nonlazybind memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #5 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #7 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #8 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #9 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #10 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #11 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #12 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #13 = { noreturn } +attributes #10 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #11 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #12 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #13 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #14 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/stat-rs/optimized/20o1n4zmlkej35p7.ll b/bench/stat-rs/optimized/20o1n4zmlkej35p7.ll index bbc4bf15f69..daeb7651528 100644 --- a/bench/stat-rs/optimized/20o1n4zmlkej35p7.ll +++ b/bench/stat-rs/optimized/20o1n4zmlkej35p7.ll @@ -138,15 +138,17 @@ define hidden { ptr, ptr } @"_ZN108_$LT$alloc..collections..btree..map..Iter$LT$ resume { ptr, i32 } %40 _ZN5alloc11collections5btree3mem7replace17h0143aa89c05cdaefE.llvm.7371537965014501254.exit: ; preds = %.noexc2.i + %43 = extractvalue { ptr, ptr } %38, 0 + %44 = extractvalue { ptr, ptr } %38, 1 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !14 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !14 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false), !noalias !14 + call void @llvm.assume(i1 true) [ "align"(ptr %43, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %44, i64 8) ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7), !noalias !14 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %spec.select.i5, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %2) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) - %43 = extractvalue { ptr, ptr } %38, 0 - %44 = extractvalue { ptr, ptr } %38, 1 br label %29 } @@ -206,6 +208,7 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. "_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17hdd4e2467b3244114E.exit.i": ; preds = %.noexc, %15 %21 = phi ptr [ %16, %15 ], [ %.pre, %.noexc ] %22 = phi i64 [ 0, %15 ], [ %.pre.i.i, %.noexc ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.59.0.copyload, i64 8) ] %23 = icmp ne ptr %.sroa.59.0.copyload, null call void @llvm.assume(i1 %23) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3), !noalias !32 @@ -295,6 +298,7 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. "_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17h59f1b4377ac552e8E.exit.i": ; preds = %.noexc, %15 %21 = phi ptr [ %16, %15 ], [ %.pre, %.noexc ] %22 = phi i64 [ 0, %15 ], [ %.pre.i.i, %.noexc ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.59.0.copyload, i64 8) ] %23 = icmp ne ptr %.sroa.59.0.copyload, null call void @llvm.assume(i1 %23) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3), !noalias !50 @@ -380,8 +384,10 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. "_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h27c2cd405bb4c1acE.exit.i.i": ; preds = %.noexc, %11 %17 = phi ptr [ %12, %11 ], [ %.pre, %.noexc ] %18 = phi i64 [ 0, %11 ], [ %.pre.i.i, %.noexc ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.07.0.copyload, i64 8) ] %19 = icmp ne ptr %.sroa.07.0.copyload, null call void @llvm.assume(i1 %19) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.4.0.copyload, i64 8) ] %20 = icmp ne ptr %.sroa.4.0.copyload, null call void @llvm.assume(i1 %20) %21 = icmp ult i64 %.val, %.val6 @@ -649,6 +655,7 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. "_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17haf2a3d154b234b73E.exit.i": ; preds = %.noexc, %15 %21 = phi ptr [ %16, %15 ], [ %.pre, %.noexc ] %22 = phi i64 [ 0, %15 ], [ %.pre.i.i, %.noexc ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.59.0.copyload, i64 8) ] %23 = icmp ne ptr %.sroa.59.0.copyload, null call void @llvm.assume(i1 %23) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3), !noalias !149 @@ -824,15 +831,17 @@ define hidden { ptr, ptr } @"_ZN123_$LT$alloc..collections..btree..map..Iter$LT$ resume { ptr, i32 } %49 _ZN5alloc11collections5btree3mem7replace17h1bb4c45f803c59fbE.llvm.7371537965014501254.exit: ; preds = %.noexc2.i + %52 = extractvalue { ptr, ptr } %47, 0 + %53 = extractvalue { ptr, ptr } %47, 1 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !166 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !166 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false), !noalias !166 + call void @llvm.assume(i1 true) [ "align"(ptr %52, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %53, i64 8) ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7), !noalias !166 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %spec.select.i5, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %2) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) - %52 = extractvalue { ptr, ptr } %47, 0 - %53 = extractvalue { ptr, ptr } %47, 1 br label %38 } @@ -1588,18 +1597,22 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h0143aa89c %15 = landingpad { ptr, i32 } cleanup invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf998d56754bc4ea7E"(ptr noalias noundef nonnull align 1 %2) - to label %"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17ha13aa77feb74e769E.exit" unwind label %17 + to label %"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17ha13aa77feb74e769E.exit" unwind label %19 16: ; preds = %.noexc2 + %17 = extractvalue { ptr, ptr } %13, 0 + %18 = extractvalue { ptr, ptr } %13, 1 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false) + call void @llvm.assume(i1 true) [ "align"(ptr %17, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %18, i64 8) ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) ret { ptr, ptr } %13 -17: ; preds = %14 - %18 = landingpad { ptr, i32 } +19: ; preds = %14 + %20 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #21 unreachable @@ -1658,18 +1671,22 @@ define hidden { ptr, ptr } @_ZN5alloc11collections5btree3mem7replace17h1bb4c45f8 %15 = landingpad { ptr, i32 } cleanup invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf998d56754bc4ea7E"(ptr noalias noundef nonnull align 1 %2) - to label %"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17ha13aa77feb74e769E.exit" unwind label %17 + to label %"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17ha13aa77feb74e769E.exit" unwind label %19 16: ; preds = %.noexc2 + %17 = extractvalue { ptr, ptr } %13, 0 + %18 = extractvalue { ptr, ptr } %13, 1 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false) + call void @llvm.assume(i1 true) [ "align"(ptr %17, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %18, i64 8) ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) ret { ptr, ptr } %13 -17: ; preds = %14 - %18 = landingpad { ptr, i32 } +19: ; preds = %14 + %20 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #21 unreachable diff --git a/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll b/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll index dff37be1d97..a891e8e2812 100644 --- a/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll +++ b/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll @@ -158,15 +158,19 @@ define hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZN5alloc11collec ret ptr %6 } -; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable -define hidden { ptr, ptr } @"_ZN5alloc11collections5btree4node171Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$NodeType$GT$$C$alloc..collections..btree..node..marker..KV$GT$6kv_mut17hb950c065e4a6766dE"(ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %0) unnamed_addr #4 { +; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable +define hidden { ptr, ptr } @"_ZN5alloc11collections5btree4node171Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$NodeType$GT$$C$alloc..collections..btree..node..marker..KV$GT$6kv_mut17hb950c065e4a6766dE"(ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %0) unnamed_addr #5 { %2 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 %3 = getelementptr inbounds nuw i8, ptr %2, i64 8 %4 = getelementptr inbounds nuw i8, ptr %0, i64 16 %5 = load i64, ptr %4, align 8, !noundef !4 %6 = getelementptr inbounds double, ptr %3, i64 %5 %7 = getelementptr inbounds nuw i8, ptr %2, i64 96 + call void @llvm.assume(i1 true) [ "align"(ptr %7, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %7, i64 8) ] %8 = getelementptr inbounds i64, ptr %7, i64 %5 + call void @llvm.assume(i1 true) [ "align"(ptr %6, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %9 = insertvalue { ptr, ptr } poison, ptr %6, 0 %10 = insertvalue { ptr, ptr } %9, ptr %8, 1 ret { ptr, ptr } %10 @@ -182,7 +186,11 @@ define hidden { ptr, ptr } @"_ZN5alloc11collections5btree4node173Handle$LT$alloc tail call void @llvm.assume(i1 %6) %7 = getelementptr inbounds nuw double, ptr %3, i64 %5 %8 = getelementptr inbounds nuw i8, ptr %2, i64 96 + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %9 = getelementptr inbounds nuw i64, ptr %8, i64 %5 + call void @llvm.assume(i1 true) [ "align"(ptr %7, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 8) ] %10 = insertvalue { ptr, ptr } poison, ptr %7, 0 %11 = insertvalue { ptr, ptr } %10, ptr %9, 1 ret { ptr, ptr } %11 @@ -198,7 +206,11 @@ define hidden { ptr, ptr } @"_ZN5alloc11collections5btree4node173Handle$LT$alloc tail call void @llvm.assume(i1 %6) %7 = getelementptr inbounds nuw double, ptr %3, i64 %5 %8 = getelementptr inbounds nuw i8, ptr %2, i64 96 + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] %9 = getelementptr inbounds nuw i64, ptr %8, i64 %5 + call void @llvm.assume(i1 true) [ "align"(ptr %7, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 8) ] %10 = insertvalue { ptr, ptr } poison, ptr %7, 0 %11 = insertvalue { ptr, ptr } %10, ptr %9, 1 ret { ptr, ptr } %11 @@ -1098,7 +1110,11 @@ _ZN5alloc11collections5btree4node13move_to_slice17h667d6feae92a23c6E.exit: ; pre %42 = getelementptr inbounds nuw i8, ptr %.val61, i64 8 %43 = getelementptr inbounds double, ptr %42, i64 %.val62 %44 = getelementptr inbounds nuw i8, ptr %.val61, i64 96 + call void @llvm.assume(i1 true) [ "align"(ptr %44, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %44, i64 8) ] %45 = getelementptr inbounds i64, ptr %44, i64 %.val62 + call void @llvm.assume(i1 true) [ "align"(ptr %43, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %45, i64 8) ] %46 = load double, ptr %43, align 8, !noundef !4 store double %38, ptr %43, align 8 %47 = load i64, ptr %45, align 8, !noundef !4 @@ -1200,7 +1216,11 @@ _ZN5alloc11collections5btree4node13move_to_slice17h667d6feae92a23c6E.exit: ; pre %28 = getelementptr inbounds nuw i8, ptr %.val66, i64 8 %29 = getelementptr inbounds double, ptr %28, i64 %.val67 %30 = getelementptr inbounds nuw i8, ptr %.val66, i64 96 + call void @llvm.assume(i1 true) [ "align"(ptr %30, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %30, i64 8) ] %31 = getelementptr inbounds i64, ptr %30, i64 %.val67 + call void @llvm.assume(i1 true) [ "align"(ptr %29, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %31, i64 8) ] %32 = load double, ptr %29, align 8, !noundef !4 store double %23, ptr %29, align 8 %33 = load i64, ptr %31, align 8, !noundef !4 @@ -2047,7 +2067,11 @@ define hidden void @"_ZN5alloc11collections5btree6remove269_$LT$impl$u20$alloc.. %51 = getelementptr inbounds nuw i8, ptr %.sroa.08.0.i, i64 8 %52 = getelementptr inbounds double, ptr %51, i64 %.sroa.610.sroa.4.0.i %53 = getelementptr inbounds nuw i8, ptr %.sroa.08.0.i, i64 96 + call void @llvm.assume(i1 true) [ "align"(ptr %53, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %53, i64 8) ] %54 = getelementptr inbounds i64, ptr %53, i64 %.sroa.610.sroa.4.0.i + call void @llvm.assume(i1 true) [ "align"(ptr %52, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %54, i64 8) ] %55 = load double, ptr %52, align 8, !noalias !357, !noundef !4 store double %34, ptr %52, align 8, !noalias !357 %56 = load i64, ptr %54, align 8, !noalias !357, !noundef !4 @@ -2117,6 +2141,7 @@ default.unreachable.i.i: ; preds = %"_ZN83_$LT$statrs.. unreachable 13: ; preds = %11 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.03.0.i.i, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !381) %14 = load double, ptr %.sroa.03.0.i.i, align 8, !alias.scope !384, !noalias !387, !noundef !4 %15 = fcmp uno double %.val, %14 diff --git a/bench/stat-rs/optimized/4iyrhmyzjfh29528.ll b/bench/stat-rs/optimized/4iyrhmyzjfh29528.ll index 60ce97feaac..09b57c82aa1 100644 --- a/bench/stat-rs/optimized/4iyrhmyzjfh29528.ll +++ b/bench/stat-rs/optimized/4iyrhmyzjfh29528.ll @@ -202,12 +202,15 @@ define hidden void @"_ZN4core3ptr125drop_in_place$LT$alloc..collections..btree.. br i1 %9, label %"_ZN99_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h80ce3b087b75c83fE.llvm.12303340874314762014.exit", label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %"_ZN119_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17hc3ac4afb46851399E.llvm.12303340874314762014.exit.i", %.lr.ph.i.i.i + %10 = phi ptr [ %12, %.lr.ph.i.i.i ], [ %8, %"_ZN119_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17hc3ac4afb46851399E.llvm.12303340874314762014.exit.i" ] + %11 = getelementptr inbounds nuw i8, ptr %10, i64 96 + call void @llvm.assume(i1 true) [ "align"(ptr %11, i64 8) ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2), !noalias !106 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2), !noalias !106 call void @"_ZN5alloc11collections5btree3map25IntoIter$LT$K$C$V$C$A$GT$10dying_next17h225335cae01a714aE"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %2, ptr noalias noundef nonnull align 8 dereferenceable(72) %3), !noalias !98 - %10 = load ptr, ptr %2, align 8, !noalias !106, !noundef !4 - %11 = icmp eq ptr %10, null - br i1 %11, label %"_ZN99_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h80ce3b087b75c83fE.llvm.12303340874314762014.exit", label %.lr.ph.i.i.i + %12 = load ptr, ptr %2, align 8, !noalias !106, !noundef !4 + %13 = icmp eq ptr %12, null + br i1 %13, label %"_ZN99_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h80ce3b087b75c83fE.llvm.12303340874314762014.exit", label %.lr.ph.i.i.i "_ZN99_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h80ce3b087b75c83fE.llvm.12303340874314762014.exit": ; preds = %.lr.ph.i.i.i, %"_ZN119_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17hc3ac4afb46851399E.llvm.12303340874314762014.exit.i" call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2), !noalias !106 @@ -225,12 +228,15 @@ define hidden void @"_ZN4core3ptr125drop_in_place$LT$alloc..collections..btree.. br i1 %4, label %"_ZN99_$LT$alloc..collections..btree..map..IntoIter$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf4f663bf4e40436dE.llvm.12303340874314762014.exit", label %.lr.ph.i .lr.ph.i: ; preds = %1, %.lr.ph.i + %5 = phi ptr [ %7, %.lr.ph.i ], [ %3, %1 ] + %6 = getelementptr inbounds nuw i8, ptr %5, i64 96 + call void @llvm.assume(i1 true) [ "align"(ptr %6, i64 8) ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2), !noalias !111 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2), !noalias !111 call void @"_ZN5alloc11collections5btree3map25IntoIter$LT$K$C$V$C$A$GT$10dying_next17h225335cae01a714aE"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %2, ptr noalias noundef nonnull align 8 dereferenceable(72) %0) - %5 = load ptr, ptr %2, align 8, !noalias !111, !noundef !4 - %6 = icmp eq ptr %5, null - br i1 %6, label %"_ZN99_$LT$alloc..collections..btree..map..IntoIter$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf4f663bf4e40436dE.llvm.12303340874314762014.exit", label %.lr.ph.i + %7 = load ptr, ptr %2, align 8, !noalias !111, !noundef !4 + %8 = icmp eq ptr %7, null + br i1 %8, label %"_ZN99_$LT$alloc..collections..btree..map..IntoIter$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf4f663bf4e40436dE.llvm.12303340874314762014.exit", label %.lr.ph.i "_ZN99_$LT$alloc..collections..btree..map..IntoIter$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf4f663bf4e40436dE.llvm.12303340874314762014.exit": ; preds = %.lr.ph.i, %1 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2), !noalias !111 @@ -703,12 +709,15 @@ define hidden void @"_ZN4core3ptr63drop_in_place$LT$statrs..distribution..empiri br i1 %10, label %"_ZN4core3ptr125drop_in_place$LT$alloc..collections..btree..map..BTreeMap$LT$statrs..distribution..empirical..NonNan$LT$f64$GT$$C$u64$GT$$GT$17h4467c5f12f8ae93cE.llvm.12303340874314762014.exit", label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %"_ZN119_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17hc3ac4afb46851399E.llvm.12303340874314762014.exit.i.i", %.lr.ph.i.i.i.i + %11 = phi ptr [ %13, %.lr.ph.i.i.i.i ], [ %9, %"_ZN119_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17hc3ac4afb46851399E.llvm.12303340874314762014.exit.i.i" ] + %12 = getelementptr inbounds nuw i8, ptr %11, i64 96 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2), !noalias !433 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2), !noalias !433 call void @"_ZN5alloc11collections5btree3map25IntoIter$LT$K$C$V$C$A$GT$10dying_next17h225335cae01a714aE"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %2, ptr noalias noundef nonnull align 8 dereferenceable(72) %3), !noalias !427 - %11 = load ptr, ptr %2, align 8, !noalias !433, !noundef !4 - %12 = icmp eq ptr %11, null - br i1 %12, label %"_ZN4core3ptr125drop_in_place$LT$alloc..collections..btree..map..BTreeMap$LT$statrs..distribution..empirical..NonNan$LT$f64$GT$$C$u64$GT$$GT$17h4467c5f12f8ae93cE.llvm.12303340874314762014.exit", label %.lr.ph.i.i.i.i + %13 = load ptr, ptr %2, align 8, !noalias !433, !noundef !4 + %14 = icmp eq ptr %13, null + br i1 %14, label %"_ZN4core3ptr125drop_in_place$LT$alloc..collections..btree..map..BTreeMap$LT$statrs..distribution..empirical..NonNan$LT$f64$GT$$C$u64$GT$$GT$17h4467c5f12f8ae93cE.llvm.12303340874314762014.exit", label %.lr.ph.i.i.i.i "_ZN4core3ptr125drop_in_place$LT$alloc..collections..btree..map..BTreeMap$LT$statrs..distribution..empirical..NonNan$LT$f64$GT$$C$u64$GT$$GT$17h4467c5f12f8ae93cE.llvm.12303340874314762014.exit": ; preds = %.lr.ph.i.i.i.i, %"_ZN119_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17hc3ac4afb46851399E.llvm.12303340874314762014.exit.i.i" call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2), !noalias !433 @@ -1772,6 +1781,7 @@ define hidden { ptr, ptr } @"_ZN91_$LT$std..panicking..begin_panic..Payload$LT$A %2 = load ptr, ptr %0, align 8, !align !611, !noundef !4 %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load i64, ptr %3, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] store ptr null, ptr %0, align 8 %5 = icmp eq ptr %2, null br i1 %5, label %6, label %7 @@ -1842,12 +1852,15 @@ define hidden void @"_ZN99_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V br i1 %9, label %"_ZN4core3ptr125drop_in_place$LT$alloc..collections..btree..map..IntoIter$LT$statrs..distribution..empirical..NonNan$LT$f64$GT$$C$u64$GT$$GT$17ha0b136d671243fd2E.llvm.12303340874314762014.exit", label %.lr.ph.i.i .lr.ph.i.i: ; preds = %"_ZN119_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17hc3ac4afb46851399E.llvm.12303340874314762014.exit", %.lr.ph.i.i + %10 = phi ptr [ %12, %.lr.ph.i.i ], [ %8, %"_ZN119_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17hc3ac4afb46851399E.llvm.12303340874314762014.exit" ] + %11 = getelementptr inbounds nuw i8, ptr %10, i64 96 + call void @llvm.assume(i1 true) [ "align"(ptr %11, i64 8) ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2), !noalias !620 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2), !noalias !620 call void @"_ZN5alloc11collections5btree3map25IntoIter$LT$K$C$V$C$A$GT$10dying_next17h225335cae01a714aE"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %2, ptr noalias noundef nonnull align 8 dereferenceable(72) %3) - %10 = load ptr, ptr %2, align 8, !noalias !620, !noundef !4 - %11 = icmp eq ptr %10, null - br i1 %11, label %"_ZN4core3ptr125drop_in_place$LT$alloc..collections..btree..map..IntoIter$LT$statrs..distribution..empirical..NonNan$LT$f64$GT$$C$u64$GT$$GT$17ha0b136d671243fd2E.llvm.12303340874314762014.exit", label %.lr.ph.i.i + %12 = load ptr, ptr %2, align 8, !noalias !620, !noundef !4 + %13 = icmp eq ptr %12, null + br i1 %13, label %"_ZN4core3ptr125drop_in_place$LT$alloc..collections..btree..map..IntoIter$LT$statrs..distribution..empirical..NonNan$LT$f64$GT$$C$u64$GT$$GT$17ha0b136d671243fd2E.llvm.12303340874314762014.exit", label %.lr.ph.i.i "_ZN4core3ptr125drop_in_place$LT$alloc..collections..btree..map..IntoIter$LT$statrs..distribution..empirical..NonNan$LT$f64$GT$$C$u64$GT$$GT$17ha0b136d671243fd2E.llvm.12303340874314762014.exit": ; preds = %.lr.ph.i.i, %"_ZN119_$LT$alloc..collections..btree..map..BTreeMap$LT$K$C$V$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17hc3ac4afb46851399E.llvm.12303340874314762014.exit" call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2), !noalias !620 @@ -1869,12 +1882,15 @@ define hidden void @"_ZN99_$LT$alloc..collections..btree..map..IntoIter$LT$K$C$V ret void .lr.ph: ; preds = %1, %.lr.ph + %5 = phi ptr [ %7, %.lr.ph ], [ %3, %1 ] + %6 = getelementptr inbounds nuw i8, ptr %5, i64 96 + call void @llvm.assume(i1 true) [ "align"(ptr %6, i64 8) ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) call void @"_ZN5alloc11collections5btree3map25IntoIter$LT$K$C$V$C$A$GT$10dying_next17h225335cae01a714aE"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %2, ptr noalias noundef nonnull align 8 dereferenceable(72) %0) - %5 = load ptr, ptr %2, align 8, !noundef !4 - %6 = icmp eq ptr %5, null - br i1 %6, label %._crit_edge, label %.lr.ph + %7 = load ptr, ptr %2, align 8, !noundef !4 + %8 = icmp eq ptr %7, null + br i1 %8, label %._crit_edge, label %.lr.ph } ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(argmem: write) uwtable diff --git a/bench/stat-rs/optimized/u5boppws0o3vklz.ll b/bench/stat-rs/optimized/u5boppws0o3vklz.ll index 8a20a84c5b6..03133cd88a7 100644 --- a/bench/stat-rs/optimized/u5boppws0o3vklz.ll +++ b/bench/stat-rs/optimized/u5boppws0o3vklz.ll @@ -93,8 +93,11 @@ _ZN4core3ops8function6FnOnce9call_once17h219094afbf4db59bE.exit.thread.i9.i.i: ; .critedge.i.i: ; preds = %18 %32 = extractvalue { ptr, ptr } %19, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %20, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %32, i64 8) ] %33 = icmp ne ptr %32, null tail call void @llvm.assume(i1 %33) + call void @llvm.assume(i1 true) [ "align"(ptr %20, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !41) tail call void @llvm.experimental.noalias.scope.decl(metadata !44) tail call void @llvm.experimental.noalias.scope.decl(metadata !46) @@ -260,8 +263,11 @@ _ZN4core3ops8function6FnOnce9call_once17h219094afbf4db59bE.exit.thread.i9.i.i.i: .critedge.i.i.i: ; preds = %78 %92 = extractvalue { ptr, ptr } %79, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %80, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %92, i64 8) ] %93 = icmp ne ptr %92, null call void @llvm.assume(i1 %93) + call void @llvm.assume(i1 true) [ "align"(ptr %80, i64 8) ] call void @llvm.experimental.noalias.scope.decl(metadata !128) call void @llvm.experimental.noalias.scope.decl(metadata !131) call void @llvm.experimental.noalias.scope.decl(metadata !133) @@ -848,6 +854,8 @@ define noundef double @_ZN6statrs12distribution9empirical9Empirical13__inverse_c %51 = phi ptr [ %60, %56 ], [ %48, %46 ] %.sroa.04.041.i = phi i64 [ %58, %56 ], [ 0, %46 ] %52 = extractvalue { ptr, ptr } %.pn.i, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %51, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %52, i64 8) ] %53 = icmp ne ptr %52, null call void @llvm.assume(i1 %53) %54 = load double, ptr %51, align 8, !noundef !4 @@ -914,6 +922,8 @@ define noundef double @_ZN6statrs12distribution9empirical9Empirical13__inverse_c %72 = phi ptr [ %81, %77 ], [ %69, %67 ] %.sroa.04.041.i29 = phi i64 [ %79, %77 ], [ 0, %67 ] %73 = extractvalue { ptr, ptr } %.pn.i28, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %72, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %73, i64 8) ] %74 = icmp ne ptr %73, null call void @llvm.assume(i1 %74) %75 = load double, ptr %72, align 8, !noundef !4 @@ -989,6 +999,8 @@ define noundef double @_ZN6statrs12distribution9empirical9Empirical13__inverse_c %98 = phi ptr [ %107, %103 ], [ %95, %91 ] %.sroa.04.041.i48 = phi i64 [ %105, %103 ], [ 0, %91 ] %99 = extractvalue { ptr, ptr } %.pn.i47, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %98, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %99, i64 8) ] %100 = icmp ne ptr %99, null call void @llvm.assume(i1 %100) %101 = load double, ptr %98, align 8, !noundef !4 @@ -1042,6 +1054,7 @@ define noundef zeroext i1 @"_ZN81_$LT$statrs..distribution..empirical..Empirical _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit: ; preds = %2 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) + call void @llvm.assume(i1 true) [ "align"(ptr %14, i64 8) ] %16 = load double, ptr %14, align 8, !noundef !4 store double %16, ptr %11, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) @@ -1383,6 +1396,8 @@ define noundef double @"_ZN115_$LT$statrs..distribution..empirical..Empirical$u2 %18 = phi ptr [ %28, %24 ], [ %12, %2 ] %.sroa.04.041 = phi i64 [ %26, %24 ], [ 0, %2 ] %19 = extractvalue { ptr, ptr } %.pn, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %18, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %19, i64 8) ] %20 = icmp ne ptr %19, null call void @llvm.assume(i1 %20) %21 = load double, ptr %18, align 8, !noundef !4 @@ -1463,6 +1478,8 @@ define noundef double @"_ZN115_$LT$statrs..distribution..empirical..Empirical$u2 %18 = phi ptr [ %28, %24 ], [ %12, %2 ] %.sroa.05.040 = phi i64 [ %26, %24 ], [ 0, %2 ] %19 = extractvalue { ptr, ptr } %.pn, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %18, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %19, i64 8) ] %20 = icmp ne ptr %19, null call void @llvm.assume(i1 %20) %21 = load double, ptr %18, align 8, !noundef !4 diff --git a/bench/stockfish/optimized/uci.ll b/bench/stockfish/optimized/uci.ll index 8affe1e485b..99a7195c825 100644 --- a/bench/stockfish/optimized/uci.ll +++ b/bench/stockfish/optimized/uci.ll @@ -1242,7 +1242,6 @@ define dso_local void @_ZN9Stockfish3UCI4loopEv(ptr noundef nonnull align 8 dere %.06.i.i.i.i.idx = phi i64 [ %.06.i.i.i.i.add, %.lr.ph.i.i.i.i ], [ 24, %1 ] %.06.i.i.i.i.ptr = getelementptr inbounds nuw i8, ptr %18, i64 %.06.i.i.i.i.idx %19 = call noalias noundef nonnull align 64 dereferenceable(11264) ptr @_ZnwmSt11align_val_t(i64 noundef 11264, i64 noundef 64) #22 - call void @llvm.assume(i1 true) [ "align"(ptr %19, i64 64) ] store ptr %19, ptr %.06.i.i.i.i.ptr, align 8 %.06.i.i.i.i.add = add nuw nsw i64 %.06.i.i.i.i.idx, 8 %20 = icmp samesign ult i64 %.06.i.i.i.i.idx, 32 @@ -2109,7 +2108,6 @@ define dso_local void @_ZN9Stockfish3UCI8positionERNS_8PositionERNSt7__cxx1119ba %.06.i.i.i.i.idx = phi i64 [ %.06.i.i.i.i.add, %.lr.ph.i.i.i.i ], [ 24, %.critedge ] %.06.i.i.i.i.ptr = getelementptr inbounds nuw i8, ptr %37, i64 %.06.i.i.i.i.idx %38 = call noalias noundef nonnull align 64 dereferenceable(11264) ptr @_ZnwmSt11align_val_t(i64 noundef 11264, i64 noundef 64) #22 - call void @llvm.assume(i1 true) [ "align"(ptr %38, i64 64) ] store ptr %38, ptr %.06.i.i.i.i.ptr, align 8 %.06.i.i.i.i.add = add nuw nsw i64 %.06.i.i.i.i.idx, 8 %39 = icmp samesign ult i64 %.06.i.i.i.i.idx, 32 @@ -2505,7 +2503,6 @@ define dso_local void @_ZN9Stockfish3UCI10trace_evalERNS_8PositionE(ptr noundef %.06.i.i.i.i.idx = phi i64 [ %.06.i.i.i.i.add, %.lr.ph.i.i.i.i ], [ 24, %2 ] %.06.i.i.i.i.ptr = getelementptr inbounds nuw i8, ptr %10, i64 %.06.i.i.i.i.idx %11 = tail call noalias noundef nonnull align 64 dereferenceable(11264) ptr @_ZnwmSt11align_val_t(i64 noundef 11264, i64 noundef 64) #22 - call void @llvm.assume(i1 true) [ "align"(ptr %11, i64 64) ] store ptr %11, ptr %.06.i.i.i.i.ptr, align 8 %.06.i.i.i.i.add = add nuw nsw i64 %.06.i.i.i.i.idx, 8 %12 = icmp samesign ult i64 %.06.i.i.i.i.idx, 32 @@ -2715,7 +2712,6 @@ define linkonce_odr dso_local void @_ZN9Stockfish5perftERKNSt7__cxx1112basic_str %.06.i.i.i.i.idx = phi i64 [ %.06.i.i.i.i.add, %.lr.ph.i.i.i.i ], [ 24, %3 ] %.06.i.i.i.i.ptr = getelementptr inbounds nuw i8, ptr %5, i64 %.06.i.i.i.i.idx %6 = tail call noalias noundef nonnull align 64 dereferenceable(11264) ptr @_ZnwmSt11align_val_t(i64 noundef 11264, i64 noundef 64) #22 - call void @llvm.assume(i1 true) [ "align"(ptr %6, i64 64) ] store ptr %6, ptr %.06.i.i.i.i.ptr, align 8 %.06.i.i.i.i.add = add nuw nsw i64 %.06.i.i.i.i.idx, 8 %7 = icmp samesign ult i64 %.06.i.i.i.i.idx, 32 @@ -4450,7 +4446,6 @@ define linkonce_odr dso_local void @_ZNSt5dequeIN9Stockfish9StateInfoESaIS1_EE16 _ZNSt5dequeIN9Stockfish9StateInfoESaIS1_EE22_M_reserve_map_at_backEm.exit: ; preds = %32, %41 %42 = phi ptr [ %5, %32 ], [ %.pre, %41 ] %43 = tail call noalias noundef nonnull align 64 dereferenceable(11264) ptr @_ZnwmSt11align_val_t(i64 noundef 11264, i64 noundef 64) #22 - call void @llvm.assume(i1 true) [ "align"(ptr %43, i64 64) ] %44 = getelementptr inbounds nuw i8, ptr %42, i64 8 store ptr %43, ptr %44, align 8 %45 = load ptr, ptr %2, align 8 diff --git a/bench/syn/optimized/19z3k5eqgbxjiezn.ll b/bench/syn/optimized/19z3k5eqgbxjiezn.ll index 2d7b23fc470..427267bd2ea 100644 --- a/bench/syn/optimized/19z3k5eqgbxjiezn.ll +++ b/bench/syn/optimized/19z3k5eqgbxjiezn.ll @@ -1530,11 +1530,18 @@ define void @_ZN3syn5token8printing5punct17h32409e3f9cc0b330E(ptr noalias nounde %.sroa.022.1 = phi ptr [ %61, %74 ], [ %87, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.i" ], [ %77, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h100ef91c9288c1d4E.exit15.i.i.i" ], [ %67, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h100ef91c9288c1d4E.exit13.i.i.i" ] %97 = phi i32 [ %75, %74 ], [ %95, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.i" ], [ %84, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h100ef91c9288c1d4E.exit15.i.i.i" ], [ %72, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h100ef91c9288c1d4E.exit13.i.i.i" ] %98 = icmp eq ptr %.sroa.10.043, %57 + br i1 %98, label %select.unfold, label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5e0d92634ac9abd4E.exit" + +select.unfold: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.thread.i" + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] + br label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5e0d92634ac9abd4E.exit.thread" + +"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5e0d92634ac9abd4E.exit": ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.thread.i" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.10.043, i64 4) ] %99 = icmp eq i32 %97, 1114112 - %or.cond = select i1 %98, i1 true, i1 %99 - br i1 %or.cond, label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5e0d92634ac9abd4E.exit.thread", label %102 + br i1 %99, label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5e0d92634ac9abd4E.exit.thread", label %102 -"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5e0d92634ac9abd4E.exit.thread": ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.i", %102, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.thread.i", %56 +"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5e0d92634ac9abd4E.exit.thread": ; preds = %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5e0d92634ac9abd4E.exit", %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.i", %102, %56, %select.unfold call void @_ZN11proc_macro25Punct3new17ha2694db8c6b60402E(ptr noalias nocapture noundef nonnull sret({ i32, i32, i8, [3 x i8] }) align 4 dereferenceable(12) %8, i32 noundef %.sroa.4.1.i.ph33, i1 noundef zeroext false) %100 = load i32, ptr %57, align 4, !noundef !4 %101 = getelementptr inbounds nuw i8, ptr %8, i64 4 @@ -1547,8 +1554,9 @@ define void @_ZN3syn5token8printing5punct17h32409e3f9cc0b330E(ptr noalias nounde call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7), !noalias !238 ret void -102: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.thread.i" +102: ; preds = %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h5e0d92634ac9abd4E.exit" %103 = getelementptr inbounds nuw i8, ptr %.sroa.10.043, i64 4 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.10.043, i64 4) ] call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %9) call void @_ZN11proc_macro25Punct3new17ha2694db8c6b60402E(ptr noalias nocapture noundef nonnull sret({ i32, i32, i8, [3 x i8] }) align 4 dereferenceable(12) %9, i32 noundef %97, i1 noundef zeroext true) %104 = load i32, ptr %.sroa.10.043, align 4, !noundef !4 @@ -1897,6 +1905,7 @@ default.unreachable: ; preds = %2 %.fca.1.extract.i = extractvalue { ptr, ptr } %18, 1 %.fca.1.gep.i = getelementptr inbounds nuw i8, ptr %7, i64 8 store ptr %.fca.1.extract.i, ptr %.fca.1.gep.i, align 8, !noalias !272 + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.1.extract.i, i64 8) ] %19 = getelementptr inbounds nuw i8, ptr %.fca.1.extract.i, i64 24 %20 = load ptr, ptr %19, align 8, !invariant.load !4, !nonnull !4 %21 = invoke noundef align 8 dereferenceable_or_null(96) ptr %20(ptr noundef align 1 %.fca.0.extract.i) @@ -1971,6 +1980,7 @@ common.resume: ; preds = %46, %22 %.fca.1.extract.i11 = extractvalue { ptr, ptr } %42, 1 %.fca.1.gep.i12 = getelementptr inbounds nuw i8, ptr %4, i64 8 store ptr %.fca.1.extract.i11, ptr %.fca.1.gep.i12, align 8, !noalias !280 + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.1.extract.i11, i64 8) ] %43 = getelementptr inbounds nuw i8, ptr %.fca.1.extract.i11, i64 56 %44 = load ptr, ptr %43, align 8, !invariant.load !4, !nonnull !4 %45 = invoke noundef align 8 dereferenceable_or_null(96) ptr %44(ptr noundef align 1 %.fca.0.extract.i10) @@ -2016,6 +2026,7 @@ _ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit: ; preds = %52, %55 store ptr %9, ptr %10, align 8 %58 = getelementptr inbounds nuw i8, ptr %10, i64 8 store ptr @"_ZN70_$LT$syn..attr..parsing..DisplayPath$u20$as$u20$core..fmt..Display$GT$3fmt17hc0858aee5623b4bbE", ptr %58, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3), !noalias !283 store ptr @anon.0d5d5001281b8245a926393d947a7215.31, ptr %3, align 8, !noalias !294 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -2073,6 +2084,7 @@ default.unreachable: ; preds = %2 %.fca.1.extract.i = extractvalue { ptr, ptr } %18, 1 %.fca.1.gep.i = getelementptr inbounds nuw i8, ptr %7, i64 8 store ptr %.fca.1.extract.i, ptr %.fca.1.gep.i, align 8, !noalias !296 + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.1.extract.i, i64 8) ] %19 = getelementptr inbounds nuw i8, ptr %.fca.1.extract.i, i64 24 %20 = load ptr, ptr %19, align 8, !invariant.load !4, !nonnull !4 %21 = invoke noundef align 8 dereferenceable_or_null(96) ptr %20(ptr noundef align 1 %.fca.0.extract.i) @@ -2150,6 +2162,7 @@ common.resume: ; preds = %48, %22 %.fca.1.extract.i14 = extractvalue { ptr, ptr } %44, 1 %.fca.1.gep.i15 = getelementptr inbounds nuw i8, ptr %4, i64 8 store ptr %.fca.1.extract.i14, ptr %.fca.1.gep.i15, align 8, !noalias !304 + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.1.extract.i14, i64 8) ] %45 = getelementptr inbounds nuw i8, ptr %.fca.1.extract.i14, i64 56 %46 = load ptr, ptr %45, align 8, !invariant.load !4, !nonnull !4 %47 = invoke noundef align 8 dereferenceable_or_null(96) ptr %46(ptr noundef align 1 %.fca.0.extract.i13) @@ -2195,6 +2208,7 @@ _ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit: ; preds = %54, %57 store ptr %9, ptr %10, align 8 %60 = getelementptr inbounds nuw i8, ptr %10, i64 8 store ptr @"_ZN70_$LT$syn..attr..parsing..DisplayPath$u20$as$u20$core..fmt..Display$GT$3fmt17hc0858aee5623b4bbE", ptr %60, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3), !noalias !307 store ptr @anon.0d5d5001281b8245a926393d947a7215.37, ptr %3, align 8, !noalias !318 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -3102,6 +3116,7 @@ _ZN3syn6buffer6Cursor5ident17he943c8405b28ecffE.exit: ; preds = %37 store ptr @anon.0d5d5001281b8245a926393d947a7215.43, ptr %6, align 8, !alias.scope !441, !noalias !444 %54 = getelementptr inbounds nuw i8, ptr %6, i64 8 store i64 2, ptr %54, align 8, !alias.scope !441, !noalias !444 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %55 = getelementptr inbounds nuw i8, ptr %6, i64 32 store ptr null, ptr %55, align 8, !alias.scope !441, !noalias !444 %56 = getelementptr inbounds nuw i8, ptr %6, i64 16 @@ -5548,6 +5563,7 @@ _ZN3syn6buffer6Cursor5ident17he943c8405b28ecffE.exit.i: ; preds = %44 store ptr %2, ptr %7, align 8, !noalias !755 %80 = getelementptr inbounds nuw i8, ptr %7, i64 8 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h7238e3f1b09d4899E", ptr %80, align 8, !noalias !755 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4), !noalias !787 store ptr @anon.0d5d5001281b8245a926393d947a7215.14, ptr %4, align 8, !noalias !798 %.sroa.5.0..sroa_idx18.i = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -5869,7 +5885,7 @@ define hidden void @_ZN3syn5parse11ParseBuffer4step17hc7eb6887829ee83fE.llvm.858 %8 = alloca { ptr, [5 x i64] }, align 8 %9 = alloca i64, align 8 %10 = alloca i64, align 8 - %.sroa.017.0.copyload = load ptr, ptr %2, align 8, !nonnull !4, !noundef !4 + %.sroa.017.0.copyload = load ptr, ptr %2, align 8, !nonnull !4, !align !67, !noundef !4 %.sroa.4.0..sroa_idx18 = getelementptr inbounds nuw i8, ptr %2, i64 8 %.sroa.4.0.copyload = load ptr, ptr %.sroa.4.0..sroa_idx18, align 8 %.sroa.519.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 16 @@ -6070,6 +6086,7 @@ _ZN3syn6buffer6Cursor5punct17h6386474329364b2bE.exit.i: ; preds = %82 store ptr %.sroa.017.0.copyload, ptr %5, align 8, !noalias !825 %97 = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h7238e3f1b09d4899E", ptr %97, align 8, !noalias !825 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4), !noalias !845 store ptr @anon.0d5d5001281b8245a926393d947a7215.14, ptr %4, align 8, !noalias !856 %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 8 diff --git a/bench/syn/optimized/1isw8n6q6q0tgdaq.ll b/bench/syn/optimized/1isw8n6q6q0tgdaq.ll index 09c4935774f..3d7c0cb3b08 100644 --- a/bench/syn/optimized/1isw8n6q6q0tgdaq.ll +++ b/bench/syn/optimized/1isw8n6q6q0tgdaq.ll @@ -1816,7 +1816,11 @@ _ZN3syn6buffer6Cursor6create17h6f60e92346255650E.llvm.1271834235494842624.exit.i 233: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h15f62d19634fec5dE.exit" %234 = call noundef zeroext i1 @"_ZN56_$LT$syn..lit..LitFloat$u20$as$u20$syn..token..Token$GT$4peek17hca31f8ac0cb6b7bfE"(ptr noundef %231, ptr noundef %232), !noalias !263 - br i1 %234, label %235, label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$syn..lit..LitFloat$GT$$GT$17h789072e03161d9baE.exit287" + br i1 %234, label %235, label %.thread + +.thread: ; preds = %233 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] + br label %"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$syn..lit..LitFloat$GT$$GT$17h789072e03161d9baE.exit287" 235: ; preds = %233 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %42), !noalias !263 @@ -1903,7 +1907,7 @@ _ZN3syn6buffer6Cursor6create17h6f60e92346255650E.llvm.1271834235494842624.exit.i call void @__rust_dealloc(ptr noundef nonnull %238, i64 noundef 56, i64 noundef 8) #21, !noalias !287 br label %.thread670.backedge -"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$syn..lit..LitFloat$GT$$GT$17h789072e03161d9baE.exit287": ; preds = %233, %252 +"_ZN4core3ptr67drop_in_place$LT$core..option..Option$LT$syn..lit..LitFloat$GT$$GT$17h789072e03161d9baE.exit287": ; preds = %252, %.thread call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %66) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %65) call void @"_ZN3syn4expr7parsing65_$LT$impl$u20$syn..parse..Parse$u20$for$u20$syn..expr..Member$GT$5parse17ha878a28667771147E"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 %1) @@ -3411,6 +3415,7 @@ define void @"_ZN80_$LT$syn..parse..ParseBuffer$u20$as$u20$syn..parse..discourag store ptr @anon.00fe6f9d8d0d95a622c519f842c3cf7b.35, ptr %8, align 8 %15 = getelementptr inbounds nuw i8, ptr %8, i64 8 store i64 1, ptr %15, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %16 = getelementptr inbounds nuw i8, ptr %8, i64 32 store ptr null, ptr %16, align 8 %17 = getelementptr inbounds nuw i8, ptr %8, i64 16 @@ -8273,6 +8278,7 @@ _ZN3syn9lookahead9peek_impl17h22fc71ab2d851a14E.exit1058: ; preds = %758, %.noex %967 = getelementptr inbounds [39 x i64], ptr @anon.00fe6f9d8d0d95a622c519f842c3cf7b.42, i64 0, i64 %.0..0..0..0..0..0..0..0.456.pr %968 = load i64, ptr %967, align 8, !noundef !11 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %.sroa.6438.sroa.0, ptr nonnull align 8 %32, i64 %968, i1 false) + call void @llvm.assume(i1 true) [ "align"(ptr %939, i64 8) ] store i64 2, ptr %0, align 8 %.sroa.6438.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(176) %.sroa.6438.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(176) %.sroa.6438.sroa.0, i64 176, i1 false) @@ -10450,6 +10456,7 @@ _ZN3syn5parse11ParseBuffer5peek35peek317h194d45fb11cd7496E.exit.thread: ; preds %.fca.1.extract.i = extractvalue { ptr, ptr } %1576, 1 %.fca.1.gep.i = getelementptr inbounds nuw i8, ptr %14, i64 8 store ptr %.fca.1.extract.i, ptr %.fca.1.gep.i, align 8, !noalias !1587 + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.1.extract.i, i64 8) ] %1577 = getelementptr inbounds nuw i8, ptr %.fca.1.extract.i, i64 56 %1578 = load ptr, ptr %1577, align 8, !invariant.load !11, !nonnull !11 %1579 = invoke noundef align 8 dereferenceable_or_null(96) ptr %1578(ptr noundef align 1 %.fca.0.extract.i) diff --git a/bench/tls-rs/optimized/2c05x43dk4j7ivkd.ll b/bench/tls-rs/optimized/2c05x43dk4j7ivkd.ll index df577ebb2fe..9f5f472855b 100644 --- a/bench/tls-rs/optimized/2c05x43dk4j7ivkd.ll +++ b/bench/tls-rs/optimized/2c05x43dk4j7ivkd.ll @@ -557,6 +557,7 @@ define hidden void @"_ZN4core3ptr101drop_in_place$LT$alloc..sync..Weak$LT$aws_lc 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !121 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha13bc2642934b4a2E.llvm.4248407042397360440.exit" @@ -724,6 +725,7 @@ define hidden void @"_ZN4core3ptr103drop_in_place$LT$alloc..sync..Weak$LT$rustls 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !163 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha00a8b2f229d70dcE.llvm.4248407042397360440.exit" @@ -760,6 +762,7 @@ define hidden void @"_ZN4core3ptr104drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !166 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h60871bb561285fcfE.llvm.4248407042397360440.exit" @@ -1025,6 +1028,7 @@ define hidden void @"_ZN4core3ptr107drop_in_place$LT$alloc..sync..Weak$LT$aws_lc 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !216 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h689bbced8bcd0a0dE.llvm.4248407042397360440.exit" @@ -1292,6 +1296,8 @@ define hidden void @"_ZN4core3ptr109drop_in_place$LT$alloc..collections..vec_deq %15 = sub i64 %7, %5 %16 = getelementptr inbounds { i8, [31 x i8] }, ptr %13, i64 %9 %17 = sub i64 %11, %9 + call void @llvm.assume(i1 true) [ "align"(ptr %14, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %16, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !381) %18 = icmp eq i64 %7, %5 br i1 %18, label %"_ZN4core3ptr72drop_in_place$LT$$u5b$rustls_pki_types..server_name..ServerName$u5d$$GT$17h3835980caf9bd2a0E.exit.i", label %.lr.ph.i.i @@ -1412,6 +1418,7 @@ define hidden void @"_ZN4core3ptr109drop_in_place$LT$alloc..sync..Weak$LT$rustls 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !446 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hea03feb67b91ea50E.llvm.4248407042397360440.exit" @@ -1434,6 +1441,7 @@ define hidden void @"_ZN4core3ptr110drop_in_place$LT$alloc..sync..Weak$LT$aws_lc 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !449 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc9c60e6c26cde719E.llvm.4248407042397360440.exit" @@ -1456,6 +1464,7 @@ define hidden void @"_ZN4core3ptr111drop_in_place$LT$alloc..sync..Weak$LT$rustls 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !452 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h7d38b543e4ac2233E.llvm.4248407042397360440.exit" @@ -1495,6 +1504,8 @@ define hidden void @"_ZN4core3ptr114drop_in_place$LT$alloc..collections..vec_deq %15 = sub i64 %7, %5 %16 = getelementptr inbounds { { { { { i64, ptr }, i64 } }, { { { { i64, ptr }, i64 } } }, { { { i64, ptr }, i64 } }, i64, i32, [1 x i32] }, { { { i64, ptr }, i64 } }, ptr, i32, i32 }, ptr %13, i64 %9 %17 = sub i64 %11, %9 + call void @llvm.assume(i1 true) [ "align"(ptr %14, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %16, i64 8) ] invoke void @"_ZN4core3ptr77drop_in_place$LT$$u5b$rustls..msgs..persist..Tls13ClientSessionValue$u5d$$GT$17h95267bc7f7d9e338E.llvm.4248407042397360440"(ptr noalias noundef nonnull align 8 %14, i64 noundef %15) to label %20 unwind label %18 @@ -1563,6 +1574,7 @@ define hidden void @"_ZN4core3ptr114drop_in_place$LT$alloc..sync..Weak$LT$rustls 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !489 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd413717fc7399647E.llvm.4248407042397360440.exit" @@ -1585,6 +1597,7 @@ define hidden void @"_ZN4core3ptr114drop_in_place$LT$alloc..sync..Weak$LT$rustls 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !492 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1e5d01762be649e8E.llvm.4248407042397360440.exit" @@ -1614,6 +1627,7 @@ define hidden void @"_ZN4core3ptr115drop_in_place$LT$alloc..sync..Weak$LT$aws_lc 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !495 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbdf471f93c83ba1bE.llvm.4248407042397360440.exit" @@ -1636,6 +1650,7 @@ define hidden void @"_ZN4core3ptr115drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !498 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h463532b7830b1e96E.llvm.4248407042397360440.exit" @@ -1675,6 +1690,7 @@ define hidden void @"_ZN4core3ptr115drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !501 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8f0972d27aec1e30E.llvm.4248407042397360440.exit" @@ -1714,6 +1730,7 @@ define hidden void @"_ZN4core3ptr115drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !504 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h5fd93e41aad40de0E.llvm.4248407042397360440.exit" @@ -1813,6 +1830,7 @@ define hidden void @"_ZN4core3ptr116drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !523 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h82af691bcecc51f6E.llvm.4248407042397360440.exit" @@ -2211,6 +2229,7 @@ define hidden void @"_ZN4core3ptr125drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !679 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha847417f4775d713E.llvm.4248407042397360440.exit" @@ -2380,6 +2399,7 @@ define hidden void @"_ZN4core3ptr128drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !736 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h04456dde38852065E.llvm.4248407042397360440.exit" @@ -2419,6 +2439,7 @@ define hidden void @"_ZN4core3ptr128drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !739 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hefa5243eacb39b3fE.llvm.4248407042397360440.exit" @@ -2458,6 +2479,7 @@ define hidden void @"_ZN4core3ptr128drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !742 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17he4593b89013446fcE.llvm.4248407042397360440.exit" @@ -2961,6 +2983,7 @@ define hidden void @"_ZN4core3ptr145drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !896 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1a1708a9c51b209cE.llvm.4248407042397360440.exit" @@ -3158,6 +3181,7 @@ define hidden void @"_ZN4core3ptr153drop_in_place$LT$alloc..sync..Weak$LT$core.. 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !947 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0b5d6fca2b6d0995E.llvm.4248407042397360440.exit" @@ -3455,6 +3479,7 @@ define hidden void @"_ZN4core3ptr176drop_in_place$LT$alloc..sync..Weak$LT$dyn$u2 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !1127 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hffddb2d1ea2ef669E.llvm.4248407042397360440.exit" @@ -19763,6 +19788,7 @@ define hidden void @"_ZN4core3ptr82drop_in_place$LT$alloc..sync..Weak$LT$rustls. 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8, !noalias !9987 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd4305455013bffd2E.llvm.4248407042397360440.exit" @@ -22659,6 +22685,7 @@ define hidden noundef i64 @_ZN4core4sync6atomic11atomic_load17h92eb373bc4581af1E store ptr @anon.f67ecef950889ad063c28f41082b9795.12, ptr %4, align 8 %9 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %9, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %10 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %10, align 8 %11 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -22677,6 +22704,7 @@ define hidden noundef i64 @_ZN4core4sync6atomic11atomic_load17h92eb373bc4581af1E store ptr @anon.f67ecef950889ad063c28f41082b9795.16, ptr %3, align 8 %16 = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %16, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %17 = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %17, align 8 %18 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -22723,6 +22751,7 @@ define hidden void @_ZN4core4sync6atomic12atomic_store17h12537da9afd97bdeE.llvm. store ptr @anon.f67ecef950889ad063c28f41082b9795.19, ptr %5, align 8 %10 = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 1, ptr %10, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %11 = getelementptr inbounds nuw i8, ptr %5, i64 32 store ptr null, ptr %11, align 8 %12 = getelementptr inbounds nuw i8, ptr %5, i64 16 @@ -22737,6 +22766,7 @@ define hidden void @_ZN4core4sync6atomic12atomic_store17h12537da9afd97bdeE.llvm. store ptr @anon.f67ecef950889ad063c28f41082b9795.22, ptr %4, align 8 %15 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %15, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %16 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %16, align 8 %17 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -25471,6 +25501,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hc993257b1d3e560eE.exit" @@ -25509,6 +25540,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %9 @@ -25530,6 +25562,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hc993257b1d3e560eE.exit" @@ -25568,6 +25601,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %9 @@ -25589,6 +25623,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hc993257b1d3e560eE.exit" @@ -25627,6 +25662,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hc993257b1d3e560eE.exit" @@ -25665,6 +25701,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hc993257b1d3e560eE.exit" @@ -25703,6 +25740,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %9 @@ -25724,6 +25762,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %9 @@ -25745,6 +25784,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hc993257b1d3e560eE.exit" @@ -25783,6 +25823,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hc993257b1d3e560eE.exit" @@ -25821,6 +25862,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %9 @@ -25842,6 +25884,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %9 @@ -25863,6 +25906,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hc993257b1d3e560eE.exit" @@ -25901,6 +25945,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %9 @@ -25922,6 +25967,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %9 @@ -25943,6 +25989,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %9 @@ -25964,6 +26011,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %9 @@ -25985,6 +26033,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hc993257b1d3e560eE.exit" @@ -26023,6 +26072,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %9 @@ -26044,6 +26094,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hc993257b1d3e560eE.exit" @@ -26082,6 +26133,7 @@ define hidden void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..o 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %2, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %6 = atomicrmw sub ptr %5, i64 1 release, align 8 %7 = icmp eq i64 %6, 1 br i1 %7, label %8, label %"_ZN48_$LT$$RF$A$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hc993257b1d3e560eE.exit" @@ -27474,6 +27526,8 @@ define hidden void @"_ZN94_$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$ %15 = sub i64 %7, %5 %16 = getelementptr inbounds { i8, [7 x i8], { { i64, ptr }, i64 } }, ptr %13, i64 %9 %17 = sub i64 %11, %9 + call void @llvm.assume(i1 true) [ "align"(ptr %14, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %16, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !12094) %18 = icmp eq i64 %7, %5 br i1 %18, label %"_ZN4core3ptr71drop_in_place$LT$$u5b$$LP$bool$C$alloc..vec..Vec$LT$u8$GT$$RP$$u5d$$GT$17h29e2ddabd70ec3f1E.llvm.4248407042397360440.exit", label %.lr.ph.i @@ -27502,6 +27556,7 @@ define hidden void @"_ZN94_$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$ br i1 %26, label %"_ZN4core3ptr71drop_in_place$LT$$u5b$$LP$bool$C$alloc..vec..Vec$LT$u8$GT$$RP$$u5d$$GT$17h29e2ddabd70ec3f1E.llvm.4248407042397360440.exit", label %.lr.ph.i "_ZN4core3ptr71drop_in_place$LT$$u5b$$LP$bool$C$alloc..vec..Vec$LT$u8$GT$$RP$$u5d$$GT$17h29e2ddabd70ec3f1E.llvm.4248407042397360440.exit": ; preds = %"_ZN4core3ptr61drop_in_place$LT$$LP$bool$C$alloc..vec..Vec$LT$u8$GT$$RP$$GT$17h93f610748c9f5cf1E.llvm.4248407042397360440.exit.i", %1 + call void @llvm.assume(i1 true) [ "align"(ptr %16, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !12115) %27 = icmp eq i64 %11, %9 br i1 %27, label %"_ZN4core3ptr177drop_in_place$LT$$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..Dropper$LT$$LP$bool$C$alloc..vec..Vec$LT$u8$GT$$RP$$GT$$GT$17h06f8232b6597cfcdE.llvm.4248407042397360440.exit", label %.lr.ph.i.i.i @@ -27555,6 +27610,8 @@ define hidden void @"_ZN94_$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$ %15 = sub i64 %7, %5 %16 = getelementptr inbounds { { { { { i64, ptr }, i64 } }, { { { { i64, ptr }, i64 } } }, { { { i64, ptr }, i64 } }, i64, i32, [1 x i32] }, { { { i64, ptr }, i64 } }, ptr, i32, i32 }, ptr %13, i64 %9 %17 = sub i64 %11, %9 + call void @llvm.assume(i1 true) [ "align"(ptr %14, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %16, i64 8) ] invoke void @"_ZN4core3ptr77drop_in_place$LT$$u5b$rustls..msgs..persist..Tls13ClientSessionValue$u5d$$GT$17h95267bc7f7d9e338E.llvm.4248407042397360440"(ptr noalias noundef nonnull align 8 %14, i64 noundef %15) to label %20 unwind label %18 @@ -27600,6 +27657,8 @@ define hidden void @"_ZN94_$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$ %15 = sub i64 %7, %5 %16 = getelementptr inbounds { { i64, ptr }, i64 }, ptr %13, i64 %9 %17 = sub i64 %11, %9 + call void @llvm.assume(i1 true) [ "align"(ptr %14, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %16, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !12157) %18 = icmp eq i64 %7, %5 br i1 %18, label %"_ZN4core3ptr56drop_in_place$LT$$u5b$alloc..vec..Vec$LT$u8$GT$$u5d$$GT$17h788e01ccdf9f1fc2E.llvm.4248407042397360440.exit", label %.lr.ph.i @@ -27626,6 +27685,7 @@ define hidden void @"_ZN94_$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$ br i1 %25, label %"_ZN4core3ptr56drop_in_place$LT$$u5b$alloc..vec..Vec$LT$u8$GT$$u5d$$GT$17h788e01ccdf9f1fc2E.llvm.4248407042397360440.exit", label %.lr.ph.i "_ZN4core3ptr56drop_in_place$LT$$u5b$alloc..vec..Vec$LT$u8$GT$$u5d$$GT$17h788e01ccdf9f1fc2E.llvm.4248407042397360440.exit": ; preds = %"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h8e8ccce731b64633E.exit.i", %1 + call void @llvm.assume(i1 true) [ "align"(ptr %16, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !12175) %26 = icmp eq i64 %11, %9 br i1 %26, label %"_ZN4core3ptr162drop_in_place$LT$$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..Dropper$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$17haee87c70bc6bade5E.llvm.4248407042397360440.exit", label %.lr.ph.i.i.i diff --git a/bench/tls-rs/optimized/49b6dhrgmsskmdw3.ll b/bench/tls-rs/optimized/49b6dhrgmsskmdw3.ll index 656513eaa6e..7f98de98cd1 100644 --- a/bench/tls-rs/optimized/49b6dhrgmsskmdw3.ll +++ b/bench/tls-rs/optimized/49b6dhrgmsskmdw3.ll @@ -1312,6 +1312,7 @@ _ZN4core5slice4sort25insertion_sort_shift_left17h7185fd4936b988f1E.exit: ; preds ret void 16: ; preds = %15 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109, i64 4) ] call fastcc void @_ZN4core5slice4sort14break_patterns17hcd9874dc653793c6E(ptr noalias noundef nonnull align 4 %.sroa.0.0109, i64 noundef %.sroa.14.0108) %17 = add i32 %.033107, -1 br label %18 @@ -1630,6 +1631,7 @@ _ZN4core5slice4sort12choose_pivot17hb244ba6ab6f4f2faE.exit: ; preds = %"_ZN4core br i1 %.not, label %156, label %154 152: ; preds = %_ZN4core5slice4sort12choose_pivot17hb244ba6ab6f4f2faE.exit + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109, i64 4) ] %153 = call fastcc noundef zeroext i1 @_ZN4core5slice4sort22partial_insertion_sort17h7d4976e29df8df0eE(ptr noalias noundef nonnull align 4 %.sroa.0.0109, i64 noundef %.sroa.14.0108) br i1 %153, label %_ZN4core5slice4sort25insertion_sort_shift_left17h7185fd4936b988f1E.exit, label %151 @@ -1779,9 +1781,10 @@ _ZN4core5slice4sort12choose_pivot17hb244ba6ab6f4f2faE.exit: ; preds = %"_ZN4core %206 = add nuw i64 %.sroa.090.015.i.i, 1 %207 = trunc i64 %.sroa.090.015.i.i to i8 store i8 %207, ptr %.213817.i.i, align 1, !noalias !209 + call void @llvm.assume(i1 true) [ "align"(ptr %.015516.i.i, i64 4) ] %.0155.val.i.i = load i32, ptr %.015516.i.i, align 4, !alias.scope !209, !noundef !9 %208 = getelementptr i8, ptr %.015516.i.i, i64 4 - %.0155.val165.i.i = load i16, ptr %208, align 2, !alias.scope !209 + %.0155.val165.i.i = load i16, ptr %208, align 4, !alias.scope !209 %209 = icmp eq i32 %.0155.val.i.i, %164 %210 = icmp uge i16 %.0155.val165.i.i, %166 %211 = icmp uge i32 %.0155.val.i.i, %164 @@ -1813,9 +1816,10 @@ _ZN4core5slice4sort12choose_pivot17hb244ba6ab6f4f2faE.exit: ; preds = %"_ZN4core %222 = getelementptr inbounds i8, ptr %.015618.i.i, i64 -8 %223 = trunc i64 %.sroa.099.019.i.i to i8 store i8 %223, ptr %.215220.i.i, align 1, !noalias !209 + call void @llvm.assume(i1 true) [ "align"(ptr %222, i64 4) ] %.val.i.i = load i32, ptr %222, align 4, !alias.scope !209, !noundef !9 %224 = getelementptr i8, ptr %.015618.i.i, i64 -4 - %.val162.i.i = load i16, ptr %224, align 2, !alias.scope !209 + %.val162.i.i = load i16, ptr %224, align 4, !alias.scope !209 %225 = icmp eq i32 %.val.i.i, %164 %226 = icmp ult i16 %.val162.i.i, %166 %227 = icmp ult i32 %.val.i.i, %164 @@ -1971,6 +1975,8 @@ _ZN4core5slice4sort12choose_pivot17hb244ba6ab6f4f2faE.exit: ; preds = %"_ZN4core %.0.sroa.speculated.i = call noundef i64 @llvm.umin.i64(i64 %289, i64 %297) %298 = lshr i64 %.sroa.14.0108.lcssa127, 3 %299 = icmp uge i64 %.0.sroa.speculated.i, %298 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109.lcssa135, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %295, i64 4) ] %300 = getelementptr inbounds nuw i8, ptr %295, i64 8 %301 = add i64 %297, -1 %302 = icmp ult i64 %289, %301 @@ -1994,6 +2000,7 @@ _ZN4core5slice4sort12choose_pivot17hb244ba6ab6f4f2faE.exit: ; preds = %"_ZN4core unreachable 310: ; preds = %303 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109, i64 4) ] %311 = load i64, ptr %.sroa.0.0109, align 4, !alias.scope !216, !noalias !221 %312 = load i64, ptr %304, align 4, !alias.scope !216, !noalias !221 store i64 %312, ptr %.sroa.0.0109, align 4, !alias.scope !216, !noalias !221 @@ -2022,7 +2029,7 @@ _ZN4core5slice4sort12choose_pivot17hb244ba6ab6f4f2faE.exit: ; preds = %"_ZN4core %320 = getelementptr inbounds { i32, i16 }, ptr %313, i64 %.02126.i %.val33.i = load i32, ptr %320, align 4, !alias.scope !223, !noundef !9 %321 = getelementptr i8, ptr %320, i64 4 - %.val34.i = load i16, ptr %321, align 2, !alias.scope !223 + %.val34.i = load i16, ptr %321, align 4, !alias.scope !223 %322 = icmp eq i32 %315, %.val33.i %323 = icmp ult i16 %317, %.val34.i %324 = icmp ult i32 %315, %.val33.i @@ -2046,7 +2053,7 @@ _ZN4core5slice4sort12choose_pivot17hb244ba6ab6f4f2faE.exit: ; preds = %"_ZN4core %331 = getelementptr { i32, i16 }, ptr %.sroa.0.0109, i64 %.1.i54 %.val29.i = load i32, ptr %331, align 4, !alias.scope !223, !noundef !9 %332 = getelementptr i8, ptr %331, i64 4 - %.val30.i = load i16, ptr %332, align 2, !alias.scope !223 + %.val30.i = load i16, ptr %332, align 4, !alias.scope !223 %333 = icmp eq i32 %315, %.val29.i %334 = icmp ult i16 %317, %.val30.i %335 = icmp ult i32 %315, %.val29.i @@ -2069,6 +2076,7 @@ _ZN4core5slice4sort15partition_equal17h58e820ca42be4d39E.exit: ; preds = %327 %.sroa.0.0.insert.ext5.i = zext i32 %315 to i64 %.sroa.0.0.insert.insert7.i = or disjoint i64 %.sroa.9.0.insert.shift13.i, %.sroa.0.0.insert.ext5.i store i64 %.sroa.0.0.insert.insert7.i, ptr %.sroa.0.0109, align 4, !alias.scope !223 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109, i64 4) ] %342 = icmp ugt i64 %341, %.sroa.14.0108 br i1 %342, label %343, label %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h5e862ed0f0699024E.exit" @@ -2198,6 +2206,7 @@ _ZN4core5slice4sort25insertion_sort_shift_left17hb197527b88108745E.exit: ; preds ret void 16: ; preds = %15 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109, i64 4) ] call fastcc void @_ZN4core5slice4sort14break_patterns17hcc529cc9661680d5E(ptr noalias noundef nonnull align 4 %.sroa.0.0109, i64 noundef %.sroa.14.0108) %17 = add i32 %.033107, -1 br label %18 @@ -2516,6 +2525,7 @@ _ZN4core5slice4sort12choose_pivot17h96db4cefb14b0787E.exit: ; preds = %"_ZN4core br i1 %.not, label %156, label %154 152: ; preds = %_ZN4core5slice4sort12choose_pivot17h96db4cefb14b0787E.exit + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109, i64 4) ] %153 = call fastcc noundef zeroext i1 @_ZN4core5slice4sort22partial_insertion_sort17heb7c851ca43bbed7E(ptr noalias noundef nonnull align 4 %.sroa.0.0109, i64 noundef %.sroa.14.0108) br i1 %153, label %_ZN4core5slice4sort25insertion_sort_shift_left17hb197527b88108745E.exit, label %151 @@ -2665,6 +2675,7 @@ _ZN4core5slice4sort12choose_pivot17h96db4cefb14b0787E.exit: ; preds = %"_ZN4core %206 = add nuw i64 %.sroa.090.015.i.i, 1 %207 = trunc i64 %.sroa.090.015.i.i to i8 store i8 %207, ptr %.213817.i.i, align 1, !noalias !339 + call void @llvm.assume(i1 true) [ "align"(ptr %.015516.i.i, i64 4) ] %.0155.val.i.i = load i32, ptr %.015516.i.i, align 4, !alias.scope !339, !noundef !9 %208 = getelementptr i8, ptr %.015516.i.i, i64 4 %.0155.val165.i.i = load i32, ptr %208, align 4, !alias.scope !339 @@ -2699,6 +2710,7 @@ _ZN4core5slice4sort12choose_pivot17h96db4cefb14b0787E.exit: ; preds = %"_ZN4core %222 = getelementptr inbounds i8, ptr %.015618.i.i, i64 -8 %223 = trunc i64 %.sroa.099.019.i.i to i8 store i8 %223, ptr %.215220.i.i, align 1, !noalias !339 + call void @llvm.assume(i1 true) [ "align"(ptr %222, i64 4) ] %.val.i.i = load i32, ptr %222, align 4, !alias.scope !339, !noundef !9 %224 = getelementptr i8, ptr %.015618.i.i, i64 -4 %.val162.i.i = load i32, ptr %224, align 4, !alias.scope !339 @@ -2857,6 +2869,8 @@ _ZN4core5slice4sort12choose_pivot17h96db4cefb14b0787E.exit: ; preds = %"_ZN4core %.0.sroa.speculated.i = call noundef i64 @llvm.umin.i64(i64 %289, i64 %297) %298 = lshr i64 %.sroa.14.0108.lcssa127, 3 %299 = icmp uge i64 %.0.sroa.speculated.i, %298 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109.lcssa135, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %295, i64 4) ] %300 = getelementptr inbounds nuw i8, ptr %295, i64 8 %301 = add i64 %297, -1 %302 = icmp ult i64 %289, %301 @@ -2880,6 +2894,7 @@ _ZN4core5slice4sort12choose_pivot17h96db4cefb14b0787E.exit: ; preds = %"_ZN4core unreachable 310: ; preds = %303 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109, i64 4) ] %311 = load i64, ptr %.sroa.0.0109, align 4, !alias.scope !346, !noalias !351 %312 = load i64, ptr %304, align 4, !alias.scope !346, !noalias !351 store i64 %312, ptr %.sroa.0.0109, align 4, !alias.scope !346, !noalias !351 @@ -2955,6 +2970,7 @@ _ZN4core5slice4sort15partition_equal17h8b3f24383383a327E.exit: ; preds = %327 %.sroa.0.0.insert.ext5.i = zext i32 %315 to i64 %.sroa.0.0.insert.insert7.i = or disjoint i64 %.sroa.9.0.insert.shift13.i, %.sroa.0.0.insert.ext5.i store i64 %.sroa.0.0.insert.insert7.i, ptr %.sroa.0.0109, align 4, !alias.scope !353 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109, i64 4) ] %342 = icmp ugt i64 %341, %.sroa.14.0108 br i1 %342, label %343, label %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h6385f86095e10bb5E.exit" @@ -3084,6 +3100,7 @@ _ZN4core5slice4sort25insertion_sort_shift_left17hfa40986fc61f5882E.exit: ; preds ret void 16: ; preds = %15 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109, i64 4) ] call fastcc void @_ZN4core5slice4sort14break_patterns17h4d174e63e37857dcE(ptr noalias noundef nonnull align 4 %.sroa.0.0109, i64 noundef %.sroa.14.0108) %17 = add i32 %.033107, -1 br label %18 @@ -3402,6 +3419,7 @@ _ZN4core5slice4sort12choose_pivot17hccf106d57e647929E.exit: ; preds = %"_ZN4core br i1 %.not, label %156, label %154 152: ; preds = %_ZN4core5slice4sort12choose_pivot17hccf106d57e647929E.exit + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109, i64 4) ] %153 = call fastcc noundef zeroext i1 @_ZN4core5slice4sort22partial_insertion_sort17h32490905fd96ba3aE(ptr noalias noundef nonnull align 4 %.sroa.0.0109, i64 noundef %.sroa.14.0108) br i1 %153, label %_ZN4core5slice4sort25insertion_sort_shift_left17hfa40986fc61f5882E.exit, label %151 @@ -3551,9 +3569,10 @@ _ZN4core5slice4sort12choose_pivot17hccf106d57e647929E.exit: ; preds = %"_ZN4core %206 = add nuw i64 %.sroa.090.015.i.i, 1 %207 = trunc i64 %.sroa.090.015.i.i to i8 store i8 %207, ptr %.213817.i.i, align 1, !noalias !469 + call void @llvm.assume(i1 true) [ "align"(ptr %.015516.i.i, i64 4) ] %.0155.val.i.i = load i32, ptr %.015516.i.i, align 4, !alias.scope !469, !noundef !9 %208 = getelementptr i8, ptr %.015516.i.i, i64 4 - %.0155.val165.i.i = load i8, ptr %208, align 1, !alias.scope !469 + %.0155.val165.i.i = load i8, ptr %208, align 4, !alias.scope !469 %209 = icmp eq i32 %.0155.val.i.i, %164 %210 = icmp uge i8 %.0155.val165.i.i, %166 %211 = icmp uge i32 %.0155.val.i.i, %164 @@ -3585,9 +3604,10 @@ _ZN4core5slice4sort12choose_pivot17hccf106d57e647929E.exit: ; preds = %"_ZN4core %222 = getelementptr inbounds i8, ptr %.015618.i.i, i64 -8 %223 = trunc i64 %.sroa.099.019.i.i to i8 store i8 %223, ptr %.215220.i.i, align 1, !noalias !469 + call void @llvm.assume(i1 true) [ "align"(ptr %222, i64 4) ] %.val.i.i = load i32, ptr %222, align 4, !alias.scope !469, !noundef !9 %224 = getelementptr i8, ptr %.015618.i.i, i64 -4 - %.val162.i.i = load i8, ptr %224, align 1, !alias.scope !469 + %.val162.i.i = load i8, ptr %224, align 4, !alias.scope !469 %225 = icmp eq i32 %.val.i.i, %164 %226 = icmp ult i8 %.val162.i.i, %166 %227 = icmp ult i32 %.val.i.i, %164 @@ -3743,6 +3763,8 @@ _ZN4core5slice4sort12choose_pivot17hccf106d57e647929E.exit: ; preds = %"_ZN4core %.0.sroa.speculated.i = call noundef i64 @llvm.umin.i64(i64 %289, i64 %297) %298 = lshr i64 %.sroa.14.0108.lcssa127, 3 %299 = icmp uge i64 %.0.sroa.speculated.i, %298 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109.lcssa135, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %295, i64 4) ] %300 = getelementptr inbounds nuw i8, ptr %295, i64 8 %301 = add i64 %297, -1 %302 = icmp ult i64 %289, %301 @@ -3766,6 +3788,7 @@ _ZN4core5slice4sort12choose_pivot17hccf106d57e647929E.exit: ; preds = %"_ZN4core unreachable 310: ; preds = %303 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109, i64 4) ] %311 = load i64, ptr %.sroa.0.0109, align 4, !alias.scope !476, !noalias !481 %312 = load i64, ptr %304, align 4, !alias.scope !476, !noalias !481 store i64 %312, ptr %.sroa.0.0109, align 4, !alias.scope !476, !noalias !481 @@ -3794,7 +3817,7 @@ _ZN4core5slice4sort12choose_pivot17hccf106d57e647929E.exit: ; preds = %"_ZN4core %320 = getelementptr inbounds { i32, i8 }, ptr %313, i64 %.02128.i %.val33.i = load i32, ptr %320, align 4, !alias.scope !483, !noundef !9 %321 = getelementptr i8, ptr %320, i64 4 - %.val34.i = load i8, ptr %321, align 1, !alias.scope !483 + %.val34.i = load i8, ptr %321, align 4, !alias.scope !483 %322 = icmp eq i32 %315, %.val33.i %323 = icmp ult i8 %317, %.val34.i %324 = icmp ult i32 %315, %.val33.i @@ -3818,7 +3841,7 @@ _ZN4core5slice4sort12choose_pivot17hccf106d57e647929E.exit: ; preds = %"_ZN4core %331 = getelementptr { i32, i8 }, ptr %.sroa.0.0109, i64 %.1.i54 %.val29.i = load i32, ptr %331, align 4, !alias.scope !483, !noundef !9 %332 = getelementptr i8, ptr %331, i64 4 - %.val30.i = load i8, ptr %332, align 1, !alias.scope !483 + %.val30.i = load i8, ptr %332, align 4, !alias.scope !483 %333 = icmp eq i32 %315, %.val29.i %334 = icmp ult i8 %317, %.val30.i %335 = icmp ult i32 %315, %.val29.i @@ -3841,6 +3864,7 @@ _ZN4core5slice4sort15partition_equal17hae26f565b3e65c8fE.exit: ; preds = %327 %.sroa.0.0.insert.ext5.i = zext i32 %315 to i64 %.sroa.0.0.insert.insert7.i = or disjoint i64 %.sroa.9.0.insert.shift13.i, %.sroa.0.0.insert.ext5.i store i64 %.sroa.0.0.insert.insert7.i, ptr %.sroa.0.0109, align 4, !alias.scope !483 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0109, i64 4) ] %342 = icmp ugt i64 %341, %.sroa.14.0108 br i1 %342, label %343, label %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3bddc944326c18f5E.exit" @@ -3976,6 +4000,7 @@ _ZN4core5slice4sort25insertion_sort_shift_left17ha23048004b7e3c37E.exit: ; preds ret void 22: ; preds = %21 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0103, i64 8) ] call fastcc void @_ZN4core5slice4sort14break_patterns17hfbe89c588d17cf2bE(ptr noalias noundef nonnull align 8 %.sroa.0.0103, i64 noundef %.sroa.14.0102) %23 = add i32 %.033101, -1 br label %24 @@ -4294,6 +4319,7 @@ _ZN4core5slice4sort12choose_pivot17h665733fe8d2d3eabE.exit: ; preds = %"_ZN4core br i1 %.not, label %162, label %160 158: ; preds = %_ZN4core5slice4sort12choose_pivot17h665733fe8d2d3eabE.exit + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0103, i64 8) ] %159 = call fastcc noundef zeroext i1 @_ZN4core5slice4sort22partial_insertion_sort17hbbc118afbf622f10E(ptr noalias noundef nonnull align 8 %.sroa.0.0103, i64 noundef %.sroa.14.0102) br i1 %159, label %_ZN4core5slice4sort25insertion_sort_shift_left17ha23048004b7e3c37E.exit, label %157 @@ -4441,7 +4467,8 @@ _ZN4core5slice4sort12choose_pivot17h665733fe8d2d3eabE.exit: ; preds = %"_ZN4core %209 = add nuw i64 %.sroa.090.014.i.i, 1 %210 = trunc i64 %.sroa.090.014.i.i to i8 store i8 %210, ptr %.213916.i.i, align 1, !noalias !599 - %.0156.val.i.i = load i32, ptr %.015615.i.i, align 4, !alias.scope !599, !noundef !9 + call void @llvm.assume(i1 true) [ "align"(ptr %.015615.i.i, i64 8) ] + %.0156.val.i.i = load i32, ptr %.015615.i.i, align 8, !alias.scope !599, !noundef !9 %211 = getelementptr i8, ptr %.015615.i.i, i64 8 %.0156.val166.i.i = load i64, ptr %211, align 8, !alias.scope !599 %212 = icmp eq i32 %.0156.val.i.i, %168 @@ -4475,7 +4502,8 @@ _ZN4core5slice4sort12choose_pivot17h665733fe8d2d3eabE.exit: ; preds = %"_ZN4core %225 = getelementptr inbounds i8, ptr %.015717.i.i, i64 -16 %226 = trunc i64 %.sroa.099.018.i.i to i8 store i8 %226, ptr %.215319.i.i, align 1, !noalias !599 - %.val.i.i = load i32, ptr %225, align 4, !alias.scope !599, !noundef !9 + call void @llvm.assume(i1 true) [ "align"(ptr %225, i64 8) ] + %.val.i.i = load i32, ptr %225, align 8, !alias.scope !599, !noundef !9 %227 = getelementptr i8, ptr %.015717.i.i, i64 -8 %.val163.i.i = load i64, ptr %227, align 8, !alias.scope !599 %228 = icmp eq i32 %.val.i.i, %168 @@ -4621,6 +4649,8 @@ _ZN4core5slice4sort12choose_pivot17h665733fe8d2d3eabE.exit: ; preds = %"_ZN4core %.0.sroa.speculated.i = call noundef i64 @llvm.umin.i64(i64 %285, i64 %290) %291 = lshr i64 %.sroa.14.0102.lcssa121, 3 %292 = icmp uge i64 %.0.sroa.speculated.i, %291 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0103.lcssa129, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %289, i64 8) ] %293 = getelementptr inbounds nuw i8, ptr %289, i64 16 %294 = add i64 %290, -1 %295 = icmp ult i64 %285, %294 @@ -4644,6 +4674,7 @@ _ZN4core5slice4sort12choose_pivot17h665733fe8d2d3eabE.exit: ; preds = %"_ZN4core unreachable 303: ; preds = %296 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0103, i64 8) ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.0103, i64 16, i1 false), !noalias !606 call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0.0103, ptr noundef nonnull align 8 dereferenceable(16) %297, i64 16, i1 false), !alias.scope !609, !noalias !606 @@ -4671,7 +4702,7 @@ _ZN4core5slice4sort12choose_pivot17h665733fe8d2d3eabE.exit: ; preds = %"_ZN4core %310 = icmp ult i64 %.02116.i, %305 call void @llvm.assume(i1 %310) %311 = getelementptr inbounds { i32, i64 }, ptr %304, i64 %.02116.i - %.val33.i = load i32, ptr %311, align 4, !alias.scope !613, !noundef !9 + %.val33.i = load i32, ptr %311, align 8, !alias.scope !613, !noundef !9 %312 = getelementptr i8, ptr %311, i64 8 %.val34.i = load i64, ptr %312, align 8, !alias.scope !613 %313 = icmp eq i32 %306, %.val33.i @@ -4695,7 +4726,7 @@ _ZN4core5slice4sort12choose_pivot17h665733fe8d2d3eabE.exit: ; preds = %"_ZN4core %321 = icmp ult i64 %319, %305 call void @llvm.assume(i1 %321) %322 = getelementptr { i32, i64 }, ptr %.sroa.0.0103, i64 %.1.i54 - %.val29.i = load i32, ptr %322, align 4, !alias.scope !613, !noundef !9 + %.val29.i = load i32, ptr %322, align 8, !alias.scope !613, !noundef !9 %323 = getelementptr i8, ptr %322, i64 8 %.val30.i = load i64, ptr %323, align 8, !alias.scope !613 %324 = icmp eq i32 %306, %.val29.i @@ -4718,6 +4749,7 @@ _ZN4core5slice4sort15partition_equal17h829ad977d6837f06E.exit: ; preds = %318 %330 = add i64 %.021.lcssa.i, 1 store i32 %306, ptr %.sroa.0.0103, align 8, !alias.scope !613 store i64 %308, ptr %307, align 8, !alias.scope !613 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0103, i64 8) ] %331 = icmp ugt i64 %330, %.sroa.14.0102 br i1 %331, label %332, label %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h970ec4535f9b0748E.exit" @@ -5541,6 +5573,7 @@ define hidden void @_ZN4core5slice4sort9quicksort17h5afd0c390f157da1E(ptr noalia %4 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %1, i1 false) %5 = trunc nuw nsw i64 %4 to i32 %6 = sub nuw nsw i32 64, %5 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] call void @_ZN4core5slice4sort7recurse17h1629b3ea92772b9fE.llvm.17726792709170085280(ptr noalias noundef nonnull align 4 %0, i64 noundef %1, ptr noalias noundef nonnull align 1 %3, ptr noalias noundef readonly align 4 dereferenceable_or_null(8) null, i32 noundef %6) ret void } @@ -5551,6 +5584,7 @@ define hidden void @_ZN4core5slice4sort9quicksort17hb6638b72059b88d1E(ptr noalia %4 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %1, i1 false) %5 = trunc nuw nsw i64 %4 to i32 %6 = sub nuw nsw i32 64, %5 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] call void @_ZN4core5slice4sort7recurse17haedf856a5ef88fdaE.llvm.17726792709170085280(ptr noalias noundef nonnull align 4 %0, i64 noundef %1, ptr noalias noundef nonnull align 1 %3, ptr noalias noundef readonly align 4 dereferenceable_or_null(8) null, i32 noundef %6) ret void } @@ -5561,6 +5595,7 @@ define hidden void @_ZN4core5slice4sort9quicksort17hd0e71be46fb2f8d2E(ptr noalia %4 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %1, i1 false) %5 = trunc nuw nsw i64 %4 to i32 %6 = sub nuw nsw i32 64, %5 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] call void @_ZN4core5slice4sort7recurse17heba5381e1d7b8513E.llvm.17726792709170085280(ptr noalias noundef nonnull align 8 %0, i64 noundef %1, ptr noalias noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable_or_null(16) null, i32 noundef %6) ret void } @@ -5571,6 +5606,7 @@ define hidden void @_ZN4core5slice4sort9quicksort17hdb1cfa62c10589f9E(ptr noalia %4 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %1, i1 false) %5 = trunc nuw nsw i64 %4 to i32 %6 = sub nuw nsw i32 64, %5 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] call void @_ZN4core5slice4sort7recurse17h436d847e6c837e4bE.llvm.17726792709170085280(ptr noalias noundef nonnull align 4 %0, i64 noundef %1, ptr noalias noundef nonnull align 1 %3, ptr noalias noundef readonly align 4 dereferenceable_or_null(8) null, i32 noundef %6) ret void } @@ -5624,14 +5660,24 @@ define hidden noundef zeroext i1 @"_ZN5alloc11collections5btree3set21BTreeSet$LT call void @"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$5entry17h479acec3a504a9d4E.llvm.5361720058829915877"(ptr noalias nocapture noundef nonnull sret({ ptr, [4 x i64] }) align 8 dereferenceable(40) %4, ptr noalias noundef nonnull align 8 dereferenceable(24) %0, i16 noundef %1) %5 = load ptr, ptr %4, align 8, !noalias !710, !noundef !9 %6 = icmp ne ptr %5, null - br i1 %6, label %7, label %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$6insert17h6babf8ed4a431795E.exit" + br i1 %6, label %7, label %9 7: ; preds = %2 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 40, i1 false), !noalias !710 %8 = call noundef nonnull align 1 ptr @"_ZN5alloc11collections5btree3map5entry28VacantEntry$LT$K$C$V$C$A$GT$6insert17hbbe23475073a7a78E"(ptr noalias nocapture noundef nonnull align 8 dereferenceable(40) %3) br label %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$6insert17h6babf8ed4a431795E.exit" -"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$6insert17h6babf8ed4a431795E.exit": ; preds = %2, %7 +9: ; preds = %2 + %10 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %.sroa.0.0.copyload.i = load ptr, ptr %10, align 8, !noalias !710, !nonnull !9, !noundef !9 + %.sroa.42.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 24 + %.sroa.42.0.copyload.i = load i64, ptr %.sroa.42.0..sroa_idx.i, align 8, !noalias !710 + %11 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i, i64 12 + %12 = getelementptr inbounds i16, ptr %11, i64 %.sroa.42.0.copyload.i + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 2) ] + br label %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$6insert17h6babf8ed4a431795E.exit" + +"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$6insert17h6babf8ed4a431795E.exit": ; preds = %7, %9 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4), !noalias !710 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) ret i1 %6 diff --git a/bench/tls-rs/optimized/z2cy5bf5cayilz9.ll b/bench/tls-rs/optimized/z2cy5bf5cayilz9.ll index b6155d35950..bac48a2eae7 100644 --- a/bench/tls-rs/optimized/z2cy5bf5cayilz9.ll +++ b/bench/tls-rs/optimized/z2cy5bf5cayilz9.ll @@ -682,6 +682,7 @@ define hidden void @_ZN4core3fmt9Arguments6new_v117h14574ab706dc1eb0E.llvm.13848 store ptr %1, ptr %0, align 8 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %2, ptr %11, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %12 = getelementptr inbounds nuw i8, ptr %0, i64 32 store ptr null, ptr %12, align 8 %13 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -695,6 +696,7 @@ define hidden void @_ZN4core3fmt9Arguments6new_v117h14574ab706dc1eb0E.llvm.13848 store ptr @anon.916360c5c3539c9dc3d13699584f1a67.1.llvm.13848472603100435571, ptr %6, align 8 %16 = getelementptr inbounds nuw i8, ptr %6, i64 8 store i64 1, ptr %16, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %17 = getelementptr inbounds nuw i8, ptr %6, i64 32 store ptr null, ptr %17, align 8 %18 = getelementptr inbounds nuw i8, ptr %6, i64 16 @@ -715,6 +717,7 @@ define hidden void @_ZN4core3fmt9Arguments9new_const17hf50a4933d1135262E.llvm.13 store ptr %1, ptr %0, align 8 %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %2, ptr %7, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %8 = getelementptr inbounds nuw i8, ptr %0, i64 32 store ptr null, ptr %8, align 8 %9 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -728,6 +731,7 @@ define hidden void @_ZN4core3fmt9Arguments9new_const17hf50a4933d1135262E.llvm.13 store ptr @anon.916360c5c3539c9dc3d13699584f1a67.1.llvm.13848472603100435571, ptr %4, align 8, !alias.scope !31, !noalias !34 %12 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 1, ptr %12, align 8, !alias.scope !31, !noalias !34 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %13 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %13, align 8, !alias.scope !31, !noalias !34 %14 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -3035,6 +3039,7 @@ define hidden void @_ZN6rustls4msgs8deframer15MessageDeframer9append_hs17hb1c271 store ptr @anon.3ce2df9646b429f517193b4dd4e6b070.38.llvm.8163760720121022826, ptr %9, align 8, !noalias !607 %52 = getelementptr inbounds nuw i8, ptr %9, i64 8 store i64 1, ptr %52, align 8, !noalias !607 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %53 = getelementptr inbounds nuw i8, ptr %9, i64 32 store ptr null, ptr %53, align 8, !noalias !607 %54 = getelementptr inbounds nuw i8, ptr %9, i64 16 @@ -4932,6 +4937,7 @@ _ZN6rustls6vecbuf14ChunkVecBuffer3pop17hd0016c913b79fae6E.exit69: ; preds = %"_Z unreachable "_ZN4core3ptr74drop_in_place$LT$core..option..Option$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$17hc8740a9f73fdbab3E.llvm.13848472603100435571.exit72": ; preds = %"_ZN4core3ptr74drop_in_place$LT$core..option..Option$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$17hc8740a9f73fdbab3E.llvm.13848472603100435571.exit", %_ZN6rustls6vecbuf14ChunkVecBuffer3pop17hd0016c913b79fae6E.exit69 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] call fastcc void @"_ZN6rustls4conn26ConnectionCore$LT$Data$GT$7deframe17h021a4528e6af09c6E"(ptr noalias nocapture noundef align 8 dereferenceable(32) %13, ptr noalias noundef align 8 dereferenceable(928) %1, ptr noundef align 1 null, ptr undef, ptr noalias noundef align 8 dereferenceable(32) %14) %55 = load i8, ptr %13, align 8, !range !45, !noundef !4 %56 = icmp eq i8 %55, 20 @@ -4971,9 +4977,11 @@ _ZN6rustls6vecbuf14ChunkVecBuffer3pop17hd0016c913b79fae6E.exit69: ; preds = %"_Z 67: ; preds = %61 %68 = icmp ne ptr %.sroa.624.0.copyload, null call void @llvm.assume(i1 %68) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.727.0.copyload, i64 8) ] %69 = icmp ne ptr %.sroa.727.0.copyload, null call void @llvm.assume(i1 %69) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.727.0.copyload, i64 8) ] call fastcc void @"_ZN6rustls4conn26ConnectionCore$LT$Data$GT$11process_msg17h6678cabd3c15330dE"(ptr noalias nocapture noundef align 8 dereferenceable(32) %8, ptr noalias noundef align 8 dereferenceable(928) %1, ptr noalias nocapture noundef align 8 dereferenceable(24) %12, ptr noundef nonnull align 1 %.sroa.624.0.copyload, ptr noalias noundef readonly align 8 dereferenceable(24) %.sroa.727.0.copyload, ptr noalias noundef align 8 dereferenceable_or_null(48) null) %70 = load i8, ptr %8, align 8, !range !45, !noundef !4 %71 = icmp eq i8 %70, 20 @@ -5454,6 +5462,7 @@ _ZN6rustls6vecbuf14ChunkVecBuffer3pop17hd0016c913b79fae6E.exit71: ; preds = %"_Z br label %62 "_ZN4core3ptr74drop_in_place$LT$core..option..Option$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$17hc8740a9f73fdbab3E.llvm.13848472603100435571.exit74": ; preds = %"_ZN4core3ptr74drop_in_place$LT$core..option..Option$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$17hc8740a9f73fdbab3E.llvm.13848472603100435571.exit68", %_ZN6rustls6vecbuf14ChunkVecBuffer3pop17hd0016c913b79fae6E.exit71 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] call fastcc void @"_ZN6rustls4conn26ConnectionCore$LT$Data$GT$7deframe17h749641f7869eef24E"(ptr noalias nocapture noundef align 8 dereferenceable(32) %13, ptr noalias noundef align 8 dereferenceable(1016) %1, ptr noundef align 1 null, ptr undef, ptr noalias noundef align 8 dereferenceable(32) %14) %78 = load i8, ptr %13, align 8, !range !45, !noundef !4 %79 = icmp eq i8 %78, 20 @@ -5493,9 +5502,11 @@ _ZN6rustls6vecbuf14ChunkVecBuffer3pop17hd0016c913b79fae6E.exit71: ; preds = %"_Z 90: ; preds = %84 %91 = icmp ne ptr %.sroa.621.0.copyload, null call void @llvm.assume(i1 %91) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.724.0.copyload, i64 8) ] %92 = icmp ne ptr %.sroa.724.0.copyload, null call void @llvm.assume(i1 %92) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.724.0.copyload, i64 8) ] call fastcc void @"_ZN6rustls4conn26ConnectionCore$LT$Data$GT$11process_msg17h361f66ee9f207250E"(ptr noalias nocapture noundef align 8 dereferenceable(32) %8, ptr noalias noundef align 8 dereferenceable(1016) %1, ptr noalias nocapture noundef align 8 dereferenceable(24) %12, ptr noundef nonnull align 1 %.sroa.621.0.copyload, ptr noalias noundef readonly align 8 dereferenceable(24) %.sroa.724.0.copyload, ptr noalias noundef align 8 dereferenceable_or_null(48) null) %93 = load i8, ptr %8, align 8, !range !45, !noundef !4 %94 = icmp eq i8 %93, 20 @@ -5864,6 +5875,7 @@ define noundef zeroext i1 @"_ZN76_$LT$rustls..conn..unbuffered..EncodeError$u20$ store ptr @anon.916360c5c3539c9dc3d13699584f1a67.28, ptr %4, align 8, !alias.scope !1090, !noalias !1093 %10 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 2, ptr %10, align 8, !alias.scope !1090, !noalias !1093 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %11 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %11, align 8, !alias.scope !1090, !noalias !1093 %12 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -5912,6 +5924,7 @@ define noundef zeroext i1 @"_ZN77_$LT$rustls..conn..unbuffered..EncryptError$u20 store ptr @anon.916360c5c3539c9dc3d13699584f1a67.31.llvm.13848472603100435571, ptr %4, align 8, !alias.scope !1096, !noalias !1099 %10 = getelementptr inbounds nuw i8, ptr %4, i64 8 store i64 2, ptr %10, align 8, !alias.scope !1096, !noalias !1099 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %11 = getelementptr inbounds nuw i8, ptr %4, i64 32 store ptr null, ptr %11, align 8, !alias.scope !1096, !noalias !1099 %12 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -6272,6 +6285,8 @@ define hidden void @"_ZN6rustls4conn28ConnectionCommon$LT$Data$GT$25dangerous_ex 21: ; preds = %18 %22 = icmp ne ptr %.sroa.515.0.copyload, null tail call void @llvm.assume(i1 %22) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.6.0.copyload, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.6.0.copyload, i64 8) ] call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %12) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %12, ptr noundef nonnull align 8 dereferenceable(72) %1, i64 72, i1 false) call void @llvm.lifetime.start.p0(i64 39, ptr nonnull %.sroa.728) @@ -7186,8 +7201,10 @@ define hidden void @"_ZN6rustls4conn28ConnectionCommon$LT$Data$GT$25dangerous_ex 22: ; preds = %19 %23 = icmp ne ptr %.sroa.515.0.copyload, null tail call void @llvm.assume(i1 %23) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.6.0.copyload, i64 8) ] %24 = icmp ne ptr %.sroa.6.0.copyload, null tail call void @llvm.assume(i1 %24) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.6.0.copyload, i64 8) ] store ptr %.sroa.515.0.copyload, ptr %13, align 8 %25 = getelementptr inbounds nuw i8, ptr %13, i64 8 store ptr %.sroa.6.0.copyload, ptr %25, align 8 @@ -8614,6 +8631,7 @@ define hidden void @"_ZN6rustls4conn26ConnectionCore$LT$Data$GT$19process_new_pa 21: ; preds = %4 %22 = icmp ne ptr %.sroa.63.0.copyload, null tail call void @llvm.assume(i1 %22) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.7.0.copyload, i64 8) ] %23 = icmp ne ptr %.sroa.7.0.copyload, null tail call void @llvm.assume(i1 %23) %24 = getelementptr inbounds nuw i8, ptr %2, i64 24 @@ -9225,6 +9243,7 @@ define hidden void @"_ZN6rustls4conn26ConnectionCore$LT$Data$GT$19process_new_pa 22: ; preds = %4 %23 = icmp ne ptr %.sroa.63.0.copyload, null tail call void @llvm.assume(i1 %23) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.7.0.copyload, i64 8) ] %24 = icmp ne ptr %.sroa.7.0.copyload, null tail call void @llvm.assume(i1 %24) %25 = getelementptr inbounds nuw i8, ptr %19, i64 8 @@ -10374,12 +10393,14 @@ _ZN6rustls4msgs7message7inbound19InboundPlainMessage12is_valid_ccs17h7c9d260fe45 store ptr @anon.916360c5c3539c9dc3d13699584f1a67.41, ptr %14, align 8 %46 = getelementptr inbounds nuw i8, ptr %14, i64 8 store i64 1, ptr %46, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %47 = getelementptr inbounds nuw i8, ptr %14, i64 32 store ptr null, ptr %47, align 8 %48 = getelementptr inbounds nuw i8, ptr %14, i64 16 store ptr @anon.916360c5c3539c9dc3d13699584f1a67.2.llvm.13848472603100435571, ptr %48, align 8 %49 = getelementptr inbounds nuw i8, ptr %14, i64 24 store i64 0, ptr %49, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] invoke void @_ZN3log13__private_api3log17h66329984f18a960bE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %14, i64 noundef 5, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) @anon.916360c5c3539c9dc3d13699584f1a67.43, i32 noundef 884, ptr noalias noundef readonly align 8 null, i64 undef) to label %50 unwind label %.body.thread73 @@ -10645,12 +10666,14 @@ _ZN6rustls4msgs7message7inbound19InboundPlainMessage12is_valid_ccs17h7c9d260fe45 store ptr @anon.916360c5c3539c9dc3d13699584f1a67.41, ptr %14, align 8 %44 = getelementptr inbounds nuw i8, ptr %14, i64 8 store i64 1, ptr %44, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %45 = getelementptr inbounds nuw i8, ptr %14, i64 32 store ptr null, ptr %45, align 8 %46 = getelementptr inbounds nuw i8, ptr %14, i64 16 store ptr @anon.916360c5c3539c9dc3d13699584f1a67.2.llvm.13848472603100435571, ptr %46, align 8 %47 = getelementptr inbounds nuw i8, ptr %14, i64 24 store i64 0, ptr %47, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] invoke void @_ZN3log13__private_api3log17h66329984f18a960bE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %14, i64 noundef 5, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) @anon.916360c5c3539c9dc3d13699584f1a67.43, i32 noundef 884, ptr noalias noundef readonly align 8 null, i64 undef) to label %48 unwind label %.body.thread82 @@ -10985,6 +11008,7 @@ define hidden void @_ZN6rustls7hash_hs19HandshakeHashBuffer10hash_given17hb494ad %.fca.1.extract = extractvalue { ptr, ptr } %10, 1 %.fca.1.gep = getelementptr inbounds nuw i8, ptr %7, i64 8 store ptr %.fca.1.extract, ptr %.fca.1.gep, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.1.extract, i64 8) ] %11 = getelementptr inbounds nuw i8, ptr %1, i64 8 %12 = load ptr, ptr %11, align 8, !nonnull !4, !noundef !4 %13 = getelementptr inbounds nuw i8, ptr %1, i64 16 @@ -11052,6 +11076,7 @@ define hidden void @_ZN6rustls7hash_hs19HandshakeHashBuffer10start_hash17h95177f %.fca.1.extract = extractvalue { ptr, ptr } %9, 1 %.fca.1.gep = getelementptr inbounds nuw i8, ptr %6, i64 8 store ptr %.fca.1.extract, ptr %.fca.1.gep, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.1.extract, i64 8) ] %14 = getelementptr inbounds nuw i8, ptr %1, i64 8 %15 = load ptr, ptr %14, align 8, !nonnull !4, !noundef !4 %16 = getelementptr inbounds nuw i8, ptr %1, i64 16 @@ -11281,6 +11306,7 @@ define hidden void @_ZN6rustls7hash_hs13HandshakeHash10hash_given17h2ea0c5dd90bb %.fca.1.extract = extractvalue { ptr, ptr } %12, 1 %.fca.1.gep = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr %.fca.1.extract, ptr %.fca.1.gep, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.1.extract, i64 8) ] %13 = getelementptr inbounds nuw i8, ptr %.fca.1.extract, i64 48 %14 = load ptr, ptr %13, align 8, !invariant.load !4, !nonnull !4 invoke void %14(ptr noundef align 1 %.fca.0.extract, ptr noalias noundef nonnull readonly align 1 %2, i64 noundef %3) @@ -11975,6 +12001,7 @@ _ZN5alloc3fmt6format17h55b1a8bf61a7c713E.llvm.13848472603100435571.exit: store ptr %5, ptr %6, align 8 %11 = getelementptr inbounds nuw i8, ptr %6, i64 8 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17ha00b014cb7bb2f0fE", ptr %11, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3), !noalias !2059 store ptr @anon.916360c5c3539c9dc3d13699584f1a67.49.llvm.13848472603100435571, ptr %3, align 8, !noalias !2070 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -12250,12 +12277,14 @@ define hidden void @_ZN6rustls6client5tls1212server_hello27CompleteServerHelloHa store ptr @anon.916360c5c3539c9dc3d13699584f1a67.55, ptr %25, align 8 %77 = getelementptr inbounds nuw i8, ptr %25, i64 8 store i64 1, ptr %77, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %78 = getelementptr inbounds nuw i8, ptr %25, i64 32 store ptr null, ptr %78, align 8 %79 = getelementptr inbounds nuw i8, ptr %25, i64 16 store ptr @anon.916360c5c3539c9dc3d13699584f1a67.2.llvm.13848472603100435571, ptr %79, align 8 %80 = getelementptr inbounds nuw i8, ptr %25, i64 24 store i64 0, ptr %80, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] invoke void @_ZN3log13__private_api3log17h66329984f18a960bE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %25, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) @anon.916360c5c3539c9dc3d13699584f1a67.57, i32 noundef 93, ptr noalias noundef readonly align 8 null, i64 undef) to label %81 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp @@ -12311,12 +12340,14 @@ define hidden void @_ZN6rustls6client5tls1212server_hello27CompleteServerHelloHa store ptr @anon.916360c5c3539c9dc3d13699584f1a67.59, ptr %24, align 8 %93 = getelementptr inbounds nuw i8, ptr %24, i64 8 store i64 1, ptr %93, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %94 = getelementptr inbounds nuw i8, ptr %24, i64 32 store ptr null, ptr %94, align 8 %95 = getelementptr inbounds nuw i8, ptr %24, i64 16 store ptr @anon.916360c5c3539c9dc3d13699584f1a67.2.llvm.13848472603100435571, ptr %95, align 8 %96 = getelementptr inbounds nuw i8, ptr %24, i64 24 store i64 0, ptr %96, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] invoke void @_ZN3log13__private_api3log17h66329984f18a960bE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %24, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) @anon.916360c5c3539c9dc3d13699584f1a67.57, i32 noundef 105, ptr noalias noundef readonly align 8 null, i64 undef) to label %97 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp @@ -12453,12 +12484,14 @@ define hidden void @_ZN6rustls6client5tls1212server_hello27CompleteServerHelloHa store ptr @anon.916360c5c3539c9dc3d13699584f1a67.61, ptr %22, align 8 %146 = getelementptr inbounds nuw i8, ptr %22, i64 8 store i64 1, ptr %146, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %147 = getelementptr inbounds nuw i8, ptr %22, i64 32 store ptr null, ptr %147, align 8 %148 = getelementptr inbounds nuw i8, ptr %22, i64 16 store ptr @anon.916360c5c3539c9dc3d13699584f1a67.2.llvm.13848472603100435571, ptr %148, align 8 %149 = getelementptr inbounds nuw i8, ptr %22, i64 24 store i64 0, ptr %149, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] invoke void @_ZN3log13__private_api3log17h66329984f18a960bE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %22, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) @anon.916360c5c3539c9dc3d13699584f1a67.57, i32 noundef 111, ptr noalias noundef readonly align 8 null, i64 undef) to label %150 unwind label %.thread243 @@ -14058,12 +14091,14 @@ _ZN6rustls7hash_hs13HandshakeHash11add_message17h96486aaaeca9d316E.exit: ; preds store ptr @anon.916360c5c3539c9dc3d13699584f1a67.73, ptr %10, align 8, !alias.scope !2357, !noalias !2360 %63 = getelementptr inbounds nuw i8, ptr %10, i64 8 store i64 1, ptr %63, align 8, !alias.scope !2357, !noalias !2360 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %64 = getelementptr inbounds nuw i8, ptr %10, i64 32 store ptr null, ptr %64, align 8, !alias.scope !2357, !noalias !2360 %65 = getelementptr inbounds nuw i8, ptr %10, i64 16 store ptr %9, ptr %65, align 8, !alias.scope !2357, !noalias !2360 %66 = getelementptr inbounds nuw i8, ptr %10, i64 24 store i64 1, ptr %66, align 8, !alias.scope !2357, !noalias !2360 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] invoke void @_ZN3log13__private_api3log17h66329984f18a960bE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %10, i64 noundef 5, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) @anon.916360c5c3539c9dc3d13699584f1a67.75, i32 noundef 376, ptr noalias noundef readonly align 8 null, i64 undef) to label %67 unwind label %131 @@ -14549,10 +14584,12 @@ define void @"_ZN142_$LT$rustls..client..tls12..ExpectServerKx$u20$as$u20$rustls 32: ; preds = %._crit_edge, %.thread %.pre-phi = phi i64 [ %.pre229, %._crit_edge ], [ %18, %.thread ] - %.sroa.610.0192.ph = phi ptr [ %.sroa.610.0.copyload, %._crit_edge ], [ %26, %.thread ] + %.sroa.610.0192 = phi ptr [ %.sroa.610.0.copyload, %._crit_edge ], [ %26, %.thread ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.610.0192, i64 8) ] call void @llvm.lifetime.end.p0(i64 7, ptr nonnull %.sroa.6) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.8) - %33 = icmp ne ptr %.sroa.610.0192.ph, null + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.610.0192, i64 8) ] + %33 = icmp ne ptr %.sroa.610.0192, null tail call void @llvm.assume(i1 %33) %34 = getelementptr inbounds nuw i8, ptr %1, i64 192 tail call void @llvm.experimental.noalias.scope.decl(metadata !2404) @@ -14630,7 +14667,7 @@ _ZN6rustls7hash_hs13HandshakeHash11add_message17h96486aaaeca9d316E.exit: ; preds %61 = getelementptr inbounds nuw i8, ptr %60, i64 80 %62 = load i8, ptr %61, align 8, !range !281, !noundef !4 %63 = trunc nuw i8 %62 to i1 - invoke void @_ZN6rustls4msgs9handshake24ServerKeyExchangePayload16unwrap_given_kxa17h06dd5d3c81de5eebE(ptr noalias nocapture noundef nonnull sret({ i64, [12 x i64] }) align 8 dereferenceable(104) %14, ptr noalias noundef nonnull readonly align 8 dereferenceable(104) %.sroa.610.0192.ph, i1 noundef zeroext %63) + invoke void @_ZN6rustls4msgs9handshake24ServerKeyExchangePayload16unwrap_given_kxa17h06dd5d3c81de5eebE(ptr noalias nocapture noundef nonnull sret({ i64, [12 x i64] }) align 8 dereferenceable(104) %14, ptr noalias noundef nonnull readonly align 8 dereferenceable(104) %.sroa.610.0192, i1 noundef zeroext %63) to label %64 unwind label %30 64: ; preds = %_ZN6rustls7hash_hs13HandshakeHash11add_message17h96486aaaeca9d316E.exit @@ -14729,12 +14766,14 @@ _ZN6rustls7hash_hs13HandshakeHash11add_message17h96486aaaeca9d316E.exit: ; preds store ptr @anon.916360c5c3539c9dc3d13699584f1a67.79, ptr %11, align 8, !alias.scope !2441, !noalias !2444 %92 = getelementptr inbounds nuw i8, ptr %11, i64 8 store i64 1, ptr %92, align 8, !alias.scope !2441, !noalias !2444 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %93 = getelementptr inbounds nuw i8, ptr %11, i64 32 store ptr null, ptr %93, align 8, !alias.scope !2441, !noalias !2444 %94 = getelementptr inbounds nuw i8, ptr %11, i64 16 store ptr %10, ptr %94, align 8, !alias.scope !2441, !noalias !2444 %95 = getelementptr inbounds nuw i8, ptr %11, i64 24 store i64 1, ptr %95, align 8, !alias.scope !2441, !noalias !2444 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] invoke void @_ZN3log13__private_api3log17h66329984f18a960bE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %11, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) @anon.916360c5c3539c9dc3d13699584f1a67.75, i32 noundef 460, ptr noalias noundef readonly align 8 null, i64 undef) to label %96 unwind label %155 @@ -14818,12 +14857,14 @@ _ZN6rustls7hash_hs13HandshakeHash11add_message17h96486aaaeca9d316E.exit: ; preds store ptr @anon.916360c5c3539c9dc3d13699584f1a67.82, ptr %9, align 8, !alias.scope !2450, !noalias !2453 %133 = getelementptr inbounds nuw i8, ptr %9, i64 8 store i64 2, ptr %133, align 8, !alias.scope !2450, !noalias !2453 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %134 = getelementptr inbounds nuw i8, ptr %9, i64 32 store ptr null, ptr %134, align 8, !alias.scope !2450, !noalias !2453 %135 = getelementptr inbounds nuw i8, ptr %9, i64 16 store ptr %8, ptr %135, align 8, !alias.scope !2450, !noalias !2453 %136 = getelementptr inbounds nuw i8, ptr %9, i64 24 store i64 2, ptr %136, align 8, !alias.scope !2450, !noalias !2453 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] invoke void @_ZN3log13__private_api3log17h66329984f18a960bE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %9, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) @anon.916360c5c3539c9dc3d13699584f1a67.75, i32 noundef 463, ptr noalias noundef readonly align 8 null, i64 undef) to label %137 unwind label %155 @@ -16489,7 +16530,7 @@ define void @"_ZN152_$LT$rustls..client..tls12..ExpectCertificateRequest$u20$as$ ._crit_edge: ; preds = %22 %.pre = load i64, ptr %3, align 8, !range !132, !alias.scope !2763, !noalias !2766 - %.pre118 = add i64 %.pre, 9223372036854775807 + %.pre119 = add i64 %.pre, 9223372036854775807 br label %26 24: ; preds = %45, %32, %79, %54, %20 @@ -16504,13 +16545,15 @@ define void @"_ZN152_$LT$rustls..client..tls12..ExpectCertificateRequest$u20$as$ to label %"_ZN4core3ptr51drop_in_place$LT$rustls..msgs..message..Message$GT$17he5c98e835734cfb6E.exit" unwind label %126 26: ; preds = %._crit_edge, %.thread - %.pre-phi = phi i64 [ %.pre118, %._crit_edge ], [ %13, %.thread ] - %.sroa.610.0107.ph = phi ptr [ %.sroa.610.0.copyload, %._crit_edge ], [ %21, %.thread ] + %.pre-phi = phi i64 [ %.pre119, %._crit_edge ], [ %13, %.thread ] + %.sroa.610.0107 = phi ptr [ %.sroa.610.0.copyload, %._crit_edge ], [ %21, %.thread ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.610.0107, i64 8) ] call void @llvm.lifetime.end.p0(i64 7, ptr nonnull %.sroa.6) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.8) - %27 = icmp ne ptr %.sroa.610.0107.ph, null + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.610.0107, i64 8) ] + %27 = icmp ne ptr %.sroa.610.0107, null tail call void @llvm.assume(i1 %27) - store ptr %.sroa.610.0107.ph, ptr %11, align 8 + store ptr %.sroa.610.0107, ptr %11, align 8 %28 = getelementptr inbounds nuw i8, ptr %1, i64 248 tail call void @llvm.experimental.noalias.scope.decl(metadata !2766) tail call void @llvm.experimental.noalias.scope.decl(metadata !2763) @@ -16579,15 +16622,15 @@ define void @"_ZN152_$LT$rustls..client..tls12..ExpectCertificateRequest$u20$as$ call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.438.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.438, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) invoke void @"_ZN4core3ptr58drop_in_place$LT$rustls..msgs..message..MessagePayload$GT$17h6de0f8096c3e035fE.llvm.4248407042397360440"(ptr noalias noundef nonnull align 8 dereferenceable(192) %3) - to label %"_ZN4core3ptr51drop_in_place$LT$rustls..msgs..message..Message$GT$17he5c98e835734cfb6E.exit83" unwind label %.thread121 + to label %"_ZN4core3ptr51drop_in_place$LT$rustls..msgs..message..Message$GT$17he5c98e835734cfb6E.exit83" unwind label %.thread122 -.thread121: ; preds = %52 +.thread122: ; preds = %52 %53 = landingpad { ptr, i32 } cleanup br label %128 54: ; preds = %76, %85 - %55 = phi ptr [ %.sroa.610.0107.ph, %76 ], [ %.pre117, %85 ] + %55 = phi ptr [ %.sroa.610.0107, %76 ], [ %.pre118, %85 ] %56 = getelementptr inbounds nuw i8, ptr %1, i64 336 %57 = load ptr, ptr %56, align 8, !nonnull !4, !noundef !4 %58 = getelementptr inbounds nuw i8, ptr %57, i64 80 @@ -16601,7 +16644,7 @@ define void @"_ZN152_$LT$rustls..client..tls12..ExpectCertificateRequest$u20$as$ %66 = getelementptr i8, ptr %59, i64 %65 %67 = getelementptr i8, ptr %66, i64 16 %68 = getelementptr inbounds nuw i8, ptr %55, i64 56 - %69 = load ptr, ptr %68, align 8, !nonnull !4, !noundef !4 + %69 = load ptr, ptr %68, align 8, !nonnull !4, !align !5, !noundef !4 %70 = getelementptr inbounds nuw i8, ptr %55, i64 64 %71 = load i64, ptr %70, align 8, !noundef !4 %72 = getelementptr inbounds nuw i8, ptr %55, i64 32 @@ -16629,19 +16672,21 @@ define void @"_ZN152_$LT$rustls..client..tls12..ExpectCertificateRequest$u20$as$ store ptr @anon.916360c5c3539c9dc3d13699584f1a67.87, ptr %9, align 8, !alias.scope !2788, !noalias !2791 %81 = getelementptr inbounds nuw i8, ptr %9, i64 8 store i64 1, ptr %81, align 8, !alias.scope !2788, !noalias !2791 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %82 = getelementptr inbounds nuw i8, ptr %9, i64 32 store ptr null, ptr %82, align 8, !alias.scope !2788, !noalias !2791 %83 = getelementptr inbounds nuw i8, ptr %9, i64 16 store ptr %8, ptr %83, align 8, !alias.scope !2788, !noalias !2791 %84 = getelementptr inbounds nuw i8, ptr %9, i64 24 store i64 1, ptr %84, align 8, !alias.scope !2788, !noalias !2791 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] invoke void @_ZN3log13__private_api3log17h66329984f18a960bE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %9, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) @anon.916360c5c3539c9dc3d13699584f1a67.75, i32 noundef 733, ptr noalias noundef readonly align 8 null, i64 undef) to label %85 unwind label %24 85: ; preds = %79 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) - %.pre117 = load ptr, ptr %11, align 8 + %.pre118 = load ptr, ptr %11, align 8 br label %54 86: ; preds = %54 @@ -16738,7 +16783,7 @@ define void @"_ZN152_$LT$rustls..client..tls12..ExpectCertificateRequest$u20$as$ to label %"_ZN4core3ptr93drop_in_place$LT$alloc..boxed..Box$LT$rustls..client..tls12..ExpectCertificateRequest$GT$$GT$17hcbedd2faad69670eE.exit" unwind label %124 common.resume: ; preds = %141, %124 - %common.resume.op = phi { ptr, i32 } [ %125, %124 ], [ %.pn119, %141 ] + %common.resume.op = phi { ptr, i32 } [ %125, %124 ], [ %.pn120, %141 ] resume { ptr, i32 } %common.resume.op 124: ; preds = %"_ZN4core3ptr51drop_in_place$LT$rustls..msgs..message..Message$GT$17he5c98e835734cfb6E.exit83" @@ -16751,58 +16796,58 @@ common.resume: ; preds = %141, %124 tail call void @__rust_dealloc(ptr noundef nonnull %1, i64 noundef 464, i64 noundef 8) #26 br label %123 -126: ; preds = %137, %133, %.body, %.thread116, %.thread115, %.thread114, %.thread113 +126: ; preds = %137, %133, %.body, %.thread117, %.thread116, %.thread115, %.thread114 %127 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #28 unreachable -128: ; preds = %.thread121, %"_ZN4core3ptr51drop_in_place$LT$rustls..msgs..message..Message$GT$17he5c98e835734cfb6E.exit" - %.pn120 = phi { ptr, i32 } [ %eh.lpad-body, %"_ZN4core3ptr51drop_in_place$LT$rustls..msgs..message..Message$GT$17he5c98e835734cfb6E.exit" ], [ %53, %.thread121 ] +128: ; preds = %.thread122, %"_ZN4core3ptr51drop_in_place$LT$rustls..msgs..message..Message$GT$17he5c98e835734cfb6E.exit" + %.pn121 = phi { ptr, i32 } [ %eh.lpad-body, %"_ZN4core3ptr51drop_in_place$LT$rustls..msgs..message..Message$GT$17he5c98e835734cfb6E.exit" ], [ %53, %.thread122 ] %129 = getelementptr inbounds nuw i8, ptr %1, i64 336 call void @llvm.experimental.noalias.scope.decl(metadata !2797) call void @llvm.experimental.noalias.scope.decl(metadata !2800) %130 = load ptr, ptr %129, align 8, !alias.scope !2803, !nonnull !4, !noundef !4 %131 = atomicrmw sub ptr %130, i64 1 release, align 8, !noalias !2803 %132 = icmp eq i64 %131, 1 - br i1 %132, label %133, label %.thread112 + br i1 %132, label %133, label %.thread113 133: ; preds = %128 fence acquire invoke void @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$9drop_slow17h42665e59fd3f8248E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %129) - to label %.thread112 unwind label %126 + to label %.thread113 unwind label %126 -.thread112: ; preds = %133, %128 +.thread113: ; preds = %133, %128 %134 = getelementptr inbounds nuw i8, ptr %1, i64 104 %135 = load i64, ptr %134, align 8, !range !72, !alias.scope !2804, !noundef !4 %136 = icmp eq i64 %135, -9223372036854775808 - br i1 %136, label %.thread113, label %137 + br i1 %136, label %.thread114, label %137 -137: ; preds = %.thread112 +137: ; preds = %.thread113 invoke void @"_ZN4core3ptr63drop_in_place$LT$rustls..msgs..persist..ClientSessionCommon$GT$17h6f6a43d59706d1bbE.llvm.4248407042397360440"(ptr noalias noundef nonnull align 8 dereferenceable(144) %134) - to label %.thread113 unwind label %126 + to label %.thread114 unwind label %126 -.thread113: ; preds = %137, %.thread112 +.thread114: ; preds = %137, %.thread113 %138 = getelementptr inbounds nuw i8, ptr %1, i64 304 invoke fastcc void @"_ZN4core3ptr62drop_in_place$LT$rustls_pki_types..server_name..ServerName$GT$17hc92ca74284c0307fE"(ptr noalias noundef align 8 dereferenceable(32) %138) #27 - to label %.thread114 unwind label %126 - -.thread114: ; preds = %.thread113 - %139 = getelementptr inbounds nuw i8, ptr %1, i64 248 - invoke void @"_ZN4core3ptr51drop_in_place$LT$rustls..hash_hs..HandshakeHash$GT$17h2bff710c7bc62226E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %139) #27 to label %.thread115 unwind label %126 .thread115: ; preds = %.thread114 - invoke void @"_ZN4core3ptr62drop_in_place$LT$rustls..client..common..ServerCertDetails$GT$17h8ee61787d748bf7eE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %1) #27 + %139 = getelementptr inbounds nuw i8, ptr %1, i64 248 + invoke void @"_ZN4core3ptr51drop_in_place$LT$rustls..hash_hs..HandshakeHash$GT$17h2bff710c7bc62226E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %139) #27 to label %.thread116 unwind label %126 .thread116: ; preds = %.thread115 + invoke void @"_ZN4core3ptr62drop_in_place$LT$rustls..client..common..ServerCertDetails$GT$17h8ee61787d748bf7eE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %1) #27 + to label %.thread117 unwind label %126 + +.thread117: ; preds = %.thread116 %140 = getelementptr inbounds nuw i8, ptr %1, i64 48 invoke void @"_ZN4core3ptr59drop_in_place$LT$rustls..client..tls12..ServerKxDetails$GT$17he877432cef06a639E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %140) #27 to label %141 unwind label %126 -141: ; preds = %121, %.thread116, %"_ZN4core3ptr51drop_in_place$LT$rustls..msgs..message..Message$GT$17he5c98e835734cfb6E.exit" - %.pn119 = phi { ptr, i32 } [ %122, %121 ], [ %.pn120, %.thread116 ], [ %eh.lpad-body, %"_ZN4core3ptr51drop_in_place$LT$rustls..msgs..message..Message$GT$17he5c98e835734cfb6E.exit" ] +141: ; preds = %121, %.thread117, %"_ZN4core3ptr51drop_in_place$LT$rustls..msgs..message..Message$GT$17he5c98e835734cfb6E.exit" + %.pn120 = phi { ptr, i32 } [ %122, %121 ], [ %.pn121, %.thread117 ], [ %eh.lpad-body, %"_ZN4core3ptr51drop_in_place$LT$rustls..msgs..message..Message$GT$17he5c98e835734cfb6E.exit" ] call void @__rust_dealloc(ptr noundef nonnull %1, i64 noundef 464, i64 noundef 8) #26 br label %common.resume } @@ -17168,12 +17213,14 @@ _ZN6rustls7hash_hs13HandshakeHash11add_message17h96486aaaeca9d316E.exit: ; preds store ptr @anon.916360c5c3539c9dc3d13699584f1a67.92, ptr %44, align 8, !alias.scope !2867, !noalias !2870 %94 = getelementptr inbounds nuw i8, ptr %44, i64 8 store i64 1, ptr %94, align 8, !alias.scope !2867, !noalias !2870 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %95 = getelementptr inbounds nuw i8, ptr %44, i64 32 store ptr null, ptr %95, align 8, !alias.scope !2867, !noalias !2870 %96 = getelementptr inbounds nuw i8, ptr %44, i64 16 store ptr %43, ptr %96, align 8, !alias.scope !2867, !noalias !2870 %97 = getelementptr inbounds nuw i8, ptr %44, i64 24 store i64 1, ptr %97, align 8, !alias.scope !2867, !noalias !2870 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] invoke void @_ZN3log13__private_api3log17h66329984f18a960bE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %44, i64 noundef 5, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) @anon.916360c5c3539c9dc3d13699584f1a67.75, i32 noundef 831, ptr noalias noundef readonly align 8 null, i64 undef) to label %98 unwind label %.thread645 @@ -17199,12 +17246,14 @@ _ZN6rustls7hash_hs13HandshakeHash11add_message17h96486aaaeca9d316E.exit: ; preds store ptr @anon.916360c5c3539c9dc3d13699584f1a67.94, ptr %42, align 8, !alias.scope !2873, !noalias !2876 %105 = getelementptr inbounds nuw i8, ptr %42, i64 8 store i64 1, ptr %105, align 8, !alias.scope !2873, !noalias !2876 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %106 = getelementptr inbounds nuw i8, ptr %42, i64 32 store ptr null, ptr %106, align 8, !alias.scope !2873, !noalias !2876 %107 = getelementptr inbounds nuw i8, ptr %42, i64 16 store ptr %41, ptr %107, align 8, !alias.scope !2873, !noalias !2876 %108 = getelementptr inbounds nuw i8, ptr %42, i64 24 store i64 1, ptr %108, align 8, !alias.scope !2873, !noalias !2876 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] invoke void @_ZN3log13__private_api3log17h66329984f18a960bE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %42, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) @anon.916360c5c3539c9dc3d13699584f1a67.75, i32 noundef 832, ptr noalias noundef readonly align 8 null, i64 undef) to label %109 unwind label %.thread645 @@ -17233,6 +17282,8 @@ _ZN6rustls7hash_hs13HandshakeHash11add_message17h96486aaaeca9d316E.exit: ; preds 120: ; preds = %119 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) + call void @llvm.assume(i1 true) [ "align"(ptr %114, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %117, i64 8) ] %121 = getelementptr inbounds nuw i8, ptr %45, i64 384 %122 = load ptr, ptr %121, align 8, !nonnull !4, !noundef !4 call void @llvm.experimental.noalias.scope.decl(metadata !2882) @@ -17518,12 +17569,14 @@ switch.lookup: ; preds = %193 store ptr @anon.916360c5c3539c9dc3d13699584f1a67.98, ptr %37, align 8, !alias.scope !2931, !noalias !2934 %240 = getelementptr inbounds nuw i8, ptr %37, i64 8 store i64 3, ptr %240, align 8, !alias.scope !2931, !noalias !2934 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %241 = getelementptr inbounds nuw i8, ptr %37, i64 32 store ptr null, ptr %241, align 8, !alias.scope !2931, !noalias !2934 %242 = getelementptr inbounds nuw i8, ptr %37, i64 16 store ptr %36, ptr %242, align 8, !alias.scope !2931, !noalias !2934 %243 = getelementptr inbounds nuw i8, ptr %37, i64 24 store i64 2, ptr %243, align 8, !alias.scope !2931, !noalias !2934 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] invoke void @_ZN3log13__private_api3log17h66329984f18a960bE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %37, i64 noundef 2, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) @anon.916360c5c3539c9dc3d13699584f1a67.75, i32 noundef 885, ptr noalias noundef readonly align 8 null, i64 undef) to label %244 unwind label %168 @@ -17744,6 +17797,7 @@ switch.lookup: ; preds = %193 303: ; preds = %300 %.fca.1.extract105 = extractvalue { ptr, ptr } %298, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.1.extract105, i64 8) ] %304 = icmp ne ptr %.fca.1.extract105, null call void @llvm.assume(i1 %304) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) @@ -19374,10 +19428,12 @@ define void @"_ZN142_$LT$rustls..client..tls12..ExpectFinished$u20$as$u20$rustls br label %.body63 57: ; preds = %48, %.thread - %.sroa.610.0111.ph = phi ptr [ %47, %.thread ], [ %.sroa.610.0.copyload, %48 ] + %.sroa.610.0111 = phi ptr [ %47, %.thread ], [ %.sroa.610.0.copyload, %48 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.610.0111, i64 8) ] call void @llvm.lifetime.end.p0(i64 7, ptr nonnull %.sroa.6) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.8) - %58 = icmp ne ptr %.sroa.610.0111.ph, null + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.610.0111, i64 8) ] + %58 = icmp ne ptr %.sroa.610.0111, null tail call void @llvm.assume(i1 %58) %59 = load ptr, ptr %2, align 8, !nonnull !4, !align !5, !noundef !4 tail call void @llvm.experimental.noalias.scope.decl(metadata !3145) @@ -19513,9 +19569,9 @@ _ZN6rustls7hash_hs13HandshakeHash12current_hash17hff3704beb97df9f2E.exit: ; pred %.val = load ptr, ptr %100, align 8, !nonnull !4, !noundef !4 %101 = getelementptr inbounds nuw i8, ptr %34, i64 16 %.val55 = load i64, ptr %101, align 8, !noundef !4 - %.sroa.0.0.in.i = getelementptr inbounds nuw i8, ptr %.sroa.610.0111.ph, i64 8 + %.sroa.0.0.in.i = getelementptr inbounds nuw i8, ptr %.sroa.610.0111, i64 8 %.sroa.0.0.i = load ptr, ptr %.sroa.0.0.in.i, align 8, !alias.scope !3191, !nonnull !4, !noundef !4 - %.sroa.3.0.in.i = getelementptr inbounds nuw i8, ptr %.sroa.610.0111.ph, i64 16 + %.sroa.3.0.in.i = getelementptr inbounds nuw i8, ptr %.sroa.610.0111, i64 16 %.sroa.3.0.i = load i64, ptr %.sroa.3.0.in.i, align 8, !alias.scope !3191, !noundef !4 call void @llvm.experimental.noalias.scope.decl(metadata !3194) call void @llvm.experimental.noalias.scope.decl(metadata !3197) @@ -19808,12 +19864,14 @@ _ZN6rustls7hash_hs13HandshakeHash11add_message17h96486aaaeca9d316E.exit: ; preds store ptr @anon.916360c5c3539c9dc3d13699584f1a67.103, ptr %24, align 8, !noalias !3243 %196 = getelementptr inbounds nuw i8, ptr %24, i64 8 store i64 1, ptr %196, align 8, !noalias !3243 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %197 = getelementptr inbounds nuw i8, ptr %24, i64 32 store ptr null, ptr %197, align 8, !noalias !3243 %198 = getelementptr inbounds nuw i8, ptr %24, i64 16 store ptr @anon.916360c5c3539c9dc3d13699584f1a67.2.llvm.13848472603100435571, ptr %198, align 8, !noalias !3243 %199 = getelementptr inbounds nuw i8, ptr %24, i64 24 store i64 0, ptr %199, align 8, !noalias !3243 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] invoke void @_ZN3log13__private_api3log17h66329984f18a960bE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %24, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) @anon.916360c5c3539c9dc3d13699584f1a67.75, i32 noundef 1159, ptr noalias noundef readonly align 8 null, i64 undef) to label %200 unwind label %156, !noalias !3243 @@ -20105,12 +20163,14 @@ _ZN6rustls7hash_hs13HandshakeHash11add_message17h96486aaaeca9d316E.exit: ; preds store ptr @anon.916360c5c3539c9dc3d13699584f1a67.105, ptr %22, align 8, !noalias !3243 %294 = getelementptr inbounds nuw i8, ptr %22, i64 8 store i64 1, ptr %294, align 8, !noalias !3243 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %295 = getelementptr inbounds nuw i8, ptr %22, i64 32 store ptr null, ptr %295, align 8, !noalias !3243 %296 = getelementptr inbounds nuw i8, ptr %22, i64 16 store ptr @anon.916360c5c3539c9dc3d13699584f1a67.2.llvm.13848472603100435571, ptr %296, align 8, !noalias !3243 %297 = getelementptr inbounds nuw i8, ptr %22, i64 24 store i64 0, ptr %297, align 8, !noalias !3243 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] invoke void @_ZN3log13__private_api3log17h66329984f18a960bE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %22, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) @anon.916360c5c3539c9dc3d13699584f1a67.75, i32 noundef 1166, ptr noalias noundef readonly align 8 null, i64 undef) to label %288 unwind label %283, !noalias !3243 @@ -20146,6 +20206,7 @@ _ZN6rustls7hash_hs13HandshakeHash11add_message17h96486aaaeca9d316E.exit: ; preds br i1 %.not.i.i83, label %_ZN6rustls12common_state11CommonState13start_traffic17h228a7d3f5fdec1b3E.exit, label %307 307: ; preds = %302 + call void @llvm.assume(i1 true) [ "align"(ptr %306, i64 8) ] invoke void @_ZN6rustls12common_state11CommonState15flush_plaintext17hb0dc319bf79a5d5eE.llvm.12428379203013389814(ptr noalias noundef nonnull align 8 dereferenceable(776) %59, ptr noalias noundef nonnull align 8 dereferenceable(48) %306) to label %_ZN6rustls12common_state11CommonState13start_traffic17h228a7d3f5fdec1b3E.exit unwind label %.loopexit.split-lp @@ -20965,6 +21026,7 @@ define void @_ZN6rustls6server11server_conn10connection16ServerConnection17rejec store ptr @anon.8a3f58b3f357eb979b8c01c644d44d42.237.llvm.12014582817787848890, ptr %2, align 8, !noalias !3480 %11 = getelementptr inbounds nuw i8, ptr %2, i64 8 store i64 1, ptr %11, align 8, !noalias !3480 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 8) ] %12 = getelementptr inbounds nuw i8, ptr %2, i64 32 store ptr null, ptr %12, align 8, !noalias !3480 %13 = getelementptr inbounds nuw i8, ptr %2, i64 16 @@ -21214,6 +21276,7 @@ _ZN6rustls4msgs8deframer17DeframerVecBuffer6borrow17h811d5fac516b58efE.exit.i: ; call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %33, i8 0, i64 16, i1 false), !alias.scope !3515, !noalias !3518 call void @llvm.lifetime.start.p0(i64 192, ptr nonnull %7), !noalias !3501 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6), !noalias !3501 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 1) ] invoke fastcc void @"_ZN6rustls4conn26ConnectionCore$LT$Data$GT$7deframe17h749641f7869eef24E"(ptr noalias nocapture noundef align 8 dereferenceable(32) %6, ptr noalias noundef nonnull align 8 dereferenceable(1096) %21, ptr noundef align 1 null, ptr undef, ptr noalias noundef align 8 dereferenceable(32) %8) to label %.noexc19 unwind label %.body.thread47 @@ -22193,6 +22256,7 @@ default.unreachable21: ; preds = %2 "_ZN68_$LT$alloc..sync..Arc$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h40db1feb7b29d054E.exit.i": ; preds = %62 %68 = icmp ne ptr %.val1.i, null tail call void @llvm.assume(i1 %68) + call void @llvm.assume(i1 true) [ "align"(ptr %.val1.i, i64 8) ] br label %"_ZN70_$LT$rustls..error..CertificateError$u20$as$u20$core..clone..Clone$GT$5clone17h86b79d6751d579baE.exit" "_ZN70_$LT$rustls..error..CertificateError$u20$as$u20$core..clone..Clone$GT$5clone17h86b79d6751d579baE.exit": ; preds = %59, %"_ZN68_$LT$alloc..sync..Arc$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h40db1feb7b29d054E.exit.i" @@ -22230,6 +22294,7 @@ default.unreachable21: ; preds = %2 "_ZN68_$LT$alloc..sync..Arc$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h40db1feb7b29d054E.exit.i8": ; preds = %73 %79 = icmp ne ptr %.val1.i7, null tail call void @llvm.assume(i1 %79) + call void @llvm.assume(i1 true) [ "align"(ptr %.val1.i7, i64 8) ] br label %"_ZN77_$LT$rustls..error..CertRevocationListError$u20$as$u20$core..clone..Clone$GT$5clone17hc3a2ef019d056c33E.exit" "_ZN77_$LT$rustls..error..CertRevocationListError$u20$as$u20$core..clone..Clone$GT$5clone17hc3a2ef019d056c33E.exit": ; preds = %70, %"_ZN68_$LT$alloc..sync..Arc$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h40db1feb7b29d054E.exit.i8" @@ -22294,6 +22359,7 @@ default.unreachable21: ; preds = %2 "_ZN68_$LT$alloc..sync..Arc$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h40db1feb7b29d054E.exit": ; preds = %90 %96 = icmp ne ptr %.val3, null tail call void @llvm.assume(i1 %96) + call void @llvm.assume(i1 true) [ "align"(ptr %.val3, i64 8) ] %97 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.val2, ptr %97, align 8 %98 = getelementptr inbounds nuw i8, ptr %0, i64 16 diff --git a/bench/typst-rs/optimized/4p30esqzpn2o5olu.ll b/bench/typst-rs/optimized/4p30esqzpn2o5olu.ll index fa7a210eaa0..1f1cb4cddbe 100644 --- a/bench/typst-rs/optimized/4p30esqzpn2o5olu.ll +++ b/bench/typst-rs/optimized/4p30esqzpn2o5olu.ll @@ -33144,6 +33144,7 @@ define hidden void @"_ZN72_$LT$gif..encoder..Encoder$LT$W$GT$$u20$as$u20$core..o "_ZN3gif7encoder16Encoder$LT$W$GT$13write_trailer17hda9cb4bc3d7e7199E.exit": ; preds = %1 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %2), !noalias !10519 store i8 59, ptr %2, align 1, !noalias !10519 + call void @llvm.assume(i1 true) [ "align"(ptr %4, i64 8) ] %5 = call noundef ptr @_ZN3std2io5Write9write_all17h7d41d69a916edaeeE(ptr noalias noundef nonnull align 8 dereferenceable(32) %4, ptr noalias noundef nonnull readonly align 1 %2, i64 noundef 1), !noalias !10524 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %2), !noalias !10519 %6 = ptrtoint ptr %5 to i64 @@ -46026,7 +46027,7 @@ attributes #28 = { noinline } !10521 = distinct !{!10521, !"_ZN58_$LT$W$u20$as$u20$gif..traits..WriteBytesExt$LT$u8$GT$$GT$8write_le17hd038b8e1d4884f74E.llvm.1563996087720595280"} !10522 = distinct !{!10522, !10523, !"_ZN3gif7encoder16Encoder$LT$W$GT$13write_trailer17hda9cb4bc3d7e7199E: argument 0"} !10523 = distinct !{!10523, !"_ZN3gif7encoder16Encoder$LT$W$GT$13write_trailer17hda9cb4bc3d7e7199E"} -!10524 = !{!10525, !10522} +!10524 = !{!10525} !10525 = distinct !{!10525, !10526, !"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hb6911dba0d5832f9E.llvm.1563996087720595280: argument 0"} !10526 = distinct !{!10526, !"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17hb6911dba0d5832f9E.llvm.1563996087720595280"} !10527 = !{!10528} diff --git a/bench/unicode-normalization-rs/optimized/2dhzw0mhmvlvodqn.ll b/bench/unicode-normalization-rs/optimized/2dhzw0mhmvlvodqn.ll index a62c621bc59..7a701abc26c 100644 --- a/bench/unicode-normalization-rs/optimized/2dhzw0mhmvlvodqn.ll +++ b/bench/unicode-normalization-rs/optimized/2dhzw0mhmvlvodqn.ll @@ -41,7 +41,7 @@ define hidden { ptr, i64 } @"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20 br i1 %8, label %15, label %10 9: ; preds = %5 - tail call void @_ZN4core5slice5index22slice_index_order_fail17hcfcb08cd5efc8d4cE(i64 noundef %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #6 + tail call void @_ZN4core5slice5index22slice_index_order_fail17hcfcb08cd5efc8d4cE(i64 noundef %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #7 unreachable 10: ; preds = %7 @@ -52,7 +52,7 @@ define hidden { ptr, i64 } @"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20 ret { ptr, i64 } %14 15: ; preds = %7 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %1, i64 noundef %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #6 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %1, i64 noundef %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #7 unreachable } @@ -240,11 +240,11 @@ _ZN21unicode_normalization12perfect_hash10mph_lookup17h9605c5b766c31ba8E.llvm.33 br i1 %24, label %25, label %"_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit" 25: ; preds = %22 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.sroa.58.0.extract.shift12, i64 noundef %23, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.8.llvm.3355593342274400970) #6, !noalias !21 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.sroa.58.0.extract.shift12, i64 noundef %23, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.8.llvm.3355593342274400970) #7, !noalias !21 unreachable 26: ; preds = %_ZN21unicode_normalization12perfect_hash10mph_lookup17h9605c5b766c31ba8E.llvm.3355593342274400970.exit - tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %20, i64 noundef 3406, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.9.llvm.3355593342274400970) #6 + tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %20, i64 noundef 3406, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.9.llvm.3355593342274400970) #7 unreachable "_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit": ; preds = %22 @@ -254,6 +254,7 @@ _ZN21unicode_normalization12perfect_hash10mph_lookup17h9605c5b766c31ba8E.llvm.33 _ZN21unicode_normalization12perfect_hash10mph_lookup17h9605c5b766c31ba8E.llvm.3355593342274400970.exit.thread: ; preds = %1, %"_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit" %.sroa.3.0 = phi i64 [ %.sroa.58.0.extract.shift12, %"_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit" ], [ undef, %1 ] %.sroa.0.0 = phi ptr [ %27, %"_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit" ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0, i64 4) ] %28 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0, 0 %29 = insertvalue { ptr, i64 } %28, i64 %.sroa.3.0, 1 ret { ptr, i64 } %29 @@ -272,7 +273,7 @@ define hidden { ptr, i64 } @"_ZN21unicode_normalization7lookups26canonical_fully br i1 %8, label %9, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17he1d2e0fc4a523fc5E.llvm.3355593342274400970.exit" 9: ; preds = %5 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %7, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.8.llvm.3355593342274400970) #6, !noalias !24 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %7, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.8.llvm.3355593342274400970) #7, !noalias !24 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17he1d2e0fc4a523fc5E.llvm.3355593342274400970.exit": ; preds = %5 @@ -282,7 +283,7 @@ define hidden { ptr, i64 } @"_ZN21unicode_normalization7lookups26canonical_fully ret { ptr, i64 } %12 13: ; preds = %2 - tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %3, i64 noundef 3406, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.9.llvm.3355593342274400970) #6 + tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %3, i64 noundef 3406, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.9.llvm.3355593342274400970) #7 unreachable } @@ -325,11 +326,11 @@ _ZN21unicode_normalization12perfect_hash10mph_lookup17h9605c5b766c31ba8E.llvm.33 br i1 %24, label %25, label %"_ZN21unicode_normalization7lookups30compatibility_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h1cb84bb88a75d1a0E.llvm.3355593342274400970.exit" 25: ; preds = %22 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.sroa.58.0.extract.shift12, i64 noundef %23, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.13.llvm.3355593342274400970) #6, !noalias !32 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.sroa.58.0.extract.shift12, i64 noundef %23, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.13.llvm.3355593342274400970) #7, !noalias !32 unreachable 26: ; preds = %_ZN21unicode_normalization12perfect_hash10mph_lookup17h9605c5b766c31ba8E.llvm.3355593342274400970.exit - tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %20, i64 noundef 5735, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.14.llvm.3355593342274400970) #6 + tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %20, i64 noundef 5735, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.14.llvm.3355593342274400970) #7 unreachable "_ZN21unicode_normalization7lookups30compatibility_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h1cb84bb88a75d1a0E.llvm.3355593342274400970.exit": ; preds = %22 @@ -339,6 +340,7 @@ _ZN21unicode_normalization12perfect_hash10mph_lookup17h9605c5b766c31ba8E.llvm.33 _ZN21unicode_normalization12perfect_hash10mph_lookup17h9605c5b766c31ba8E.llvm.3355593342274400970.exit.thread: ; preds = %1, %"_ZN21unicode_normalization7lookups30compatibility_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h1cb84bb88a75d1a0E.llvm.3355593342274400970.exit" %.sroa.3.0 = phi i64 [ %.sroa.58.0.extract.shift12, %"_ZN21unicode_normalization7lookups30compatibility_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h1cb84bb88a75d1a0E.llvm.3355593342274400970.exit" ], [ undef, %1 ] %.sroa.0.0 = phi ptr [ %27, %"_ZN21unicode_normalization7lookups30compatibility_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h1cb84bb88a75d1a0E.llvm.3355593342274400970.exit" ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0, i64 4) ] %28 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0, 0 %29 = insertvalue { ptr, i64 } %28, i64 %.sroa.3.0, 1 ret { ptr, i64 } %29 @@ -357,7 +359,7 @@ define hidden { ptr, i64 } @"_ZN21unicode_normalization7lookups30compatibility_f br i1 %8, label %9, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17he1d2e0fc4a523fc5E.llvm.3355593342274400970.exit" 9: ; preds = %5 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %7, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.13.llvm.3355593342274400970) #6, !noalias !35 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %7, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.13.llvm.3355593342274400970) #7, !noalias !35 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17he1d2e0fc4a523fc5E.llvm.3355593342274400970.exit": ; preds = %5 @@ -367,7 +369,7 @@ define hidden { ptr, i64 } @"_ZN21unicode_normalization7lookups30compatibility_f ret { ptr, i64 } %12 13: ; preds = %2 - tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %3, i64 noundef 5735, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.14.llvm.3355593342274400970) #6 + tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %3, i64 noundef 5735, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.14.llvm.3355593342274400970) #7 unreachable } @@ -410,11 +412,11 @@ _ZN21unicode_normalization12perfect_hash10mph_lookup17h9605c5b766c31ba8E.llvm.33 br i1 %24, label %25, label %"_ZN21unicode_normalization7lookups36cjk_compat_variants_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h11e9bd9139359a17E.exit" 25: ; preds = %22 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.sroa.58.0.extract.shift12, i64 noundef %23, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.18) #6, !noalias !43 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.sroa.58.0.extract.shift12, i64 noundef %23, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.18) #7, !noalias !43 unreachable 26: ; preds = %_ZN21unicode_normalization12perfect_hash10mph_lookup17h9605c5b766c31ba8E.llvm.3355593342274400970.exit - tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %20, i64 noundef 2004, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.19) #6 + tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %20, i64 noundef 2004, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.19) #7 unreachable "_ZN21unicode_normalization7lookups36cjk_compat_variants_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h11e9bd9139359a17E.exit": ; preds = %22 @@ -424,6 +426,7 @@ _ZN21unicode_normalization12perfect_hash10mph_lookup17h9605c5b766c31ba8E.llvm.33 _ZN21unicode_normalization12perfect_hash10mph_lookup17h9605c5b766c31ba8E.llvm.3355593342274400970.exit.thread: ; preds = %1, %"_ZN21unicode_normalization7lookups36cjk_compat_variants_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h11e9bd9139359a17E.exit" %.sroa.3.0 = phi i64 [ %.sroa.58.0.extract.shift12, %"_ZN21unicode_normalization7lookups36cjk_compat_variants_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h11e9bd9139359a17E.exit" ], [ undef, %1 ] %.sroa.0.0 = phi ptr [ %27, %"_ZN21unicode_normalization7lookups36cjk_compat_variants_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h11e9bd9139359a17E.exit" ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0, i64 4) ] %28 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0, 0 %29 = insertvalue { ptr, i64 } %28, i64 %.sroa.3.0, 1 ret { ptr, i64 } %29 @@ -507,7 +510,7 @@ define hidden noundef i32 @_ZN21unicode_normalization12perfect_hash10mph_lookup1 br i1 %24, label %26, label %32, !prof !51 25: ; preds = %6 - tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %12, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.25) #6 + tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %12, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.25) #7 unreachable 26: ; preds = %14 @@ -520,7 +523,7 @@ define hidden noundef i32 @_ZN21unicode_normalization12perfect_hash10mph_lookup1 ret i32 %spec.select 32: ; preds = %14 - tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %23, i64 noundef %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.26) #6 + tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %23, i64 noundef %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.26) #7 unreachable } @@ -549,7 +552,7 @@ define hidden i48 @_ZN21unicode_normalization12perfect_hash10mph_lookup17h9605c5 br i1 %24, label %26, label %29, !prof !51 25: ; preds = %6 - tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %12, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.25) #6 + tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %12, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.25) #7 unreachable 26: ; preds = %14 @@ -560,7 +563,7 @@ define hidden i48 @_ZN21unicode_normalization12perfect_hash10mph_lookup17h9605c5 br i1 %28, label %30, label %33 29: ; preds = %14 - tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %23, i64 noundef %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.26) #6 + tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %23, i64 noundef %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.26) #7 unreachable 30: ; preds = %26 @@ -604,7 +607,7 @@ define hidden noundef i8 @_ZN21unicode_normalization12perfect_hash10mph_lookup17 br i1 %24, label %26, label %32, !prof !51 25: ; preds = %6 - tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %12, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.25) #6 + tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %12, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.25) #7 unreachable 26: ; preds = %14 @@ -617,7 +620,7 @@ define hidden noundef i8 @_ZN21unicode_normalization12perfect_hash10mph_lookup17 ret i8 %spec.select 32: ; preds = %14 - tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %23, i64 noundef %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.26) #6 + tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %23, i64 noundef %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.26) #7 unreachable } @@ -636,16 +639,20 @@ declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ; Function Attrs: cold noreturn nonlazybind uwtable declare void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #4 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #5 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #5 +declare void @llvm.experimental.noalias.scope.decl(metadata) #6 attributes #0 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(inaccessiblemem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #6 = { noreturn } +attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #6 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #7 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/unicode-normalization-rs/optimized/kwscsepwptyv51i.ll b/bench/unicode-normalization-rs/optimized/kwscsepwptyv51i.ll index f84fb453357..fa5d390bb4f 100644 --- a/bench/unicode-normalization-rs/optimized/kwscsepwptyv51i.ll +++ b/bench/unicode-normalization-rs/optimized/kwscsepwptyv51i.ll @@ -138,7 +138,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator4fold17h174e2c69d9c944 %.sroa.58.0.extract.trunc.i.i.i = zext nneg i48 %.sroa.58.0.extract.shift.i.i.i to i64 %60 = sub nuw nsw i64 5735, %57 %61 = icmp samesign ult i64 %60, %.sroa.58.0.extract.trunc.i.i.i - br i1 %61, label %62, label %"_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit.i.i.i.i.i" + br i1 %61, label %62, label %"_ZN4core6option15Option$LT$T$GT$7or_else17h166c11b40b4c22e0E.exit.thread.i.i" 62: ; preds = %59 tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.sroa.58.0.extract.trunc.i.i.i, i64 noundef %60, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.13.llvm.3355593342274400970) #12, !noalias !30 @@ -149,6 +149,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator4fold17h174e2c69d9c944 unreachable 64: ; preds = %54 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] %65 = tail call i48 @_ZN21unicode_normalization12perfect_hash10mph_lookup17h9605c5b766c31ba8E.llvm.3355593342274400970(i32 noundef range(i32 1114113, 1114112) %.0.i10.i, ptr noalias noundef nonnull readonly align 2 @anon.1bf8cbd9db60c063894021140588f89d.4.llvm.3355593342274400970, i64 noundef 2061, ptr noalias noundef nonnull readonly align 4 @anon.1bf8cbd9db60c063894021140588f89d.5.llvm.3355593342274400970, i64 noundef 2061, i48 0), !noalias !27 %trunc.i.i.i.i.i = trunc i48 %65 to i16 %switch.i.i.i.i.i = icmp eq i16 %trunc.i.i.i.i.i, 0 @@ -167,7 +168,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator4fold17h174e2c69d9c944 %.sroa.58.0.extract.trunc.i.i.i.i.i = zext nneg i48 %.sroa.58.0.extract.shift.i.i.i.i.i to i64 %70 = sub nuw nsw i64 3406, %67 %71 = icmp samesign ult i64 %70, %.sroa.58.0.extract.trunc.i.i.i.i.i - br i1 %71, label %72, label %"_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit.i.i.i.i.i" + br i1 %71, label %72, label %"_ZN4core6option15Option$LT$T$GT$7or_else17h166c11b40b4c22e0E.exit.thread.i.i" 72: ; preds = %69 tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.sroa.58.0.extract.trunc.i.i.i.i.i, i64 noundef %70, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.1bf8cbd9db60c063894021140588f89d.8.llvm.3355593342274400970) #12, !noalias !33 @@ -185,13 +186,14 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator4fold17h174e2c69d9c944 br label %_ZN21unicode_normalization11stream_safe20classify_nonstarters17hdc3d352c4dbebd42E.exit.i 76: ; preds = %64 + call void @llvm.assume(i1 true) [ "align"(ptr null, i64 4) ] %77 = tail call noundef i8 @_ZN21unicode_normalization12perfect_hash10mph_lookup17he7426c414cdc4c14E.llvm.3355593342274400970(i32 noundef range(i32 1114113, 1114112) %.0.i10.i, ptr noalias noundef nonnull readonly align 2 @anon.1bf8cbd9db60c063894021140588f89d.0.llvm.3355593342274400970, i64 noundef 922, ptr noalias noundef nonnull readonly align 4 @anon.1bf8cbd9db60c063894021140588f89d.1.llvm.3355593342274400970, i64 noundef 922, i8 noundef 0), !noalias !27 %78 = icmp ne i8 %77, 0 %.5.i.i = zext i1 %78 to i64 br label %_ZN21unicode_normalization11stream_safe20classify_nonstarters17hdc3d352c4dbebd42E.exit.i -"_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit.i.i.i.i.i": ; preds = %69, %59 - %.sroa.3.0.i.i.pn.i.ph.i.i = phi i64 [ %.sroa.58.0.extract.trunc.i.i.i.i.i, %69 ], [ %.sroa.58.0.extract.trunc.i.i.i, %59 ] +"_ZN4core6option15Option$LT$T$GT$7or_else17h166c11b40b4c22e0E.exit.thread.i.i": ; preds = %69, %59 + %.sroa.3.0.i.i.pn.i18.i.i = phi i64 [ %.sroa.58.0.extract.trunc.i.i.i, %59 ], [ %.sroa.58.0.extract.trunc.i.i.i.i.i, %69 ] switch i32 %.0.i10.i, label %_ZN21unicode_normalization6tables31stream_safe_leading_nonstarters17h846749e84f037066E.exit.i.i [ i32 832, label %79 i32 833, label %79 @@ -204,14 +206,14 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator4fold17h174e2c69d9c944 i32 65439, label %79 ] -79: ; preds = %"_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit.i.i.i.i.i", %"_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit.i.i.i.i.i", %"_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit.i.i.i.i.i", %"_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit.i.i.i.i.i", %"_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit.i.i.i.i.i" +79: ; preds = %"_ZN4core6option15Option$LT$T$GT$7or_else17h166c11b40b4c22e0E.exit.thread.i.i", %"_ZN4core6option15Option$LT$T$GT$7or_else17h166c11b40b4c22e0E.exit.thread.i.i", %"_ZN4core6option15Option$LT$T$GT$7or_else17h166c11b40b4c22e0E.exit.thread.i.i", %"_ZN4core6option15Option$LT$T$GT$7or_else17h166c11b40b4c22e0E.exit.thread.i.i", %"_ZN4core6option15Option$LT$T$GT$7or_else17h166c11b40b4c22e0E.exit.thread.i.i" br label %_ZN21unicode_normalization6tables31stream_safe_leading_nonstarters17h846749e84f037066E.exit.i.i -80: ; preds = %"_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit.i.i.i.i.i", %"_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit.i.i.i.i.i", %"_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit.i.i.i.i.i", %"_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit.i.i.i.i.i" +80: ; preds = %"_ZN4core6option15Option$LT$T$GT$7or_else17h166c11b40b4c22e0E.exit.thread.i.i", %"_ZN4core6option15Option$LT$T$GT$7or_else17h166c11b40b4c22e0E.exit.thread.i.i", %"_ZN4core6option15Option$LT$T$GT$7or_else17h166c11b40b4c22e0E.exit.thread.i.i", %"_ZN4core6option15Option$LT$T$GT$7or_else17h166c11b40b4c22e0E.exit.thread.i.i" br label %_ZN21unicode_normalization6tables31stream_safe_leading_nonstarters17h846749e84f037066E.exit.i.i -_ZN21unicode_normalization6tables31stream_safe_leading_nonstarters17h846749e84f037066E.exit.i.i: ; preds = %80, %79, %"_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit.i.i.i.i.i" - %.0.i6.i.i = phi i64 [ 2, %80 ], [ 1, %79 ], [ 0, %"_ZN21unicode_normalization7lookups26canonical_fully_decomposed28_$u7b$$u7b$closure$u7d$$u7d$17h8e2d0b0857b7106bE.llvm.3355593342274400970.exit.i.i.i.i.i" ] +_ZN21unicode_normalization6tables31stream_safe_leading_nonstarters17h846749e84f037066E.exit.i.i: ; preds = %80, %79, %"_ZN4core6option15Option$LT$T$GT$7or_else17h166c11b40b4c22e0E.exit.thread.i.i" + %.0.i6.i.i = phi i64 [ 2, %80 ], [ 1, %79 ], [ 0, %"_ZN4core6option15Option$LT$T$GT$7or_else17h166c11b40b4c22e0E.exit.thread.i.i" ] %81 = tail call noundef i8 @_ZN21unicode_normalization12perfect_hash10mph_lookup17he7426c414cdc4c14E.llvm.3355593342274400970(i32 noundef range(i32 1114113, 1114112) %.0.i10.i, ptr noalias noundef nonnull readonly align 2 @anon.1bf8cbd9db60c063894021140588f89d.22.llvm.3355593342274400970, i64 noundef 1090, ptr noalias noundef nonnull readonly align 4 @anon.1bf8cbd9db60c063894021140588f89d.23.llvm.3355593342274400970, i64 noundef 1090, i8 noundef 0), !noalias !27 %82 = zext i8 %81 to i64 br label %_ZN21unicode_normalization11stream_safe20classify_nonstarters17hdc3d352c4dbebd42E.exit.i @@ -219,7 +221,7 @@ _ZN21unicode_normalization6tables31stream_safe_leading_nonstarters17h846749e84f0 _ZN21unicode_normalization11stream_safe20classify_nonstarters17hdc3d352c4dbebd42E.exit.i: ; preds = %_ZN21unicode_normalization6tables31stream_safe_leading_nonstarters17h846749e84f037066E.exit.i.i, %76, %74, %"_ZN4core6option15Option$LT$T$GT$7or_else17hf3db5b66814f085bE.exit.thread.i", %"_ZN4core6option15Option$LT$T$GT$7or_else17hf3db5b66814f085bE.exit.thread.thread.i" %83 = phi ptr [ %50, %74 ], [ %50, %76 ], [ %50, %_ZN21unicode_normalization6tables31stream_safe_leading_nonstarters17h846749e84f037066E.exit.i.i ], [ %50, %"_ZN4core6option15Option$LT$T$GT$7or_else17hf3db5b66814f085bE.exit.thread.i" ], [ %15, %"_ZN4core6option15Option$LT$T$GT$7or_else17hf3db5b66814f085bE.exit.thread.thread.i" ] %.0.i1014.i = phi i32 [ %.0.i10.i, %74 ], [ %.0.i10.i, %76 ], [ %.0.i10.i, %_ZN21unicode_normalization6tables31stream_safe_leading_nonstarters17h846749e84f037066E.exit.i.i ], [ %.0.i10.i, %"_ZN4core6option15Option$LT$T$GT$7or_else17hf3db5b66814f085bE.exit.thread.i" ], [ %28, %"_ZN4core6option15Option$LT$T$GT$7or_else17hf3db5b66814f085bE.exit.thread.thread.i" ] - %.sroa.11.0.i = phi i64 [ %..i.i, %74 ], [ 1, %76 ], [ %.sroa.3.0.i.i.pn.i.ph.i.i, %_ZN21unicode_normalization6tables31stream_safe_leading_nonstarters17h846749e84f037066E.exit.i.i ], [ 1, %"_ZN4core6option15Option$LT$T$GT$7or_else17hf3db5b66814f085bE.exit.thread.i" ], [ 1, %"_ZN4core6option15Option$LT$T$GT$7or_else17hf3db5b66814f085bE.exit.thread.thread.i" ] + %.sroa.11.0.i = phi i64 [ %..i.i, %74 ], [ 1, %76 ], [ %.sroa.3.0.i.i.pn.i18.i.i, %_ZN21unicode_normalization6tables31stream_safe_leading_nonstarters17h846749e84f037066E.exit.i.i ], [ 1, %"_ZN4core6option15Option$LT$T$GT$7or_else17hf3db5b66814f085bE.exit.thread.i" ], [ 1, %"_ZN4core6option15Option$LT$T$GT$7or_else17hf3db5b66814f085bE.exit.thread.thread.i" ] %.sroa.8.0.i = phi i64 [ 0, %74 ], [ %.5.i.i, %76 ], [ %82, %_ZN21unicode_normalization6tables31stream_safe_leading_nonstarters17h846749e84f037066E.exit.i.i ], [ 0, %"_ZN4core6option15Option$LT$T$GT$7or_else17hf3db5b66814f085bE.exit.thread.i" ], [ 0, %"_ZN4core6option15Option$LT$T$GT$7or_else17hf3db5b66814f085bE.exit.thread.thread.i" ] %.sroa.0.0.i = phi i64 [ 0, %74 ], [ %.5.i.i, %76 ], [ %.0.i6.i.i, %_ZN21unicode_normalization6tables31stream_safe_leading_nonstarters17h846749e84f037066E.exit.i.i ], [ 0, %"_ZN4core6option15Option$LT$T$GT$7or_else17hf3db5b66814f085bE.exit.thread.i" ], [ 0, %"_ZN4core6option15Option$LT$T$GT$7or_else17hf3db5b66814f085bE.exit.thread.thread.i" ] %84 = add i64 %9, %.sroa.0.0.i diff --git a/bench/velox/optimized/ArraySum.cpp.ll b/bench/velox/optimized/ArraySum.cpp.ll index dfb9cbcfa10..9d1998378e9 100644 --- a/bench/velox/optimized/ArraySum.cpp.ll +++ b/bench/velox/optimized/ArraySum.cpp.ll @@ -5196,7 +5196,6 @@ invoke.cont46: ; preds = %invoke.cont46.sink. to label %call5.i.i.i3.i.i.i.i.noexc unwind label %lpad40 call5.i.i.i3.i.i.i.i.noexc: ; preds = %invoke.cont46 - call void @llvm.assume(i1 true) [ "align"(ptr %call5.i.i.i3.i.i.i.i58, i64 32) ] %_M_use_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i58, i64 8 store i32 1, ptr %_M_use_count.i.i.i.i.i.i, align 8, !noalias !49 %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i58, i64 12 @@ -12218,7 +12217,6 @@ entry: if.then: ; preds = %entry %index_ = getelementptr inbounds nuw i8, ptr %this, i64 160 %call5.i.i.i3.i.i.i.i = tail call noalias noundef nonnull align 32 dereferenceable(256) ptr @_ZnwmSt11align_val_t(i64 noundef 256, i64 noundef 32) #33, !noalias !101 - call void @llvm.assume(i1 true) [ "align"(ptr %call5.i.i.i3.i.i.i.i, i64 32) ] %_M_use_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i, i64 8 store i32 1, ptr %_M_use_count.i.i.i.i.i.i, align 8, !noalias !101 %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i, i64 12 @@ -12246,7 +12244,6 @@ if.else: ; preds = %entry %3 = load i64, ptr %value_, align 16 store i64 %3, ptr %ref.tmp5, align 8 %call5.i.i.i3.i.i.i.i3 = tail call noalias noundef nonnull align 32 dereferenceable(256) ptr @_ZnwmSt11align_val_t(i64 noundef 256, i64 noundef 32) #33, !noalias !104 - call void @llvm.assume(i1 true) [ "align"(ptr %call5.i.i.i3.i.i.i.i3, i64 32) ] %_M_use_count.i.i.i.i.i.i4 = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i3, i64 8 store i32 1, ptr %_M_use_count.i.i.i.i.i.i4, align 8, !noalias !104 %_M_weak_count.i.i.i.i.i.i5 = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i3, i64 12 @@ -16556,7 +16553,6 @@ entry: if.then: ; preds = %entry %index_ = getelementptr inbounds nuw i8, ptr %this, i64 160 %call5.i.i.i3.i.i.i.i = tail call noalias noundef nonnull align 32 dereferenceable(256) ptr @_ZnwmSt11align_val_t(i64 noundef 256, i64 noundef 32) #33, !noalias !149 - call void @llvm.assume(i1 true) [ "align"(ptr %call5.i.i.i3.i.i.i.i, i64 32) ] %_M_use_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i, i64 8 store i32 1, ptr %_M_use_count.i.i.i.i.i.i, align 8, !noalias !149 %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i, i64 12 @@ -16584,7 +16580,6 @@ if.else: ; preds = %entry %3 = load i64, ptr %value_, align 16 store i64 %3, ptr %ref.tmp5, align 8 %call5.i.i.i3.i.i.i.i3 = tail call noalias noundef nonnull align 32 dereferenceable(256) ptr @_ZnwmSt11align_val_t(i64 noundef 256, i64 noundef 32) #33, !noalias !152 - call void @llvm.assume(i1 true) [ "align"(ptr %call5.i.i.i3.i.i.i.i3, i64 32) ] %_M_use_count.i.i.i.i.i.i4 = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i3, i64 8 store i32 1, ptr %_M_use_count.i.i.i.i.i.i4, align 8, !noalias !152 %_M_weak_count.i.i.i.i.i.i5 = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i3, i64 12 @@ -21354,7 +21349,6 @@ invoke.cont45: ; preds = %invoke.cont45.sink. to label %call5.i.i.i3.i.i.i.i.noexc unwind label %lpad39 call5.i.i.i3.i.i.i.i.noexc: ; preds = %invoke.cont45 - call void @llvm.assume(i1 true) [ "align"(ptr %call5.i.i.i3.i.i.i.i58, i64 32) ] %_M_use_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i58, i64 8 store i32 1, ptr %_M_use_count.i.i.i.i.i.i, align 8, !noalias !174 %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i58, i64 12 @@ -27723,7 +27717,6 @@ invoke.cont45: ; preds = %invoke.cont45.sink. to label %call5.i.i.i3.i.i.i.i.noexc unwind label %lpad39 call5.i.i.i3.i.i.i.i.noexc: ; preds = %invoke.cont45 - call void @llvm.assume(i1 true) [ "align"(ptr %call5.i.i.i3.i.i.i.i58, i64 32) ] %_M_use_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i58, i64 8 store i32 1, ptr %_M_use_count.i.i.i.i.i.i, align 8, !noalias !209 %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i58, i64 12 @@ -34086,7 +34079,6 @@ invoke.cont45: ; preds = %invoke.cont45.sink. to label %call5.i.i.i3.i.i.i.i.noexc unwind label %lpad39 call5.i.i.i3.i.i.i.i.noexc: ; preds = %invoke.cont45 - call void @llvm.assume(i1 true) [ "align"(ptr %call5.i.i.i3.i.i.i.i57, i64 32) ] %_M_use_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i57, i64 8 store i32 1, ptr %_M_use_count.i.i.i.i.i.i, align 8, !noalias !244 %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i57, i64 12 diff --git a/bench/velox/optimized/InPredicate.cpp.ll b/bench/velox/optimized/InPredicate.cpp.ll index a86da5dcea4..fb89370073e 100644 --- a/bench/velox/optimized/InPredicate.cpp.ll +++ b/bench/velox/optimized/InPredicate.cpp.ll @@ -31957,7 +31957,6 @@ entry: to label %call5.i.i.i3.i.i.i.i.noexc unwind label %lpad call5.i.i.i3.i.i.i.i.noexc: ; preds = %entry - call void @llvm.assume(i1 true) [ "align"(ptr %call5.i.i.i3.i.i.i.i1, i64 32) ] %_M_use_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i1, i64 8 store i32 1, ptr %_M_use_count.i.i.i.i.i.i, align 8, !noalias !266 %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i1, i64 12 @@ -34063,7 +34062,6 @@ entry: if.then: ; preds = %entry %index_ = getelementptr inbounds nuw i8, ptr %this, i64 128 %call5.i.i.i3.i.i.i.i = tail call noalias noundef nonnull align 32 dereferenceable(224) ptr @_ZnwmSt11align_val_t(i64 noundef 224, i64 noundef 32) #38, !noalias !278 - call void @llvm.assume(i1 true) [ "align"(ptr %call5.i.i.i3.i.i.i.i, i64 32) ] %_M_use_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i, i64 8 store i32 1, ptr %_M_use_count.i.i.i.i.i.i, align 8, !noalias !278 %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i, i64 12 @@ -34092,7 +34090,6 @@ if.else: ; preds = %entry %frombool = and i8 %3, 1 store i8 %frombool, ptr %ref.tmp5, align 1 %call5.i.i.i3.i.i.i.i3 = tail call noalias noundef nonnull align 32 dereferenceable(224) ptr @_ZnwmSt11align_val_t(i64 noundef 224, i64 noundef 32) #38, !noalias !282 - call void @llvm.assume(i1 true) [ "align"(ptr %call5.i.i.i3.i.i.i.i3, i64 32) ] %_M_use_count.i.i.i.i.i.i4 = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i3, i64 8 store i32 1, ptr %_M_use_count.i.i.i.i.i.i4, align 8, !noalias !282 %_M_weak_count.i.i.i.i.i.i5 = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i3, i64 12 @@ -38183,7 +38180,6 @@ entry: if.then: ; preds = %entry %index_ = getelementptr inbounds nuw i8, ptr %this, i64 160 %call5.i.i.i3.i.i.i.i = tail call noalias noundef nonnull align 32 dereferenceable(256) ptr @_ZnwmSt11align_val_t(i64 noundef 256, i64 noundef 32) #38, !noalias !319 - call void @llvm.assume(i1 true) [ "align"(ptr %call5.i.i.i3.i.i.i.i, i64 32) ] %_M_use_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i, i64 8 store i32 1, ptr %_M_use_count.i.i.i.i.i.i, align 8, !noalias !319 %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i, i64 12 @@ -38211,7 +38207,6 @@ if.else: ; preds = %entry %3 = load i64, ptr %value_, align 16 store i64 %3, ptr %ref.tmp5, align 8 %call5.i.i.i3.i.i.i.i3 = tail call noalias noundef nonnull align 32 dereferenceable(256) ptr @_ZnwmSt11align_val_t(i64 noundef 256, i64 noundef 32) #38, !noalias !322 - call void @llvm.assume(i1 true) [ "align"(ptr %call5.i.i.i3.i.i.i.i3, i64 32) ] %_M_use_count.i.i.i.i.i.i4 = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i3, i64 8 store i32 1, ptr %_M_use_count.i.i.i.i.i.i4, align 8, !noalias !322 %_M_weak_count.i.i.i.i.i.i5 = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i3, i64 12 @@ -40760,7 +40755,6 @@ entry: to label %call5.i.i.i3.i.i.i.i.noexc unwind label %lpad call5.i.i.i3.i.i.i.i.noexc: ; preds = %entry - call void @llvm.assume(i1 true) [ "align"(ptr %call5.i.i.i3.i.i.i.i1, i64 32) ] %_M_use_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i1, i64 8 store i32 1, ptr %_M_use_count.i.i.i.i.i.i, align 8, !noalias !337 %_M_weak_count.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call5.i.i.i3.i.i.i.i1, i64 12 diff --git a/bench/yalantinglibs/optimized/channel.cpp.ll b/bench/yalantinglibs/optimized/channel.cpp.ll index de4f3f7e7ba..7f73988ba18 100644 --- a/bench/yalantinglibs/optimized/channel.cpp.ll +++ b/bench/yalantinglibs/optimized/channel.cpp.ll @@ -20386,7 +20386,6 @@ if.end36: ; preds = %for.cond17, %if.the %add.i = select i1 %cmp1.i, i64 0, i64 %sub.i %cond6.i = add i64 %add.i, %add38 %call.i = tail call noalias ptr @aligned_alloc(i64 noundef %cond.i, i64 noundef %cond6.i) #48 - call void @llvm.assume(i1 true) [ "align"(ptr %call.i, i64 %cond.i) ] %tobool.not.i = icmp eq ptr %call.i, null br i1 %tobool.not.i, label %if.then.i, label %_ZN4asio11aligned_newEmm.exit @@ -29071,7 +29070,6 @@ if.end36: ; preds = %for.cond17, %if.the %add.i = select i1 %cmp1.i, i64 0, i64 %sub.i %cond6.i = add i64 %add.i, %add38 %call.i = tail call noalias ptr @aligned_alloc(i64 noundef %cond.i, i64 noundef %cond6.i) #48 - call void @llvm.assume(i1 true) [ "align"(ptr %call.i, i64 %cond.i) ] %tobool.not.i = icmp eq ptr %call.i, null br i1 %tobool.not.i, label %if.then.i, label %_ZN4asio11aligned_newEmm.exit diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..292e9d03324 100755 --- a/scripts/setup_pre_commit_patch.sh +++ b/scripts/setup_pre_commit_patch.sh @@ -2,7 +2,7 @@ set -euo pipefail shopt -s inherit_errexit -export GITHUB_PATCH_ID="/llvm-project/commit/" +export GITHUB_PATCH_ID=llvm/llvm-project/pull/123247 export COMPTIME_MODE=0 # Please rebase manually