diff --git a/bench/actix-rs/optimized/34zqw30jnodxf0r6.ll b/bench/actix-rs/optimized/34zqw30jnodxf0r6.ll index 203a62e43eb..043c0b0e03c 100644 --- a/bench/actix-rs/optimized/34zqw30jnodxf0r6.ll +++ b/bench/actix-rs/optimized/34zqw30jnodxf0r6.ll @@ -6438,6 +6438,7 @@ define hidden noundef ptr @"_ZN10actix_http2h17encoder23MessageEncoder$LT$T$GT$6 %19 = load ptr, ptr %18, align 8, !nonnull !4 %20 = getelementptr inbounds nuw i8, ptr %19, i64 16 %.0.i.i = select i1 %17, ptr %20, ptr %2 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i.i, i64 8) ] %21 = getelementptr inbounds nuw i8, ptr %.0.i.i, i64 209 %22 = load i8, ptr %21, align 1, !noundef !4 %23 = and i8 %22, 16 diff --git a/bench/anki-rs/optimized/3tslueai5mplc1k4.ll b/bench/anki-rs/optimized/3tslueai5mplc1k4.ll index cba5a2c9678..c57ab2b993a 100644 --- a/bench/anki-rs/optimized/3tslueai5mplc1k4.ll +++ b/bench/anki-rs/optimized/3tslueai5mplc1k4.ll @@ -38,6 +38,7 @@ define noundef zeroext i1 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u2 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" @@ -126,6 +127,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 +137,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 +152,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 +171,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 +193,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 +209,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 +224,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 +243,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 +262,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 +282,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/anki-rs/optimized/fnhbc197p8edxvd.ll b/bench/anki-rs/optimized/fnhbc197p8edxvd.ll index c6d50a38ece..c8063e38f66 100644 --- a/bench/anki-rs/optimized/fnhbc197p8edxvd.ll +++ b/bench/anki-rs/optimized/fnhbc197p8edxvd.ll @@ -46,7 +46,7 @@ define void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$ ; Function Attrs: nonlazybind uwtable define void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hd9ac99099e6ed9eaE"(ptr nocapture readonly align 8 %0, ptr nocapture readonly align 8 %1) unnamed_addr #0 personality ptr @rust_eh_personality { %3 = alloca { { { { { ptr, i64 }, ptr } }, {} }, ptr }, align 8 - %.sroa.0.0.copyload = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 + %.sroa.0.0.copyload = load ptr, ptr %0, align 8, !nonnull !3, !align !4, !noundef !3 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 %.sroa.2.0.copyload = load i32, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 12 @@ -128,7 +128,7 @@ define void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$ ; Function Attrs: inlinehint nonlazybind uwtable define void @_ZN4core4iter6traits8iterator8Iterator8for_each17h35dabe438a4d9658E(ptr nocapture readonly align 8 %0, ptr nocapture readonly align 8 %1) unnamed_addr #1 personality ptr @rust_eh_personality { %3 = alloca { { { ptr, ptr, ptr } }, ptr }, align 8 - %.sroa.0.0.copyload = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 + %.sroa.0.0.copyload = load ptr, ptr %0, align 8, !nonnull !3, !align !4, !noundef !3 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 %.sroa.2.0.copyload = load i32, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 12 @@ -153,7 +153,7 @@ define void @_ZN4core4iter6traits8iterator8Iterator8for_each17h6f338cd8fa66bdefE ; Function Attrs: inlinehint nonlazybind uwtable define void @_ZN4core4iter6traits8iterator8Iterator8for_each17he73a79b5a308a79fE(ptr nocapture readonly align 8 %0, ptr nocapture readonly align 8 %1) unnamed_addr #1 personality ptr @rust_eh_personality { %3 = alloca { { { { { ptr, i64 }, ptr } }, {} }, ptr }, align 8 - %.sroa.0.0.copyload = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 + %.sroa.0.0.copyload = load ptr, ptr %0, align 8, !nonnull !3, !align !4, !noundef !3 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 %.sroa.2.0.copyload = load i32, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 12 @@ -269,7 +269,7 @@ define void @_ZN9itertools9Itertools13partition_map17ha340c6623b0f1886E(ptr noca br label %7 10: ; preds = %2 - %.sroa.0.0.copyload = load ptr, ptr %1, align 8, !nonnull !3, !noundef !3 + %.sroa.0.0.copyload = load ptr, ptr %1, align 8, !nonnull !3, !align !4, !noundef !3 %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 8 %.sroa.2.0.copyload = load i32, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %1, i64 12 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/28kpmq8k0hu4re4f.ll b/bench/clap-rs/optimized/28kpmq8k0hu4re4f.ll index da34c06a214..60420113058 100644 --- a/bench/clap-rs/optimized/28kpmq8k0hu4re4f.ll +++ b/bench/clap-rs/optimized/28kpmq8k0hu4re4f.ll @@ -223,6 +223,7 @@ define hidden noundef zeroext i1 @"_ZN116_$LT$core..iter..adapters..flatten..Fla 13: ; preds = %11 %14 = getelementptr inbounds nuw i8, ptr %12, i64 24 store ptr %14, ptr %6, align 8, !alias.scope !34, !noalias !37 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] %15 = call noundef zeroext i1 @"_ZN12clap_builder6parser7matches11matched_arg10MatchedArg14check_explicit28_$u7b$$u7b$closure$u7d$$u7d$17h334d354b4eab3195E.llvm.4786290445112235611"(ptr noalias noundef nonnull align 8 dereferenceable(16) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %12), !noalias !40 br i1 %15, label %"_ZN4core4iter8adapters7flatten26FlattenCompat$LT$I$C$U$GT$13iter_try_fold17h3176ea6fc6beb23aE.llvm.13624566248375190677.exit", label %11 @@ -271,6 +272,7 @@ define hidden noundef zeroext i1 @"_ZN116_$LT$core..iter..adapters..flatten..Fla 29: ; preds = %27 %30 = getelementptr inbounds nuw i8, ptr %28, i64 24 store ptr %30, ptr %6, align 8, !alias.scope !72, !noalias !75 + call void @llvm.assume(i1 true) [ "align"(ptr %28, i64 8) ] %31 = call noundef zeroext i1 @"_ZN12clap_builder6parser7matches11matched_arg10MatchedArg14check_explicit28_$u7b$$u7b$closure$u7d$$u7d$17h334d354b4eab3195E.llvm.4786290445112235611"(ptr noalias noundef nonnull align 8 dereferenceable(16) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %28), !noalias !78 br i1 %31, label %"_ZN4core4iter8adapters7flatten26FlattenCompat$LT$I$C$U$GT$13iter_try_fold17h3176ea6fc6beb23aE.llvm.13624566248375190677.exit", label %27 @@ -296,6 +298,7 @@ define hidden noundef zeroext i1 @"_ZN116_$LT$core..iter..adapters..flatten..Fla 39: ; preds = %37 %40 = getelementptr inbounds nuw i8, ptr %38, i64 24 store ptr %40, ptr %32, align 8, !alias.scope !87, !noalias !90 + call void @llvm.assume(i1 true) [ "align"(ptr %38, i64 8) ] %41 = call noundef zeroext i1 @"_ZN12clap_builder6parser7matches11matched_arg10MatchedArg14check_explicit28_$u7b$$u7b$closure$u7d$$u7d$17h334d354b4eab3195E.llvm.4786290445112235611"(ptr noalias noundef nonnull align 8 dereferenceable(16) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %38), !noalias !93 br i1 %41, label %"_ZN4core4iter8adapters7flatten26FlattenCompat$LT$I$C$U$GT$13iter_try_fold17h3176ea6fc6beb23aE.llvm.13624566248375190677.exit", label %37 @@ -1052,6 +1055,7 @@ define hidden noundef zeroext i1 @"_ZN4core4iter8adapters7flatten26FlattenCompat 13: ; preds = %11 %14 = getelementptr inbounds nuw i8, ptr %12, i64 24 store ptr %14, ptr %6, align 8, !alias.scope !345, !noalias !348 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] %15 = call noundef zeroext i1 @"_ZN12clap_builder6parser7matches11matched_arg10MatchedArg14check_explicit28_$u7b$$u7b$closure$u7d$$u7d$17h334d354b4eab3195E.llvm.4786290445112235611"(ptr noalias noundef nonnull align 8 dereferenceable(16) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %12), !noalias !351 br i1 %15, label %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h915945260b98e02cE.exit", label %11 @@ -1100,6 +1104,7 @@ define hidden noundef zeroext i1 @"_ZN4core4iter8adapters7flatten26FlattenCompat 29: ; preds = %27 %30 = getelementptr inbounds nuw i8, ptr %28, i64 24 store ptr %30, ptr %6, align 8, !alias.scope !382, !noalias !385 + call void @llvm.assume(i1 true) [ "align"(ptr %28, i64 8) ] %31 = call noundef zeroext i1 @"_ZN12clap_builder6parser7matches11matched_arg10MatchedArg14check_explicit28_$u7b$$u7b$closure$u7d$$u7d$17h334d354b4eab3195E.llvm.4786290445112235611"(ptr noalias noundef nonnull align 8 dereferenceable(16) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %28), !noalias !388 br i1 %31, label %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h915945260b98e02cE.exit", label %27 @@ -1125,6 +1130,7 @@ define hidden noundef zeroext i1 @"_ZN4core4iter8adapters7flatten26FlattenCompat 39: ; preds = %37 %40 = getelementptr inbounds nuw i8, ptr %38, i64 24 store ptr %40, ptr %32, align 8, !alias.scope !397, !noalias !400 + call void @llvm.assume(i1 true) [ "align"(ptr %38, i64 8) ] %41 = call noundef zeroext i1 @"_ZN12clap_builder6parser7matches11matched_arg10MatchedArg14check_explicit28_$u7b$$u7b$closure$u7d$$u7d$17h334d354b4eab3195E.llvm.4786290445112235611"(ptr noalias noundef nonnull align 8 dereferenceable(16) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %38), !noalias !403 br i1 %41, label %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold7flatten28_$u7b$$u7b$closure$u7d$$u7d$17h915945260b98e02cE.exit", label %37 @@ -1864,6 +1870,7 @@ _ZN12clap_builder7builder12value_parser11ValueParser15possible_values17h7089284e 27: ; preds = %_ZN12clap_builder7builder12value_parser11ValueParser15possible_values17h7089284e75a2055eE.exit %.fca.1.extract = extractvalue { ptr, ptr } %24, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.1.extract, i64 8) ] %28 = icmp ne ptr %.fca.1.extract, null tail call void @llvm.assume(i1 %28) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) @@ -2561,7 +2568,7 @@ define hidden void @_ZN12clap_builder7builder3arg3Arg16name_no_brackets17hc8dccb 17: ; preds = %2 %18 = getelementptr inbounds nuw i8, ptr %1, i64 352 - %19 = load ptr, ptr %18, align 8, !nonnull !4, !noundef !4 + %19 = load ptr, ptr %18, align 8, !nonnull !4, !align !96, !noundef !4 %20 = load ptr, ptr %19, align 8, !alias.scope !596, !nonnull !4, !align !116, !noundef !4 %21 = getelementptr inbounds nuw i8, ptr %19, i64 8 %22 = load i64, ptr %21, align 8, !alias.scope !596, !noundef !4 @@ -5201,6 +5208,7 @@ define hidden void @_ZN12clap_builder6parser7matches11matched_arg10MatchedArg10a br i1 %.not, label %.invoke, label %12 12: ; preds = %3 + call void @llvm.assume(i1 true) [ "align"(ptr %11, i64 8) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %1, i64 32, i1 false) tail call void @llvm.experimental.noalias.scope.decl(metadata !1064) @@ -5274,6 +5282,7 @@ define hidden void @_ZN12clap_builder6parser7matches11matched_arg10MatchedArg10a unreachable 42: ; preds = %28 + call void @llvm.assume(i1 true) [ "align"(ptr %40, i64 8) ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 24, i1 false) %43 = getelementptr inbounds nuw i8, ptr %40, i64 16 @@ -5433,6 +5442,7 @@ define hidden noundef zeroext i1 @_ZN12clap_builder6parser7matches11matched_arg1 22: ; preds = %20 %23 = getelementptr inbounds nuw i8, ptr %21, i64 24 + call void @llvm.assume(i1 true) [ "align"(ptr %21, i64 8) ] %24 = call noundef zeroext i1 @"_ZN12clap_builder6parser7matches11matched_arg10MatchedArg14check_explicit28_$u7b$$u7b$closure$u7d$$u7d$17h334d354b4eab3195E.llvm.4786290445112235611"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %21), !noalias !1120 br i1 %24, label %"_ZN90_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h5c9a5ad8bf840250E.llvm.13624566248375190677.exit.sink.split", label %20 diff --git a/bench/clap-rs/optimized/thb07xvb2pkztra.ll b/bench/clap-rs/optimized/thb07xvb2pkztra.ll index 0e173ce1aa7..120d43284cc 100644 --- a/bench/clap-rs/optimized/thb07xvb2pkztra.ll +++ b/bench/clap-rs/optimized/thb07xvb2pkztra.ll @@ -573,6 +573,7 @@ _ZN4core5slice4sort20provide_sorted_batch17ha280ea0abf600670E.exit: ; preds = %. %.02818.i = phi ptr [ %206, %.lr.ph.i64 ], [ %182, %190 ] %.sroa.0.117.i = phi ptr [ %209, %.lr.ph.i64 ], [ %15, %190 ] %.sroa.18.216.i = phi ptr [ %204, %.lr.ph.i64 ], [ %181, %190 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.02818.i, i64 8) ] %.028.val.i = load double, ptr %.02818.i, align 8, !alias.scope !59, !noundef !14 %.val36.i = load double, ptr %.sroa.0.117.i, align 8, !noalias !59, !noundef !14 %203 = fcmp olt double %.028.val.i, %.val36.i @@ -1295,6 +1296,7 @@ _ZN4core5slice4sort20provide_sorted_batch17h53ffae29950f10a6E.exit: ; preds = %. %.02836.i = phi ptr [ %275, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17h33d5ad3b53ae74a3E.exit42.thread.i" ], [ %217, %225 ] %.sroa.0.135.i = phi ptr [ %278, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17h33d5ad3b53ae74a3E.exit42.thread.i" ], [ %14, %225 ] %.sroa.18.234.i = phi ptr [ %273, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17h33d5ad3b53ae74a3E.exit42.thread.i" ], [ %216, %225 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.02836.i, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !200) tail call void @llvm.experimental.noalias.scope.decl(metadata !203) tail call void @llvm.experimental.noalias.scope.decl(metadata !205) @@ -1930,6 +1932,7 @@ _ZN4core5slice4sort20provide_sorted_batch17h67685d881b3800feE.exit: ; preds = %. %.02818.i = phi ptr [ %206, %.lr.ph.i64 ], [ %182, %190 ] %.sroa.0.117.i = phi ptr [ %209, %.lr.ph.i64 ], [ %15, %190 ] %.sroa.18.216.i = phi ptr [ %204, %.lr.ph.i64 ], [ %181, %190 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.02818.i, i64 8) ] %.028.val.i = load double, ptr %.02818.i, align 8, !alias.scope !279, !noundef !14 %.val36.i = load double, ptr %.sroa.0.117.i, align 8, !noalias !279, !noundef !14 %203 = fcmp olt double %.028.val.i, %.val36.i @@ -2572,6 +2575,7 @@ _ZN4core5slice4sort20provide_sorted_batch17hac3be73aab57d4e6E.exit: ; preds = %. %.02818.i = phi ptr [ %206, %.lr.ph.i64 ], [ %182, %190 ] %.sroa.0.117.i = phi ptr [ %209, %.lr.ph.i64 ], [ %15, %190 ] %.sroa.18.216.i = phi ptr [ %204, %.lr.ph.i64 ], [ %181, %190 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.02818.i, i64 8) ] %.028.val.i = load double, ptr %.02818.i, align 8, !alias.scope !349, !noundef !14 %.val36.i = load double, ptr %.sroa.0.117.i, align 8, !noalias !349, !noundef !14 %203 = fcmp olt double %.028.val.i, %.val36.i @@ -3214,6 +3218,7 @@ _ZN4core5slice4sort20provide_sorted_batch17h3b4d91e030054e3dE.exit: ; preds = %. %.02818.i = phi ptr [ %206, %.lr.ph.i64 ], [ %182, %190 ] %.sroa.0.117.i = phi ptr [ %209, %.lr.ph.i64 ], [ %15, %190 ] %.sroa.18.216.i = phi ptr [ %204, %.lr.ph.i64 ], [ %181, %190 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.02818.i, i64 8) ] %.028.val.i = load double, ptr %.02818.i, align 8, !alias.scope !419, !noundef !14 %.val36.i = load double, ptr %.sroa.0.117.i, align 8, !noalias !419, !noundef !14 %203 = fcmp olt double %.028.val.i, %.val36.i @@ -3914,6 +3919,7 @@ _ZN4core5slice4sort20provide_sorted_batch17hfd2a05380317227dE.exit: ; preds = %. %.02836.i = phi ptr [ %260, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17h826997466916b64eE.exit42.thread.i" ], [ %207, %215 ] %.sroa.0.135.i = phi ptr [ %263, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17h826997466916b64eE.exit42.thread.i" ], [ %15, %215 ] %.sroa.18.234.i = phi ptr [ %258, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17h826997466916b64eE.exit42.thread.i" ], [ %206, %215 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.02836.i, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !572) tail call void @llvm.experimental.noalias.scope.decl(metadata !575) tail call void @llvm.experimental.noalias.scope.decl(metadata !577) @@ -4616,6 +4622,7 @@ _ZN4core5slice4sort20provide_sorted_batch17h4e8a92e4c78ce14cE.exit: ; preds = %. %.02836.i = phi ptr [ %267, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17h63edbfe7761ccff1E.exit42.thread.i" ], [ %214, %222 ] %.sroa.0.135.i = phi ptr [ %270, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17h63edbfe7761ccff1E.exit42.thread.i" ], [ %14, %222 ] %.sroa.18.234.i = phi ptr [ %265, %"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7sort_by28_$u7b$$u7b$closure$u7d$$u7d$17h63edbfe7761ccff1E.exit42.thread.i" ], [ %213, %222 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.02836.i, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !725) tail call void @llvm.experimental.noalias.scope.decl(metadata !728) tail call void @llvm.experimental.noalias.scope.decl(metadata !730) diff --git a/bench/cpython/optimized/obmalloc.ll b/bench/cpython/optimized/obmalloc.ll index ad9349dc6c6..f1eef7b1f28 100644 --- a/bench/cpython/optimized/obmalloc.ll +++ b/bench/cpython/optimized/obmalloc.ll @@ -1210,7 +1210,6 @@ if.else: ; preds = %if.then12 %xblock_size = getelementptr inbounds nuw i8, ptr %page, i64 28 %3 = load i32, ptr %xblock_size, align 4 %conv15 = zext i32 %3 to i64 - call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 8) ] tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %0, i8 0, i64 %conv15, i1 false) br label %return @@ -1767,7 +1766,6 @@ _mi_segment_page_start.exit.i.i: ; preds = %_mi_page_malloc.exi mi_page_usable_block_size.exit: ; preds = %if.then.i.i, %_mi_segment_page_start.exit.i.i %retval.0.i51 = phi ptr [ %retval.0.i52, %if.then.i.i ], [ %call.i, %_mi_segment_page_start.exit.i.i ] %retval.0.i.i = phi i64 [ %conv.i.i, %if.then.i.i ], [ %mul.i.i.i.i, %_mi_segment_page_start.exit.i.i ] - call void @llvm.assume(i1 true) [ "align"(ptr %retval.0.i51, i64 8) ] tail call void @llvm.memset.p0.i64(ptr align 8 %retval.0.i51, i8 0, i64 %retval.0.i.i, i1 false) br label %return @@ -1803,7 +1801,6 @@ if.else.i: ; preds = %if.then12.i %xblock_size.i = getelementptr inbounds nuw i8, ptr %page.040, i64 28 %100 = load i32, ptr %xblock_size.i, align 4 %conv15.i = zext i32 %100 to i64 - call void @llvm.assume(i1 true) [ "align"(ptr %97, i64 8) ] tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %97, i8 0, i64 %conv15.i, i1 false) br label %return @@ -1924,7 +1921,6 @@ if.else.i.i: ; preds = %if.then12.i.i %xblock_size.i.i = getelementptr inbounds nuw i8, ptr %0, i64 28 %4 = load i32, ptr %xblock_size.i.i, align 4 %conv15.i.i = zext i32 %4 to i64 - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %1, i8 0, i64 %conv15.i.i, i1 false) br label %return @@ -1983,7 +1979,6 @@ if.else.i.i.i: ; preds = %if.then12.i.i.i %xblock_size.i.i.i = getelementptr inbounds nuw i8, ptr %0, i64 28 %4 = load i32, ptr %xblock_size.i.i.i, align 4 %conv15.i.i.i = zext i32 %4 to i64 - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %1, i8 0, i64 %conv15.i.i.i, i1 false) br label %_mi_heap_malloc_zero_ex.exit @@ -2119,7 +2114,6 @@ if.else.i.i: ; preds = %if.end.i.i %xblock_size.i.i = getelementptr inbounds nuw i8, ptr %2, i64 28 %6 = load i32, ptr %xblock_size.i.i, align 4 %conv15.i.i = zext i32 %6 to i64 - call void @llvm.assume(i1 true) [ "align"(ptr %3, i64 8) ] tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %3, i8 0, i64 %conv15.i.i, i1 false) br label %mi_heap_malloc_small_zero.exit @@ -2171,7 +2165,6 @@ if.else.i.i.i.i: ; preds = %if.end.i.i.i.i %xblock_size.i.i.i.i = getelementptr inbounds nuw i8, ptr %0, i64 28 %4 = load i32, ptr %xblock_size.i.i.i.i, align 4 %conv15.i.i.i.i = zext i32 %4 to i64 - call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %1, i8 0, i64 %conv15.i.i.i.i, i1 false) br label %_mi_heap_malloc_zero.exit @@ -2229,7 +2222,6 @@ if.else.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i %xblock_size.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %2, i64 28 %6 = load i32, ptr %xblock_size.i.i.i.i.i, align 4 %conv15.i.i.i.i.i = zext i32 %6 to i64 - call void @llvm.assume(i1 true) [ "align"(ptr %3, i64 8) ] tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %3, i8 0, i64 %conv15.i.i.i.i.i, i1 false) br label %mi_heap_zalloc.exit @@ -3377,7 +3369,6 @@ if.else.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i %xblock_size.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %3, i64 28 %7 = load i32, ptr %xblock_size.i.i.i.i.i, align 4 %conv15.i.i.i.i.i = zext i32 %7 to i64 - call void @llvm.assume(i1 true) [ "align"(ptr %4, i64 8) ] tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %4, i8 0, i64 %conv15.i.i.i.i.i, i1 false) br label %return @@ -3446,7 +3437,6 @@ if.else.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i %xblock_size.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %5, i64 28 %9 = load i32, ptr %xblock_size.i.i.i.i.i.i, align 4 %conv15.i.i.i.i.i.i = zext i32 %9 to i64 - call void @llvm.assume(i1 true) [ "align"(ptr %6, i64 8) ] tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %6, i8 0, i64 %conv15.i.i.i.i.i.i, i1 false) br label %mi_heap_calloc.exit @@ -4997,7 +4987,6 @@ if.else.i: ; preds = %if.then12.i %xblock_size.i = getelementptr inbounds nuw i8, ptr %2, i64 28 %8 = load i32, ptr %xblock_size.i, align 4 %conv15.i = zext i32 %8 to i64 - call void @llvm.assume(i1 true) [ "align"(ptr %3, i64 8) ] tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %3, i8 0, i64 %conv15.i, i1 false) br label %return @@ -5053,7 +5042,6 @@ if.else.i.i.i.i.i: ; preds = %if.then12.i.i.i.i.i %xblock_size.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %9, i64 28 %13 = load i32, ptr %xblock_size.i.i.i.i.i, align 4 %conv15.i.i.i.i.i = zext i32 %13 to i64 - call void @llvm.assume(i1 true) [ "align"(ptr %10, i64 8) ] tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %10, i8 0, i64 %conv15.i.i.i.i.i, i1 false) br label %return @@ -5113,7 +5101,6 @@ if.else.i.i.i.i58.i: ; preds = %if.then12.i.i.i.i52 %xblock_size.i.i.i.i59.i = getelementptr inbounds nuw i8, ptr %14, i64 28 %18 = load i32, ptr %xblock_size.i.i.i.i59.i, align 4 %conv15.i.i.i.i60.i = zext i32 %18 to i64 - call void @llvm.assume(i1 true) [ "align"(ptr %15, i64 8) ] tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %15, i8 0, i64 %conv15.i.i.i.i60.i, i1 false) br label %if.end36.i @@ -5253,7 +5240,6 @@ mi_page_usable_aligned_size_of.exit.i.i.i: ; preds = %_mi_page_ptr_unalig mi_usable_size.exit.i: ; preds = %mi_page_usable_aligned_size_of.exit.i.i.i, %_mi_segment_page_start.exit.i.i.i.i.i.i, %if.then.i.i.i.i.i.i, %if.then57.i %retval.0.i.i66.i = phi i64 [ %sub.i.i.i.i, %mi_page_usable_aligned_size_of.exit.i.i.i ], [ 0, %if.then57.i ], [ %conv.i.i.i.i.i.i, %if.then.i.i.i.i.i.i ], [ %mul.i.i.i.i.i.i.i.i, %_mi_segment_page_start.exit.i.i.i.i.i.i ] - call void @llvm.assume(i1 true) [ "align"(ptr %20, i64 8) ] tail call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %retval.0.i.i66.i, i1 false) br label %return @@ -5594,8 +5580,6 @@ if.then18: ; preds = %if.then14 if.end22: ; preds = %if.then18, %if.then14 %cond27 = tail call i64 @llvm.umin.i64(i64 %newsize, i64 %retval.0.i.i) - 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) br label %return @@ -12308,7 +12292,6 @@ mi_heap_get_backing.exit: ; preds = %entry, %_mi_stat_in if.end: ; preds = %mi_heap_get_backing.exit call void @llvm.assume(i1 true) [ "align"(ptr %call4.i.i.i, 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) %call4.i.i.i, ptr noundef nonnull readonly align 64 dereferenceable(3064) @_mi_heap_empty, i64 3064, i1 false) %11 = load ptr, ptr %10, align 8 store ptr %11, ptr %call4.i.i.i, align 8 @@ -12750,8 +12733,6 @@ mi_heap_visit_pages.exit: ; preds = %for.inc.i, %entry, %pages_free_direct.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, 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) ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1800) %pages.i2, ptr noundef nonnull readonly align 16 dereferenceable(1800) getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1040), i64 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 @@ -13031,8 +13012,6 @@ if.end3: ; preds = %_mi_page_queue_appe tail call void @_mi_heap_delayed_free_all(ptr noundef nonnull %heap) %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 16 dereferenceable(1800) getelementptr inbounds nuw (i8, ptr @_mi_heap_empty, i64 1040), i64 1800, i1 false) store atomic i64 0, ptr %thread_delayed_free.i.i seq_cst, align 8 store i64 0, ptr %page_count.i, align 8 @@ -14390,7 +14369,6 @@ if.end21.i: ; preds = %if.then11.i, %if.th if.then24.i: ; preds = %if.end21.i, %if.end21.thread26.i %td.329.i = phi ptr [ %8, %if.end21.thread26.i ], [ %td.4.ph.i, %if.end21.i ] - call void @llvm.assume(i1 true) [ "align"(ptr %td.329.i, i64 8) ] tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(4688) %td.329.i, i8 0, i64 4688, i1 false) br label %if.end6 @@ -14403,11 +14381,8 @@ if.end6: ; preds = %if.end21.i, %if.the %td.323.i.ph = phi ptr [ %td.329.i, %if.then24.i ], [ %td.4.ph.i, %if.end21.i ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %memid.i) %tld7 = getelementptr inbounds nuw i8, ptr %td.323.i.ph, i64 3064 - call void @llvm.assume(i1 true) [ "align"(ptr %tld7, i64 8) ] - call void @llvm.assume(i1 true) [ "align"(ptr @tld_empty, i64 8) ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1600) %tld7, ptr noundef nonnull readonly align 64 dereferenceable(1600) @tld_empty, i64 1600, i1 false) call void @llvm.assume(i1 true) [ "align"(ptr %td.323.i.ph, 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) %td.323.i.ph, ptr noundef nonnull readonly align 64 dereferenceable(3064) @_mi_heap_empty, i64 3064, i1 false) %11 = tail call ptr asm "movq %fs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(ptr) null) #52, !srcloc !16 %12 = ptrtoint ptr %11 to i64 @@ -25032,7 +25007,6 @@ if.else.i.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i. %xblock_size.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %5, i64 28 %9 = load i32, ptr %xblock_size.i.i.i.i.i.i.i, align 4 %conv15.i.i.i.i.i.i.i = zext i32 %9 to i64 - call void @llvm.assume(i1 true) [ "align"(ptr %6, i64 8) ] tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %6, i8 0, i64 %conv15.i.i.i.i.i.i.i, i1 false) br label %mi_calloc.exit @@ -25159,7 +25133,6 @@ if.else.i.i.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i.i. %xblock_size.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %5, i64 28 %9 = load i32, ptr %xblock_size.i.i.i.i.i.i.i, align 4 %conv15.i.i.i.i.i.i.i = zext i32 %9 to i64 - call void @llvm.assume(i1 true) [ "align"(ptr %6, i64 8) ] tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %6, i8 0, i64 %conv15.i.i.i.i.i.i.i, i1 false) br label %mi_calloc.exit 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/3vlwzyp0day7srdg.ll b/bench/egg-rs/optimized/3vlwzyp0day7srdg.ll index 7c4ab4af911..fceb0535933 100644 --- a/bench/egg-rs/optimized/3vlwzyp0day7srdg.ll +++ b/bench/egg-rs/optimized/3vlwzyp0day7srdg.ll @@ -77,6 +77,7 @@ define hidden noundef nonnull align 8 dereferenceable(40) ptr @"_ZN100_$LT$index 34: ; preds = %23 %35 = load ptr, ptr %13, align 8, !alias.scope !4, !noalias !7, !nonnull !16, !noundef !16 %36 = getelementptr inbounds [0 x { i64, { i64, i64, i64, i64, i64 }, i32, [1 x i32] }], ptr %35, i64 0, i64 %29, i32 1 + call void @llvm.assume(i1 true) [ "align"(ptr %36, i64 8) ] ret ptr %36 } @@ -336,6 +337,7 @@ define hidden noundef align 8 dereferenceable_or_null(40) ptr @"_ZN8indexmap3map "_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h8f26345564270a96E.llvm.13994044477760586293.exit.thread": ; preds = %2, %"_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h8f26345564270a96E.llvm.13994044477760586293.exit", %31 %.sroa.0.0 = phi ptr [ %33, %31 ], [ null, %"_ZN8indexmap3map25IndexMap$LT$K$C$V$C$S$GT$12get_index_of17h8f26345564270a96E.llvm.13994044477760586293.exit" ], [ null, %2 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0, i64 8) ] ret ptr %.sroa.0.0 } diff --git a/bench/egg-rs/optimized/55a7hv010cxk6f68.ll b/bench/egg-rs/optimized/55a7hv010cxk6f68.ll index b8dce8d4d2a..d871b2a0d55 100644 --- a/bench/egg-rs/optimized/55a7hv010cxk6f68.ll +++ b/bench/egg-rs/optimized/55a7hv010cxk6f68.ll @@ -85,7 +85,7 @@ define hidden noundef nonnull align 8 dereferenceable(40) ptr @"_ZN8indexmap3map %3 = load i64, ptr %0, align 8, !range !30, !noundef !4 %trunc = trunc nuw i64 %3 to i1 %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %.sroa.03.0.copyload = load ptr, ptr %4, align 8, !nonnull !4, !noundef !4 + %.sroa.03.0.copyload = load ptr, ptr %4, align 8, !nonnull !4, !align !5, !noundef !4 %.sroa.24.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 br i1 %trunc, label %12, label %5 @@ -236,7 +236,7 @@ define hidden noundef i64 @"_ZN8indexmap3map4core25IndexMapCore$LT$K$C$V$GT$4pus %6 = load i64, ptr %5, align 8, !noundef !4 %7 = getelementptr inbounds nuw i8, ptr %0, i64 24 %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %9 = load ptr, ptr %8, align 8, !nonnull !4, !noundef !4 + %9 = load ptr, ptr %8, align 8, !nonnull !4, !align !5, !noundef !4 tail call void @llvm.experimental.noalias.scope.decl(metadata !85) %.val.i = load ptr, ptr %7, align 8, !alias.scope !85, !noalias !88, !nonnull !4, !noundef !4 %10 = getelementptr inbounds nuw i8, ptr %0, i64 32 @@ -589,6 +589,7 @@ define hidden noundef align 8 dereferenceable_or_null(8) ptr @"_ZN9hashbrown3raw %40 = icmp eq ptr %.sroa.0.0.i, null %41 = getelementptr inbounds i8, ptr %.sroa.0.0.i, i64 -8 %.sroa.0.0 = select i1 %40, ptr null, ptr %41 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0, i64 8) ] ret ptr %.sroa.0.0 } 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/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/glslang/optimized/hlslParseHelper.cpp.ll b/bench/glslang/optimized/hlslParseHelper.cpp.ll index c82ee269d0f..64aaaf1af75 100644 --- a/bench/glslang/optimized/hlslParseHelper.cpp.ll +++ b/bench/glslang/optimized/hlslParseHelper.cpp.ll @@ -60899,7 +60899,7 @@ _ZN7glslang10TQualifier17getGeometryStringENS_15TLayoutGeometryE.exit10.i: ; pre br i1 %58, label %switch.lookup94, label %_ZN7glslang10TQualifier17getGeometryStringENS_15TLayoutGeometryE.exit72 switch.lookup94: ; preds = %57 - %switch.tableidx95 = add i32 %18, -1 + %switch.tableidx95 = add nsw i32 %18, -1 %59 = sext i32 %switch.tableidx95 to i64 %switch.gep96 = getelementptr inbounds [9 x ptr], ptr @switch.table._ZN7glslang16HlslParseContext33updateStandaloneQualifierDefaultsERKNS_10TSourceLocERKNS_11TPublicTypeE.98, i64 0, i64 %59 %switch.load97 = load ptr, ptr %switch.gep96, 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/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..3221d0b8f0d 100644 --- a/bench/hyper-rs/optimized/4lwa0ukf5hd0n1ju.ll +++ b/bench/hyper-rs/optimized/4lwa0ukf5hd0n1ju.ll @@ -14,8 +14,10 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: nonlazybind uwtable define internal 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 %.0.val, i8 %.8.val) unnamed_addr #0 { + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %1 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %1) + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %2 = getelementptr inbounds nuw i8, ptr %.0.val, i64 4 %3 = trunc nuw i8 %.8.val to i1 br i1 %3, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i, label %4 @@ -31,10 +33,11 @@ _ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i: ; pr br i1 %8, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i, label %9 9: ; preds = %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i - store atomic i8 1, ptr %2 monotonic, align 1 + store atomic i8 1, ptr %2 monotonic, align 4 br label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i: ; preds = %9, %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i, %4, %0 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %10 = atomicrmw xchg ptr %.0.val, i32 0 release, align 4 %11 = icmp eq i32 %10, 2 br i1 %11, label %12, label %"_ZN79_$LT$std..sync..mutex..MutexGuard$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h16deae5573e5f5f8E.exit" @@ -210,6 +213,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 +224,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 @@ -280,6 +285,9 @@ 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) ] + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] + 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 @@ -298,6 +306,7 @@ _ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i.i: ; br label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i: ; preds = %57, %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i.i, %52, %50 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] %58 = atomicrmw xchg ptr %12, i32 0 release, align 4 %59 = icmp eq i32 %58, 2 br i1 %59, label %60, label %"_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.exit" diff --git a/bench/hyperscan/optimized/hwlm.c.ll b/bench/hyperscan/optimized/hwlm.c.ll index aa96957f073..10154f851a6 100644 --- a/bench/hyperscan/optimized/hwlm.c.ll +++ b/bench/hyperscan/optimized/hwlm.c.ll @@ -16,7 +16,7 @@ if.end: ; preds = %entry do.end6: ; preds = %if.end %add.ptr = getelementptr inbounds nuw i8, ptr %t, i64 192 - %call = tail call i32 @noodExec(ptr noundef nonnull %add.ptr, ptr noundef %buf, i64 noundef %len, i64 noundef %start, ptr noundef %cb, ptr noundef %scratch) #8 + %call = tail call i32 @noodExec(ptr noundef nonnull %add.ptr, ptr noundef %buf, i64 noundef %len, i64 noundef %start, ptr noundef %cb, ptr noundef %scratch) #7 br label %return if.end7: ; preds = %if.end @@ -109,10 +109,8 @@ for.cond15.i573.preheader: ; preds = %if.end13.i612, %con for.body.i596: ; preds = %for.body.i596.preheader, %if.end13.i612 %buf.addr.i557.0679 = phi ptr [ %add.ptr14.i613, %if.end13.i612 ], [ %buf.addr.i22.1, %for.body.i596.preheader ] - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i557.0679, i64 16) ] %10 = load <16 x i8>, ptr %buf.addr.i557.0679, align 16 %add.ptr3.i600 = getelementptr inbounds nuw i8, ptr %buf.addr.i557.0679, i64 16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr3.i600, i64 16) ] %11 = load <16 x i8>, ptr %add.ptr3.i600, align 16 %12 = shufflevector <16 x i8> %10, <16 x i8> %11, <32 x i32> %13 = icmp eq <32 x i8> %9, %12 @@ -134,7 +132,6 @@ if.end13.i612: ; preds = %for.body.i596 for.body19.i577: ; preds = %for.cond15.i573.preheader, %if.end41.i587 %buf.addr.i557.1683 = phi ptr [ %add.ptr43.i588, %if.end41.i587 ], [ %buf.addr.i557.0.lcssa, %for.cond15.i573.preheader ] - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i557.1683, i64 16) ] %15 = load <16 x i8>, ptr %buf.addr.i557.1683, align 16 %cmp.i1050 = icmp eq <16 x i8> %vecinit15.i808, %15 %16 = bitcast <16 x i1> %cmp.i1050 to i16 @@ -230,10 +227,8 @@ for.cond18.i.preheader: ; preds = %if.end16.i, %cond.t for.body.i431: ; preds = %for.body.i431.preheader, %if.end16.i %buf.addr.i412.0669 = phi ptr [ %add.ptr17.i, %if.end16.i ], [ %buf.addr.i39.1, %for.body.i431.preheader ] - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i412.0669, i64 16) ] %29 = load <16 x i8>, ptr %buf.addr.i412.0669, align 16 %add.ptr5.i = getelementptr inbounds nuw i8, ptr %buf.addr.i412.0669, i64 16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr5.i, i64 16) ] %30 = load <16 x i8>, ptr %add.ptr5.i, align 16 %31 = shufflevector <16 x i8> %29, <16 x i8> %30, <32 x i32> %32 = and <32 x i8> %31, splat (i8 -33) @@ -256,7 +251,6 @@ if.end16.i: ; preds = %for.body.i431 for.body22.i: ; preds = %for.cond18.i.preheader, %if.end45.i428 %buf.addr.i412.1672 = phi ptr [ %add.ptr47.i, %if.end45.i428 ], [ %buf.addr.i412.0.lcssa, %for.cond18.i.preheader ] - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i412.1672, i64 16) ] %35 = load <16 x i8>, ptr %buf.addr.i412.1672, align 16 %36 = and <16 x i8> %35, splat (i8 -33) %cmp.i1086 = icmp eq <16 x i8> %vecinit15.i775, %36 @@ -334,7 +328,6 @@ for.cond.i1847: ; preds = %for.cond.i1847.preh br i1 %cmp.i1849, label %for.body.i1851, label %cond.false25.i for.body.i1851: ; preds = %for.cond.i1847 - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i1842.0, i64 16) ] %51 = load <16 x i8>, ptr %buf.addr.i1842.0, align 16 %cmp.i25.i1852 = icmp eq <16 x i8> %vecinit15.i742, %51 %cmp.i.i1854 = icmp eq <16 x i8> %vecinit15.i709, %51 @@ -348,7 +341,7 @@ for.body.i1851: ; preds = %for.cond.i1847 br i1 %cmp7.i1862, label %land.lhs.true.i1873, label %if.end.i1863 land.lhs.true.i1873: ; preds = %for.body.i1851 - %56 = load i8, ptr %add.ptr.i1848, align 16 + %56 = load i8, ptr %add.ptr.i1848, align 1 %cmp12.i1877 = icmp eq i8 %56, %44 br i1 %cmp12.i1877, label %cond.end15.i.split.loop.exit, label %if.end.i1863 @@ -436,7 +429,6 @@ for.cond.i1665: ; preds = %for.cond.i1665.preh br i1 %cmp.i1667, label %for.body.i1669, label %cond.true22.i186 for.body.i1669: ; preds = %for.cond.i1665 - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i1642.0, i64 16) ] %74 = load <16 x i8>, ptr %buf.addr.i1642.0, align 16 %75 = and <16 x i8> %74, splat (i8 -33) %cmp.i30.i = icmp eq <16 x i8> %vecinit15.i676, %75 @@ -452,7 +444,7 @@ for.body.i1669: ; preds = %for.cond.i1665 br i1 %cmp9.i, label %land.lhs.true.i, label %if.end.i1678 land.lhs.true.i: ; preds = %for.body.i1669 - %81 = load i8, ptr %add.ptr.i1666, align 16 + %81 = load i8, ptr %add.ptr.i1666, align 1 %82 = and i8 %81, -33 %cmp15.i = icmp eq i8 %82, %66 br i1 %cmp15.i, label %cond.end15.i159.split.loop.exit, label %if.end.i1678 @@ -502,7 +494,7 @@ sw.bb16.i: ; preds = %if.end.i %93 = load <2 x i64>, ptr %lo.i, align 16 %hi.i = getelementptr inbounds nuw i8, ptr %spec.select, i64 32 %94 = load <2 x i64>, ptr %hi.i, align 16 - %call19.i = tail call ptr @shuftiExec(<2 x i64> noundef %93, <2 x i64> noundef %94, ptr noundef %add.ptr.i, ptr noundef %add.ptr1.i) #8 + %call19.i = tail call ptr @shuftiExec(<2 x i64> noundef %93, <2 x i64> noundef %94, ptr noundef %add.ptr.i, ptr noundef %add.ptr1.i) #7 br label %run_hwlm_accel.exit sw.bb20.i: ; preds = %if.end.i @@ -510,7 +502,7 @@ sw.bb20.i: ; preds = %if.end.i %95 = load <2 x i64>, ptr %mask1.i, align 16 %mask2.i = getelementptr inbounds nuw i8, ptr %spec.select, i64 32 %96 = load <2 x i64>, ptr %mask2.i, align 16 - %call23.i = tail call ptr @truffleExec(<2 x i64> noundef %95, <2 x i64> noundef %96, ptr noundef %add.ptr.i, ptr noundef %add.ptr1.i) #8 + %call23.i = tail call ptr @truffleExec(<2 x i64> noundef %95, <2 x i64> noundef %96, ptr noundef %add.ptr.i, ptr noundef %add.ptr1.i) #7 br label %run_hwlm_accel.exit run_hwlm_accel.exit: ; preds = %if.end9.i107, %if.end.i103, %if.end9.i34, %if.end.i33, %for.cond.i98.preheader, %for.cond.i.preheader, %if.then40.i, %if.then13.i, %if.then36.i589, %if.then10.i614, %cond.end15.i, %cond.end15.i159, %if.end.i, %cond.true.i204, %cond.true22.i186, %if.end32.i171, %cond.false.i131, %cond.false25.i, %if.end32.i, %cond.true37.i76, %cond.true.i95, %cond.false40.i, %cond.false.i, %sw.bb20.i, %sw.bb16.i @@ -530,7 +522,7 @@ run_hwlm_accel.exit: ; preds = %if.end9.i107, %if.e do.end15: ; preds = %if.end7, %run_hwlm_accel.exit %start.addr.0 = phi i64 [ %start, %if.end7 ], [ %sub.ptr.sub.i, %run_hwlm_accel.exit ] %add.ptr16 = getelementptr inbounds nuw i8, ptr %t, i64 192 - %call17 = tail call i32 @fdrExec(ptr noundef nonnull %add.ptr16, ptr noundef %buf, i64 noundef %len, i64 noundef %start.addr.0, ptr noundef %cb, ptr noundef %scratch, i64 noundef %groups) #8 + %call17 = tail call i32 @fdrExec(ptr noundef nonnull %add.ptr16, ptr noundef %buf, i64 noundef %len, i64 noundef %start.addr.0, ptr noundef %cb, ptr noundef %scratch, i64 noundef %groups) #7 br label %return return: ; preds = %entry, %do.end15, %do.end6 @@ -566,11 +558,11 @@ do.end9: ; preds = %if.end br i1 %tobool10.not, label %if.else, label %if.then11 if.then11: ; preds = %do.end9 - %call = tail call i32 @noodExec(ptr noundef nonnull %add.ptr12, ptr noundef %2, i64 noundef %len, i64 noundef %start, ptr noundef %cb, ptr noundef nonnull %scratch) #8 + %call = tail call i32 @noodExec(ptr noundef nonnull %add.ptr12, ptr noundef %2, i64 noundef %len, i64 noundef %start, ptr noundef %cb, ptr noundef nonnull %scratch) #7 br label %return if.else: ; preds = %do.end9 - %call13 = tail call i32 @noodExecStreaming(ptr noundef nonnull %add.ptr12, ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 noundef %len, ptr noundef %cb, ptr noundef nonnull %scratch) #8 + %call13 = tail call i32 @noodExecStreaming(ptr noundef nonnull %add.ptr12, ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 noundef %len, ptr noundef %cb, ptr noundef nonnull %scratch) #7 br label %return if.end14: ; preds = %if.end @@ -663,10 +655,8 @@ for.cond15.i2269.preheader.i: ; preds = %if.end13.i2308.i, % for.body.i2292.i: ; preds = %for.body.i2292.i.preheader, %if.end13.i2308.i %buf.addr.i2253.01945.i = phi ptr [ %add.ptr14.i2309.i, %if.end13.i2308.i ], [ %buf.addr.i.1.i, %for.body.i2292.i.preheader ] - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i2253.01945.i, i64 16) ] %12 = load <16 x i8>, ptr %buf.addr.i2253.01945.i, align 16 %add.ptr3.i2296.i = getelementptr inbounds nuw i8, ptr %buf.addr.i2253.01945.i, i64 16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr3.i2296.i, i64 16) ] %13 = load <16 x i8>, ptr %add.ptr3.i2296.i, align 16 %14 = shufflevector <16 x i8> %12, <16 x i8> %13, <32 x i32> %15 = icmp eq <32 x i8> %11, %14 @@ -688,7 +678,6 @@ if.end13.i2308.i: ; preds = %for.body.i2292.i for.body19.i2273.i: ; preds = %for.cond15.i2269.preheader.i, %if.end41.i2283.i %buf.addr.i2253.11949.i = phi ptr [ %add.ptr43.i2284.i, %if.end41.i2283.i ], [ %buf.addr.i2253.0.lcssa.i, %for.cond15.i2269.preheader.i ] - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i2253.11949.i, i64 16) ] %17 = load <16 x i8>, ptr %buf.addr.i2253.11949.i, align 16 %cmp.i3657.i = icmp eq <16 x i8> %vecinit15.i2947.i, %17 %18 = bitcast <16 x i1> %cmp.i3657.i to i16 @@ -768,10 +757,8 @@ for.cond18.i1829.preheader.i: ; preds = %if.end16.i1871.i, % for.body.i1853.i: ; preds = %for.body.i1853.i.preheader, %if.end16.i1871.i %buf.addr.i1811.01935.i = phi ptr [ %add.ptr17.i1872.i, %if.end16.i1871.i ], [ %buf.addr.i154.1.i, %for.body.i1853.i.preheader ] - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i1811.01935.i, i64 16) ] %29 = load <16 x i8>, ptr %buf.addr.i1811.01935.i, align 16 %add.ptr5.i1858.i = getelementptr inbounds nuw i8, ptr %buf.addr.i1811.01935.i, i64 16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr5.i1858.i, i64 16) ] %30 = load <16 x i8>, ptr %add.ptr5.i1858.i, align 16 %31 = shufflevector <16 x i8> %29, <16 x i8> %30, <32 x i32> %32 = and <32 x i8> %31, splat (i8 -33) @@ -794,7 +781,6 @@ if.end16.i1871.i: ; preds = %for.body.i1853.i for.body22.i1833.i: ; preds = %for.cond18.i1829.preheader.i, %if.end45.i1844.i %buf.addr.i1811.11938.i = phi ptr [ %add.ptr47.i1845.i, %if.end45.i1844.i ], [ %buf.addr.i1811.0.lcssa.i, %for.cond18.i1829.preheader.i ] - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i1811.11938.i, i64 16) ] %35 = load <16 x i8>, ptr %buf.addr.i1811.11938.i, align 16 %36 = and <16 x i8> %35, splat (i8 -33) %cmp.i3741.i = icmp eq <16 x i8> %vecinit15.i2914.i, %36 @@ -872,7 +858,6 @@ for.cond.i6374.i: ; preds = %for.cond.i6374.i.pr br i1 %cmp.i6376.i, label %for.body.i6378.i, label %cond.false25.i.i for.body.i6378.i: ; preds = %for.cond.i6374.i - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i6369.0.i, i64 16) ] %51 = load <16 x i8>, ptr %buf.addr.i6369.0.i, align 16 %cmp.i25.i6379.i = icmp eq <16 x i8> %vecinit15.i2749.i, %51 %cmp.i.i6381.i = icmp eq <16 x i8> %vecinit15.i2716.i, %51 @@ -886,7 +871,7 @@ for.body.i6378.i: ; preds = %for.cond.i6374.i br i1 %cmp7.i6389.i, label %land.lhs.true.i6400.i, label %if.end.i6390.i land.lhs.true.i6400.i: ; preds = %for.body.i6378.i - %56 = load i8, ptr %add.ptr.i6375.i, align 16 + %56 = load i8, ptr %add.ptr.i6375.i, align 1 %cmp12.i6404.i = icmp eq i8 %56, %44 br i1 %cmp12.i6404.i, label %cond.end15.i.split.loop.exit.i, label %if.end.i6390.i @@ -974,7 +959,6 @@ for.cond.i5951.i: ; preds = %for.cond.i5951.i.pr br i1 %cmp.i5953.i, label %for.body.i5955.i, label %cond.true22.i616.i for.body.i5955.i: ; preds = %for.cond.i5951.i - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i5928.0.i, i64 16) ] %74 = load <16 x i8>, ptr %buf.addr.i5928.0.i, align 16 %75 = and <16 x i8> %74, splat (i8 -33) %cmp.i30.i5957.i = icmp eq <16 x i8> %vecinit15.i2683.i, %75 @@ -990,7 +974,7 @@ for.body.i5955.i: ; preds = %for.cond.i5951.i br i1 %cmp9.i5968.i, label %land.lhs.true.i5979.i, label %if.end.i5969.i land.lhs.true.i5979.i: ; preds = %for.body.i5955.i - %81 = load i8, ptr %add.ptr.i5952.i, align 16 + %81 = load i8, ptr %add.ptr.i5952.i, align 1 %82 = and i8 %81, -33 %cmp15.i5984.i = icmp eq i8 %82, %66 br i1 %cmp15.i5984.i, label %cond.end15.i589.split.loop.exit.i, label %if.end.i5969.i @@ -1040,7 +1024,7 @@ sw.bb16.i127.i: ; preds = %if.then9.i %93 = load <2 x i64>, ptr %lo.i128.i, align 16 %hi.i129.i = getelementptr inbounds nuw i8, ptr %spec.select, i64 32 %94 = load <2 x i64>, ptr %hi.i129.i, align 16 - %call19.i130.i = tail call ptr @shuftiExec(<2 x i64> noundef %93, <2 x i64> noundef %94, ptr noundef %0, ptr noundef nonnull %add.ptr.i) #8 + %call19.i130.i = tail call ptr @shuftiExec(<2 x i64> noundef %93, <2 x i64> noundef %94, ptr noundef %0, ptr noundef nonnull %add.ptr.i) #7 br label %if.end10.i sw.bb20.i123.i: ; preds = %if.then9.i @@ -1048,7 +1032,7 @@ sw.bb20.i123.i: ; preds = %if.then9.i %95 = load <2 x i64>, ptr %mask1.i124.i, align 16 %mask2.i125.i = getelementptr inbounds nuw i8, ptr %spec.select, i64 32 %96 = load <2 x i64>, ptr %mask2.i125.i, align 16 - %call23.i126.i = tail call ptr @truffleExec(<2 x i64> noundef %95, <2 x i64> noundef %96, ptr noundef %0, ptr noundef nonnull %add.ptr.i) #8 + %call23.i126.i = tail call ptr @truffleExec(<2 x i64> noundef %95, <2 x i64> noundef %96, ptr noundef %0, ptr noundef nonnull %add.ptr.i) #7 br label %if.end10.i if.end10.i: ; preds = %sw.bb20.i123.i, %sw.bb16.i127.i, %if.end32.i601.i, %cond.true22.i616.i, %cond.end15.i589.i, %cond.true.i634.i, %if.end32.i.i, %cond.false25.i.i, %cond.end15.i.i, %cond.false.i561.i, %cond.true37.i191.i, %if.then40.i1846.i, %if.then13.i1873.i, %cond.true.i210.i, %cond.false40.i.i, %if.then36.i2285.i, %if.then10.i2310.i, %cond.false.i.i, %if.then9.i @@ -1115,7 +1099,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 +1106,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 +1117,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 +1136,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 +1144,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 +1156,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 +1181,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 +1208,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 +1224,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 +1254,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 +1284,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 +1301,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 @@ -1338,7 +1318,7 @@ sw.bb16.i98.i: ; preds = %if.end36.i %154 = load <2 x i64>, ptr %lo.i99.i, align 16 %hi.i100.i = getelementptr inbounds nuw i8, ptr %spec.select, i64 32 %155 = load <2 x i64>, ptr %hi.i100.i, align 16 - %call19.i101.i = call ptr @shuftiExec(<2 x i64> noundef %154, <2 x i64> noundef %155, ptr noundef nonnull %temp.i, ptr noundef nonnull %add.ptr39.i) #8 + %call19.i101.i = call ptr @shuftiExec(<2 x i64> noundef %154, <2 x i64> noundef %155, ptr noundef nonnull %temp.i, ptr noundef nonnull %add.ptr39.i) #7 br label %run_hwlm_accel.exit117.i sw.bb20.i94.i: ; preds = %if.end36.i @@ -1346,7 +1326,7 @@ sw.bb20.i94.i: ; preds = %if.end36.i %156 = load <2 x i64>, ptr %mask1.i95.i, align 16 %mask2.i96.i = getelementptr inbounds nuw i8, ptr %spec.select, i64 32 %157 = load <2 x i64>, ptr %mask2.i96.i, align 16 - %call23.i97.i = call ptr @truffleExec(<2 x i64> noundef %156, <2 x i64> noundef %157, ptr noundef nonnull %temp.i, ptr noundef nonnull %add.ptr39.i) #8 + %call23.i97.i = call ptr @truffleExec(<2 x i64> noundef %156, <2 x i64> noundef %157, ptr noundef nonnull %temp.i, ptr noundef nonnull %add.ptr39.i) #7 br label %run_hwlm_accel.exit117.i run_hwlm_accel.exit117.i: ; preds = %sw.bb20.i94.i, %sw.bb16.i98.i, %if.end32.i739.i, %cond.true22.i754.i, %cond.end15.i727.i, %if.end32.i670.i, %cond.false25.i664.i, %cond.end15.i658.i, %cond.true37.i349.i, %cond.end30.i333.i, %cond.false40.i260.i, %cond.end30.i254.i, %if.end36.i @@ -1443,10 +1423,8 @@ for.cond15.i2005.preheader.i: ; preds = %if.end13.i2044.i, % for.body.i2028.i: ; preds = %for.body.i2028.i.preheader, %if.end13.i2044.i %buf.addr.i1989.01993.i = phi ptr [ %add.ptr14.i2045.i, %if.end13.i2044.i ], [ %buf.addr.i391.1.i, %for.body.i2028.i.preheader ] - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i1989.01993.i, i64 16) ] %165 = load <16 x i8>, ptr %buf.addr.i1989.01993.i, align 16 %add.ptr3.i2032.i = getelementptr inbounds nuw i8, ptr %buf.addr.i1989.01993.i, i64 16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr3.i2032.i, i64 16) ] %166 = load <16 x i8>, ptr %add.ptr3.i2032.i, align 16 %167 = shufflevector <16 x i8> %165, <16 x i8> %166, <32 x i32> %168 = icmp eq <32 x i8> %164, %167 @@ -1468,7 +1446,6 @@ if.end13.i2044.i: ; preds = %for.body.i2028.i for.body19.i2009.i: ; preds = %for.cond15.i2005.preheader.i, %if.end41.i2019.i %buf.addr.i1989.11997.i = phi ptr [ %add.ptr43.i2020.i, %if.end41.i2019.i ], [ %buf.addr.i1989.0.lcssa.i, %for.cond15.i2005.preheader.i ] - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i1989.11997.i, i64 16) ] %170 = load <16 x i8>, ptr %buf.addr.i1989.11997.i, align 16 %cmp.i3705.i = icmp eq <16 x i8> %vecinit15.i2815.i, %170 %171 = bitcast <16 x i1> %cmp.i3705.i to i16 @@ -1564,10 +1541,8 @@ for.cond18.i.preheader.i: ; preds = %if.end16.i.i, %cond for.body.i1575.i: ; preds = %for.body.i1575.i.preheader, %if.end16.i.i %buf.addr.i1556.01982.i = phi ptr [ %add.ptr17.i.i, %if.end16.i.i ], [ %buf.addr.i470.1.i, %for.body.i1575.i.preheader ] - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i1556.01982.i, i64 16) ] %184 = load <16 x i8>, ptr %buf.addr.i1556.01982.i, align 16 %add.ptr5.i.i = getelementptr inbounds nuw i8, ptr %buf.addr.i1556.01982.i, i64 16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr5.i.i, i64 16) ] %185 = load <16 x i8>, ptr %add.ptr5.i.i, align 16 %186 = shufflevector <16 x i8> %184, <16 x i8> %185, <32 x i32> %187 = and <32 x i8> %186, splat (i8 -33) @@ -1590,7 +1565,6 @@ if.end16.i.i: ; preds = %for.body.i1575.i for.body22.i.i: ; preds = %for.cond18.i.preheader.i, %if.end45.i1572.i %buf.addr.i1556.11986.i = phi ptr [ %add.ptr47.i.i, %if.end45.i1572.i ], [ %buf.addr.i1556.0.lcssa.i, %for.cond18.i.preheader.i ] - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i1556.11986.i, i64 16) ] %190 = load <16 x i8>, ptr %buf.addr.i1556.11986.i, align 16 %191 = and <16 x i8> %190, splat (i8 -33) %cmp.i3789.i = icmp eq <16 x i8> %vecinit15.i2782.i, %191 @@ -1668,7 +1642,6 @@ for.cond.i6150.i: ; preds = %for.cond.i6150.i.pr br i1 %cmp.i6152.i, label %for.body.i6154.i, label %cond.false25.i802.i for.body.i6154.i: ; preds = %for.cond.i6150.i - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i6145.0.i, i64 16) ] %206 = load <16 x i8>, ptr %buf.addr.i6145.0.i, align 16 %cmp.i25.i6155.i = icmp eq <16 x i8> %vecinit15.i2485.i, %206 %cmp.i.i6157.i = icmp eq <16 x i8> %vecinit15.i2452.i, %206 @@ -1682,7 +1655,7 @@ for.body.i6154.i: ; preds = %for.cond.i6150.i br i1 %cmp7.i6165.i, label %land.lhs.true.i6176.i, label %if.end.i6166.i land.lhs.true.i6176.i: ; preds = %for.body.i6154.i - %211 = load i8, ptr %add.ptr.i6151.i, align 16 + %211 = load i8, ptr %add.ptr.i6151.i, align 1 %cmp12.i6180.i = icmp eq i8 %211, %199 br i1 %cmp12.i6180.i, label %cond.end15.i796.split.loop.exit.i, label %if.end.i6166.i @@ -1770,7 +1743,6 @@ for.cond.i5568.i: ; preds = %for.cond.i5568.i.pr br i1 %cmp.i5570.i, label %for.body.i5572.i, label %cond.true22.i892.i for.body.i5572.i: ; preds = %for.cond.i5568.i - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.i5545.0.i, i64 16) ] %229 = load <16 x i8>, ptr %buf.addr.i5545.0.i, align 16 %230 = and <16 x i8> %229, splat (i8 -33) %cmp.i30.i.i = icmp eq <16 x i8> %vecinit15.i2419.i, %230 @@ -1786,7 +1758,7 @@ for.body.i5572.i: ; preds = %for.cond.i5568.i br i1 %cmp9.i.i, label %land.lhs.true.i.i, label %if.end.i5581.i land.lhs.true.i.i: ; preds = %for.body.i5572.i - %236 = load i8, ptr %add.ptr.i5569.i, align 16 + %236 = load i8, ptr %add.ptr.i5569.i, align 1 %237 = and i8 %236, -33 %cmp15.i.i = icmp eq i8 %237, %221 br i1 %cmp15.i.i, label %cond.end15.i865.split.loop.exit.i, label %if.end.i5581.i @@ -1836,7 +1808,7 @@ sw.bb16.i.i: ; preds = %do.end60.i %248 = load <2 x i64>, ptr %lo.i.i, align 16 %hi.i.i = getelementptr inbounds nuw i8, ptr %spec.select, i64 32 %249 = load <2 x i64>, ptr %hi.i.i, align 16 - %call19.i.i = call ptr @shuftiExec(<2 x i64> noundef %248, <2 x i64> noundef %249, ptr noundef %add.ptr61.i, ptr noundef %add.ptr62.i) #8 + %call19.i.i = call ptr @shuftiExec(<2 x i64> noundef %248, <2 x i64> noundef %249, ptr noundef %add.ptr61.i, ptr noundef %add.ptr62.i) #7 br label %run_hwlm_accel.exit.i sw.bb20.i.i: ; preds = %do.end60.i @@ -1844,7 +1816,7 @@ sw.bb20.i.i: ; preds = %do.end60.i %250 = load <2 x i64>, ptr %mask1.i.i, align 16 %mask2.i.i = getelementptr inbounds nuw i8, ptr %spec.select, i64 32 %251 = load <2 x i64>, ptr %mask2.i.i, align 16 - %call23.i.i = call ptr @truffleExec(<2 x i64> noundef %250, <2 x i64> noundef %251, ptr noundef %add.ptr61.i, ptr noundef %add.ptr62.i) #8 + %call23.i.i = call ptr @truffleExec(<2 x i64> noundef %250, <2 x i64> noundef %251, ptr noundef %add.ptr61.i, ptr noundef %add.ptr62.i) #7 br label %run_hwlm_accel.exit.i run_hwlm_accel.exit.i: ; preds = %if.end9.i537.i, %if.end.i533.i, %if.end9.i459.i, %if.end.i455.i, %sw.bb20.i.i, %sw.bb16.i.i, %if.end32.i877.i, %cond.true22.i892.i, %cond.end15.i865.i, %cond.true.i910.i, %if.end32.i808.i, %cond.false25.i802.i, %cond.end15.i796.i, %cond.false.i832.i, %cond.true37.i506.i, %if.then40.i.i, %if.then13.i.i, %cond.true.i525.i, %for.cond.i528.preheader.i, %cond.false40.i418.i, %if.then36.i2021.i, %if.then10.i2046.i, %cond.false.i438.i, %for.cond.i450.preheader.i, %do.end60.i @@ -1867,7 +1839,7 @@ do_accel_streaming.exit: ; preds = %if.end14, %lor.lhs. %start.addr.0 = phi i64 [ %start, %if.end14 ], [ %start, %lor.lhs.false.i ], [ %start, %run_hwlm_accel.exit.i ], [ %add.i, %if.then68.i ], [ 0, %if.end51.i ] call void @llvm.lifetime.end.p0(i64 17, ptr nonnull %temp.i) %add.ptr23 = getelementptr inbounds nuw i8, ptr %t, i64 192 - %call24 = call i32 @fdrExecStreaming(ptr noundef nonnull %add.ptr23, ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 noundef %len, i64 noundef %start.addr.0, ptr noundef %cb, ptr noundef %scratch, i64 noundef %groups) #8 + %call24 = call i32 @fdrExecStreaming(ptr noundef nonnull %add.ptr23, ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 noundef %len, i64 noundef %start.addr.0, ptr noundef %cb, ptr noundef %scratch, i64 noundef %groups) #7 br label %return return: ; preds = %entry, %do_accel_streaming.exit, %if.else, %if.then11 @@ -1886,33 +1858,29 @@ declare ptr @truffleExec(<2 x i64> noundef, <2 x i64> noundef, ptr noundef, ptr ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.cttz.i32(i32, i1 immarg) #2 -; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #3 - ; 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) #4 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3 ; 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: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i16 @llvm.cttz.i16(i16, i1 immarg) #6 +declare i16 @llvm.cttz.i16(i16, i1 immarg) #5 ; 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"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="corei7" "target-features"="+cmov,+crc32,+cx16,+cx8,+fxsr,+mmx,+popcnt,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="corei7" "target-features"="+cmov,+crc32,+cx16,+cx8,+fxsr,+mmx,+popcnt,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" } attributes #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -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 speculatable willreturn memory(none) } -attributes #7 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #8 = { nounwind } +attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #6 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #7 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/hyperscan/optimized/shufti.c.ll b/bench/hyperscan/optimized/shufti.c.ll index 4efa360bcd5..4601cb44d13 100644 --- a/bench/hyperscan/optimized/shufti.c.ll +++ b/bench/hyperscan/optimized/shufti.c.ll @@ -3,7 +3,7 @@ source_filename = "bench/hyperscan/original/shufti.c.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 norecurse nosync nounwind memory(argmem: read, inaccessiblemem: write) uwtable +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read) uwtable define hidden ptr @shuftiExec(<2 x i64> noundef %mask_lo, <2 x i64> noundef %mask_hi, ptr noundef %buf, ptr noundef %buf_end) local_unnamed_addr #0 { entry: %mask_lo.addr = alloca <2 x i64>, align 16 @@ -77,7 +77,6 @@ if.end6: ; preds = %if.end while.body: ; preds = %if.end6, %if.end13 %buf.addr.063 = phi ptr [ %add.ptr14, %if.end13 ], [ %add.ptr, %if.end6 ] - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.063, i64 16) ] %16 = load <2 x i64>, ptr %buf.addr.063, align 16 %17 = bitcast <2 x i64> %16 to <16 x i8> %18 = and <16 x i8> %17, splat (i8 15) @@ -129,7 +128,7 @@ return: ; preds = %for.body.i, %if.end ret ptr %retval.0 } -; Function Attrs: nofree norecurse nosync nounwind memory(read, inaccessiblemem: write) uwtable +; Function Attrs: nofree norecurse nosync nounwind memory(read, inaccessiblemem: none) uwtable define hidden nonnull ptr @rshuftiExec(<2 x i64> noundef %mask_lo, <2 x i64> noundef %mask_hi, ptr noundef %buf, ptr noundef %buf_end) local_unnamed_addr #1 { entry: %mask_lo.addr = alloca <2 x i64>, align 16 @@ -204,7 +203,6 @@ while.cond: ; preds = %while.body, %if.end while.body: ; preds = %while.cond %add.ptr10 = getelementptr inbounds i8, ptr %buf_end.addr.0, i64 -16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr10, i64 16) ] %17 = load <2 x i64>, ptr %add.ptr10, align 16 %18 = bitcast <2 x i64> %17 to <16 x i8> %19 = and <16 x i8> %18, splat (i8 15) @@ -264,7 +262,7 @@ return: ; preds = %for.cond.i, %for.bo ret ptr %retval.0 } -; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read, inaccessiblemem: write) uwtable +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: read) uwtable define hidden ptr @shuftiDoubleExec(<2 x i64> noundef %mask1_lo, <2 x i64> noundef %mask1_hi, <2 x i64> noundef %mask2_lo, <2 x i64> noundef %mask2_hi, ptr noundef %buf, ptr noundef readonly %buf_end) local_unnamed_addr #0 { entry: %0 = load <2 x i64>, ptr %buf, align 1 @@ -305,7 +303,6 @@ if.end: ; preds = %entry while.body: ; preds = %if.end, %if.end9 %buf.addr.088 = phi ptr [ %add.ptr10, %if.end9 ], [ %add.ptr, %if.end ] - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.088, i64 16) ] %17 = load <2 x i64>, ptr %buf.addr.088, align 16 %and.i278 = lshr <2 x i64> %17, splat (i64 4) %18 = bitcast <2 x i64> %17 to <16 x i8> @@ -370,21 +367,17 @@ return: ; preds = %return.loopexit, %w ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(none) declare <16 x i8> @llvm.x86.ssse3.pshuf.b.128(<16 x i8>, <16 x i8>) #2 -; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #3 - ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.ctlz.i32(i32, i1 immarg) #4 +declare i32 @llvm.ctlz.i32(i32, i1 immarg) #3 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i16 @llvm.cttz.i16(i16, i1 immarg) #5 +declare i16 @llvm.cttz.i16(i16, i1 immarg) #4 -attributes #0 = { nofree norecurse nosync nounwind memory(argmem: read, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="corei7" "target-features"="+cmov,+crc32,+cx16,+cx8,+fxsr,+mmx,+popcnt,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" } -attributes #1 = { nofree norecurse nosync nounwind memory(read, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="corei7" "target-features"="+cmov,+crc32,+cx16,+cx8,+fxsr,+mmx,+popcnt,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" } +attributes #0 = { nofree norecurse nosync nounwind memory(argmem: read) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="corei7" "target-features"="+cmov,+crc32,+cx16,+cx8,+fxsr,+mmx,+popcnt,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" } +attributes #1 = { nofree norecurse nosync nounwind memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="corei7" "target-features"="+cmov,+crc32,+cx16,+cx8,+fxsr,+mmx,+popcnt,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" } attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(none) } -attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/hyperscan/optimized/teddy.c.ll b/bench/hyperscan/optimized/teddy.c.ll index 837e0f2405b..fabb57d1edf 100644 --- a/bench/hyperscan/optimized/teddy.c.ll +++ b/bench/hyperscan/optimized/teddy.c.ll @@ -2110,7 +2110,6 @@ do.end254: ; preds = %do.end181, %do.body %last_match.32 = phi i32 [ %last_match.29, %do.body239 ], [ %last_match.27, %do.body228 ], [ %last_match.221734, %do.end181 ] %control.addr.69 = phi i64 [ %control.addr.66, %do.body239 ], [ %control.addr.64, %do.body228 ], [ %control.addr.59, %do.end181 ] %add.ptr255 = getelementptr inbounds nuw i8, ptr %ptr.3, i64 16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr255, i64 16) ] %294 = load <2 x i64>, ptr %add.ptr255, align 16 %295 = lshr <2 x i64> %294, splat (i64 4) %296 = load <16 x i8>, ptr %add.ptr.i, align 16 @@ -5394,7 +5393,6 @@ do.end254: ; preds = %do.end181, %do.body %last_match.32 = phi i32 [ %last_match.29, %do.body239 ], [ %last_match.27, %do.body228 ], [ %last_match.221734, %do.end181 ] %control.addr.69 = phi i64 [ %control.addr.66, %do.body239 ], [ %control.addr.64, %do.body228 ], [ %control.addr.59, %do.end181 ] %add.ptr255 = getelementptr inbounds nuw i8, ptr %ptr.3, i64 16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr255, i64 16) ] %294 = load <2 x i64>, ptr %add.ptr255, align 16 %295 = lshr <2 x i64> %294, splat (i64 4) %296 = load <16 x i8>, ptr %add.ptr.i, align 16 @@ -8723,7 +8721,6 @@ do.end255: ; preds = %do.end182, %do.body %last_match.32 = phi i32 [ %last_match.29, %do.body240 ], [ %last_match.27, %do.body229 ], [ %last_match.221885, %do.end182 ] %control.addr.69 = phi i64 [ %control.addr.66, %do.body240 ], [ %control.addr.64, %do.body229 ], [ %control.addr.59, %do.end182 ] %add.ptr256 = getelementptr inbounds nuw i8, ptr %ptr.3, i64 16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr256, i64 16) ] %312 = load <2 x i64>, ptr %add.ptr256, align 16 %313 = lshr <2 x i64> %312, splat (i64 4) %314 = load <16 x i8>, ptr %add.ptr.i, align 16 @@ -12079,7 +12076,6 @@ do.end255: ; preds = %do.end182, %do.body %last_match.32 = phi i32 [ %last_match.29, %do.body240 ], [ %last_match.27, %do.body229 ], [ %last_match.221885, %do.end182 ] %control.addr.69 = phi i64 [ %control.addr.66, %do.body240 ], [ %control.addr.64, %do.body229 ], [ %control.addr.59, %do.end182 ] %add.ptr256 = getelementptr inbounds nuw i8, ptr %ptr.3, i64 16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr256, i64 16) ] %312 = load <2 x i64>, ptr %add.ptr256, align 16 %313 = lshr <2 x i64> %312, splat (i64 4) %314 = load <16 x i8>, ptr %add.ptr.i, align 16 @@ -15465,7 +15461,6 @@ do.end256: ; preds = %do.end183, %do.body %last_match.32 = phi i32 [ %last_match.29, %do.body241 ], [ %last_match.27, %do.body230 ], [ %last_match.222036, %do.end183 ] %control.addr.69 = phi i64 [ %control.addr.66, %do.body241 ], [ %control.addr.64, %do.body230 ], [ %control.addr.59, %do.end183 ] %add.ptr257 = getelementptr inbounds nuw i8, ptr %ptr.3, i64 16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr257, i64 16) ] %327 = load <2 x i64>, ptr %add.ptr257, align 16 %328 = lshr <2 x i64> %327, splat (i64 4) %329 = load <16 x i8>, ptr %add.ptr.i, align 16 @@ -18878,7 +18873,6 @@ do.end256: ; preds = %do.end183, %do.body %last_match.32 = phi i32 [ %last_match.29, %do.body241 ], [ %last_match.27, %do.body230 ], [ %last_match.222036, %do.end183 ] %control.addr.69 = phi i64 [ %control.addr.66, %do.body241 ], [ %control.addr.64, %do.body230 ], [ %control.addr.59, %do.end183 ] %add.ptr257 = getelementptr inbounds nuw i8, ptr %ptr.3, i64 16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr257, i64 16) ] %327 = load <2 x i64>, ptr %add.ptr257, align 16 %328 = lshr <2 x i64> %327, splat (i64 4) %329 = load <16 x i8>, ptr %add.ptr.i, align 16 @@ -22321,7 +22315,6 @@ do.end257: ; preds = %do.end184, %do.body %last_match.32 = phi i32 [ %last_match.29, %do.body242 ], [ %last_match.27, %do.body231 ], [ %last_match.222187, %do.end184 ] %control.addr.69 = phi i64 [ %control.addr.66, %do.body242 ], [ %control.addr.64, %do.body231 ], [ %control.addr.59, %do.end184 ] %add.ptr258 = getelementptr inbounds nuw i8, ptr %ptr.3, i64 16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr258, i64 16) ] %342 = load <2 x i64>, ptr %add.ptr258, align 16 %343 = lshr <2 x i64> %342, splat (i64 4) %344 = load <16 x i8>, ptr %add.ptr.i, align 16 @@ -25791,7 +25784,6 @@ do.end257: ; preds = %do.end184, %do.body %last_match.32 = phi i32 [ %last_match.29, %do.body242 ], [ %last_match.27, %do.body231 ], [ %last_match.222187, %do.end184 ] %control.addr.69 = phi i64 [ %control.addr.66, %do.body242 ], [ %control.addr.64, %do.body231 ], [ %control.addr.59, %do.end184 ] %add.ptr258 = getelementptr inbounds nuw i8, ptr %ptr.3, i64 16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr258, i64 16) ] %342 = load <2 x i64>, ptr %add.ptr258, align 16 %343 = lshr <2 x i64> %342, splat (i64 4) %344 = load <16 x i8>, ptr %add.ptr.i, align 16 diff --git a/bench/hyperscan/optimized/truffle.c.ll b/bench/hyperscan/optimized/truffle.c.ll index a81f2179400..ab0ee99dd1b 100644 --- a/bench/hyperscan/optimized/truffle.c.ll +++ b/bench/hyperscan/optimized/truffle.c.ll @@ -3,7 +3,7 @@ source_filename = "bench/hyperscan/original/truffle.c.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 norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable +; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable define hidden ptr @truffleExec(<2 x i64> noundef %shuf_mask_lo_highclear, <2 x i64> noundef %shuf_mask_lo_highset, ptr noundef %buf, ptr noundef %buf_end) local_unnamed_addr #0 { entry: %chars.i = alloca <2 x i64>, align 16 @@ -82,7 +82,6 @@ if.end4: ; preds = %if.end while.body: ; preds = %if.end4, %if.end11 %buf.addr.098 = phi ptr [ %add.ptr12, %if.end11 ], [ %add.ptr, %if.end4 ] - call void @llvm.assume(i1 true) [ "align"(ptr %buf.addr.098, i64 16) ] %28 = load <2 x i64>, ptr %buf.addr.098, align 16 %29 = bitcast <2 x i64> %28 to <16 x i8> %30 = tail call <16 x i8> @llvm.x86.ssse3.pshuf.b.128(<16 x i8> %15, <16 x i8> %29) @@ -138,7 +137,7 @@ return: ; preds = %return.loopexit, %w ret ptr %retval.0 } -; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: write) uwtable +; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable define hidden nonnull ptr @rtruffleExec(<2 x i64> noundef %shuf_mask_lo_highclear, <2 x i64> noundef %shuf_mask_lo_highset, ptr noundef %buf, ptr noundef %buf_end) local_unnamed_addr #1 { entry: %chars.i = alloca <2 x i64>, align 16 @@ -228,7 +227,6 @@ while.cond: ; preds = %while.body, %if.end while.body: ; preds = %while.cond %add.ptr8 = getelementptr inbounds i8, ptr %buf_end.addr.0, i64 -16 - call void @llvm.assume(i1 true) [ "align"(ptr %add.ptr8, i64 16) ] %29 = load <2 x i64>, ptr %add.ptr8, align 16 %30 = bitcast <2 x i64> %29 to <16 x i8> %31 = tail call <16 x i8> @llvm.x86.ssse3.pshuf.b.128(<16 x i8> %15, <16 x i8> %30) @@ -301,29 +299,25 @@ declare <16 x i8> @llvm.x86.ssse3.pshuf.b.128(<16 x i8>, <16 x i8>) #3 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.cttz.i32(i32, i1 immarg) #4 -; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #5 - ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.ctlz.i32(i32, i1 immarg) #4 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i16 @llvm.cttz.i16(i16, i1 immarg) #6 +declare i16 @llvm.cttz.i16(i16, i1 immarg) #5 ; 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 = { nofree norecurse nosync nounwind memory(argmem: readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="corei7" "target-features"="+cmov,+crc32,+cx16,+cx8,+fxsr,+mmx,+popcnt,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" } -attributes #1 = { nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="corei7" "target-features"="+cmov,+crc32,+cx16,+cx8,+fxsr,+mmx,+popcnt,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" } +attributes #0 = { nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="corei7" "target-features"="+cmov,+crc32,+cx16,+cx8,+fxsr,+mmx,+popcnt,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" } +attributes #1 = { nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="corei7" "target-features"="+cmov,+crc32,+cx16,+cx8,+fxsr,+mmx,+popcnt,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" } attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(none) } attributes #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #5 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #7 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #6 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/image-rs/optimized/244uszkx0e8t5ie1.ll b/bench/image-rs/optimized/244uszkx0e8t5ie1.ll index 4d5f59959ca..2969a3e9ed2 100644 --- a/bench/image-rs/optimized/244uszkx0e8t5ie1.ll +++ b/bench/image-rs/optimized/244uszkx0e8t5ie1.ll @@ -7779,6 +7779,7 @@ define internal fastcc noundef ptr @"_ZN5image6codecs4jpeg7encoder18BitWriter$LT store i8 -1, ptr %5, align 2 %6 = getelementptr inbounds nuw i8, ptr %5, i64 1 store i8 %0, ptr %6, align 1 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %7 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %7) tail call void @llvm.experimental.noalias.scope.decl(metadata !1027) @@ -7816,6 +7817,7 @@ define internal fastcc noundef ptr @"_ZN5image6codecs4jpeg7encoder18BitWriter$LT %23 = add i16 %22, 2 %24 = call i16 @llvm.bswap.i16(i16 %23) store i16 %24, ptr %4, align 2 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] call void @llvm.experimental.noalias.scope.decl(metadata !1037) %25 = load i64, ptr %.0.val, align 8, !alias.scope !1037, !noalias !1040, !noundef !7 %26 = sub i64 %25, %21 @@ -7847,6 +7849,7 @@ define internal fastcc noundef ptr @"_ZN5image6codecs4jpeg7encoder18BitWriter$LT 35: ; preds = %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17h9b5b746d84772b2cE.llvm.15109044229312055141.exit17._crit_edge", %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17h9b5b746d84772b2cE.llvm.15109044229312055141.exit17.thread" %36 = phi i64 [ %.pre3, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17h9b5b746d84772b2cE.llvm.15109044229312055141.exit17._crit_edge" ], [ %31, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$9write_all17h9b5b746d84772b2cE.llvm.15109044229312055141.exit17.thread" ] call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %4) + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] call void @llvm.experimental.noalias.scope.decl(metadata !1047) %37 = load i64, ptr %.0.val, align 8, !alias.scope !1047, !noalias !1050, !noundef !7 %38 = sub i64 %37, %36 diff --git a/bench/image-rs/optimized/34r8dryqmufipcqz.ll b/bench/image-rs/optimized/34r8dryqmufipcqz.ll index f46d0d7e04b..05ec5dc60ac 100644 --- a/bench/image-rs/optimized/34r8dryqmufipcqz.ll +++ b/bench/image-rs/optimized/34r8dryqmufipcqz.ll @@ -5281,6 +5281,7 @@ define internal fastcc void @"_ZN169_$LT$exr..image..read..specific_channels..Re %43 = phi i64 [ %48, %65 ], [ %.promoted.i.i.i.i, %.lr.ph.i.preheader.i.i.i.i ] %44 = phi ptr [ %45, %65 ], [ %.promoted.i.i.i.i.i, %.lr.ph.i.preheader.i.i.i.i ] %45 = getelementptr inbounds nuw i8, ptr %44, i64 64 + call void @llvm.assume(i1 true) [ "align"(ptr %44, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !1454) tail call void @llvm.experimental.noalias.scope.decl(metadata !1455) tail call void @llvm.experimental.noalias.scope.decl(metadata !1456) @@ -5289,6 +5290,9 @@ define internal fastcc void @"_ZN169_$LT$exr..image..read..specific_channels..Re %switch.i.i.i.i.us.i.i.i = icmp eq i8 %47, 1 %..i.i.i.i.us.i.i.i = select i1 %switch.i.i.i.i.us.i.i.i, i64 2, i64 4 %48 = add i64 %..i.i.i.i.us.i.i.i, %43 + call void @llvm.assume(i1 true) [ "align"(ptr %44, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %44, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %44, i64 8) ] %49 = getelementptr inbounds nuw i8, ptr %44, i64 32 %50 = load i64, ptr %49, align 8, !alias.scope !1459, !noalias !1466, !noundef !19 %51 = icmp ugt i64 %50, 24 @@ -5333,6 +5337,7 @@ define internal fastcc void @"_ZN169_$LT$exr..image..read..specific_channels..Re %67 = phi i64 [ %72, %92 ], [ %.promoted.i.i.i.i, %.lr.ph.i.preheader.i.i.i.i ] %68 = phi ptr [ %69, %92 ], [ %.promoted.i.i.i.i.i, %.lr.ph.i.preheader.i.i.i.i ] %69 = getelementptr inbounds nuw i8, ptr %68, i64 64 + call void @llvm.assume(i1 true) [ "align"(ptr %68, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !1454) tail call void @llvm.experimental.noalias.scope.decl(metadata !1455) tail call void @llvm.experimental.noalias.scope.decl(metadata !1456) @@ -5341,6 +5346,9 @@ define internal fastcc void @"_ZN169_$LT$exr..image..read..specific_channels..Re %switch.i.i.i.i.i.i.i = icmp eq i8 %71, 1 %..i.i.i.i.i.i.i = select i1 %switch.i.i.i.i.i.i.i, i64 2, i64 4 %72 = add i64 %..i.i.i.i.i.i.i, %67 + call void @llvm.assume(i1 true) [ "align"(ptr %68, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %68, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %68, i64 8) ] %73 = getelementptr inbounds nuw i8, ptr %68, i64 32 %74 = load i64, ptr %73, align 8, !alias.scope !1459, !noalias !1474, !noundef !19 %75 = icmp ugt i64 %74, 24 @@ -5571,6 +5579,7 @@ common.resume: ; preds = %.body, %112, %.body %146 = phi ptr [ %147, %167 ], [ %.promoted.i.i69.i.i, %.lr.ph.i.preheader.i.i.i ] %147 = getelementptr inbounds nuw i8, ptr %146, i64 64 store ptr %147, ptr %19, align 8, !alias.scope !1530, !noalias !1533 + call void @llvm.assume(i1 true) [ "align"(ptr %146, i64 8) ] call void @llvm.experimental.noalias.scope.decl(metadata !1546) call void @llvm.experimental.noalias.scope.decl(metadata !1547) call void @llvm.experimental.noalias.scope.decl(metadata !1548) @@ -5580,6 +5589,9 @@ common.resume: ; preds = %.body, %112, %.body %..i.i.i.i.us.i.i = select i1 %switch.i.i.i.i.us.i.i, i64 2, i64 4 %150 = add i64 %..i.i.i.i.us.i.i, %145 store i64 %150, ptr %129, align 8, !alias.scope !1536, !noalias !1539 + call void @llvm.assume(i1 true) [ "align"(ptr %146, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %146, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %146, i64 8) ] %151 = getelementptr inbounds nuw i8, ptr %146, i64 32 %152 = load i64, ptr %151, align 8, !alias.scope !1551, !noalias !1558, !noundef !19 %153 = icmp ugt i64 %152, 24 @@ -5633,6 +5645,7 @@ common.resume: ; preds = %.body, %112, %.body %170 = phi ptr [ %171, %193 ], [ %.promoted.i.i69.i.i, %.lr.ph.i.preheader.i.i.i ] %171 = getelementptr inbounds nuw i8, ptr %170, i64 64 store ptr %171, ptr %19, align 8, !alias.scope !1530, !noalias !1533 + call void @llvm.assume(i1 true) [ "align"(ptr %170, i64 8) ] call void @llvm.experimental.noalias.scope.decl(metadata !1546) call void @llvm.experimental.noalias.scope.decl(metadata !1547) call void @llvm.experimental.noalias.scope.decl(metadata !1548) @@ -5642,6 +5655,9 @@ common.resume: ; preds = %.body, %112, %.body %..i.i.i.i.i.i = select i1 %switch.i.i.i.i.i.i, i64 2, i64 4 %174 = add i64 %..i.i.i.i.i.i, %169 store i64 %174, ptr %129, align 8, !alias.scope !1536, !noalias !1539 + call void @llvm.assume(i1 true) [ "align"(ptr %170, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %170, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %170, i64 8) ] %175 = getelementptr inbounds nuw i8, ptr %170, i64 32 %176 = load i64, ptr %175, align 8, !alias.scope !1551, !noalias !1558, !noundef !19 %177 = icmp ugt i64 %176, 24 @@ -5983,6 +5999,7 @@ common.resume: ; preds = %.body, %112, %.body %270 = phi ptr [ %271, %295 ], [ %.promoted.i.i69.i, %.lr.ph.i.preheader.i.i ] %271 = getelementptr inbounds nuw i8, ptr %270, i64 64 store ptr %271, ptr %24, align 8, !alias.scope !1643, !noalias !1646 + call void @llvm.assume(i1 true) [ "align"(ptr %270, i64 8) ] call void @llvm.experimental.noalias.scope.decl(metadata !1658) call void @llvm.experimental.noalias.scope.decl(metadata !1659) call void @llvm.experimental.noalias.scope.decl(metadata !1660) @@ -5992,6 +6009,9 @@ common.resume: ; preds = %.body, %112, %.body %..i.i.i.i.i = select i1 %switch.i.i.i.i.i, i64 2, i64 4 %274 = add i64 %..i.i.i.i.i, %269 store i64 %274, ptr %253, align 8, !alias.scope !1649, !noalias !1652 + call void @llvm.assume(i1 true) [ "align"(ptr %270, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %270, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %270, i64 8) ] %275 = getelementptr inbounds nuw i8, ptr %270, i64 32 %276 = load i64, ptr %275, align 8, !alias.scope !1663, !noalias !1670, !noundef !19 %277 = icmp ugt i64 %276, 24 @@ -6082,6 +6102,7 @@ common.resume: ; preds = %.body, %112, %.body 299: ; preds = %"_ZN162_$LT$exr..image..read..specific_channels..ReadRequiredChannel$LT$ReadChannels$C$Sample$GT$$u20$as$u20$exr..image..read..specific_channels..ReadSpecificChannel$GT$23create_recursive_reader28_$u7b$$u7b$closure$u7d$$u7d$17h9fbae7229805bbc8E.exit.i.i.i.i.i" %300 = getelementptr inbounds nuw i8, ptr %270, i64 57 %301 = getelementptr inbounds nuw i8, ptr %270, i64 32 + call void @llvm.assume(i1 true) [ "align"(ptr %270, i64 8) ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24), !noalias !1416 call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %.sroa.032.sroa.0.i.sroa.9) call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %23), !noalias !1416 @@ -6323,6 +6344,7 @@ common.resume: ; preds = %.body, %112, %.body %358 = phi ptr [ %359, %383 ], [ %.promoted.i.i31, %.lr.ph.i.preheader.i ] %359 = getelementptr inbounds nuw i8, ptr %358, i64 64 store ptr %359, ptr %26, align 8, !alias.scope !1726, !noalias !1729 + call void @llvm.assume(i1 true) [ "align"(ptr %358, i64 8) ] call void @llvm.experimental.noalias.scope.decl(metadata !1740) call void @llvm.experimental.noalias.scope.decl(metadata !1741) call void @llvm.experimental.noalias.scope.decl(metadata !1742) @@ -6332,6 +6354,9 @@ common.resume: ; preds = %.body, %112, %.body %..i.i.i.i = select i1 %switch.i.i.i.i, i64 2, i64 4 %362 = add i64 %..i.i.i.i, %357 store i64 %362, ptr %341, align 8, !alias.scope !1732, !noalias !1735 + call void @llvm.assume(i1 true) [ "align"(ptr %358, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %358, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %358, i64 8) ] %363 = getelementptr inbounds nuw i8, ptr %358, i64 32 %364 = load i64, ptr %363, align 8, !alias.scope !1745, !noalias !1752, !noundef !19 %365 = icmp ugt i64 %364, 24 @@ -6402,6 +6427,7 @@ common.resume: ; preds = %.body, %112, %.body 385: ; preds = %"_ZN169_$LT$exr..image..read..specific_channels..ReadOptionalChannel$LT$ReadChannels$C$DefaultSample$GT$$u20$as$u20$exr..image..read..specific_channels..ReadSpecificChannel$GT$23create_recursive_reader28_$u7b$$u7b$closure$u7d$$u7d$17ha62bb9fce9ab53a2E.exit.i.i.i.i" %386 = getelementptr inbounds nuw i8, ptr %358, i64 57 %387 = getelementptr inbounds nuw i8, ptr %358, i64 32 + call void @llvm.assume(i1 true) [ "align"(ptr %358, i64 8) ] call void @llvm.experimental.noalias.scope.decl(metadata !1759) %388 = load i64, ptr %387, align 8, !alias.scope !1762, !noalias !1767, !noundef !19 %389 = icmp ugt i64 %388, 24 @@ -7332,9 +7358,11 @@ _ZN4half8binary164arch19f16_to_f32_fallback17hb49fc63c8adc336dE.exit.i.i.i.i208: %.sroa.57.022.us.i.i.i.i200 = phi i64 [ %321, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i199" ], [ 16, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i195 ] %.sroa.06.021.us.i.i.i.i201 = phi ptr [ %322, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i199" ], [ %89, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i195 ] %320 = phi ptr [ %323, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i199" ], [ %88, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i195 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.06.021.us.i.i.i.i201, i64 2) ] %321 = add nsw i64 %.sroa.57.022.us.i.i.i.i200, -8 %322 = getelementptr inbounds nuw i8, ptr %.sroa.06.021.us.i.i.i.i201, i64 16 %323 = getelementptr inbounds nuw i8, ptr %320, i64 32 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.06.021.us.i.i.i.i201, i64 2) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !1929 call fastcc void @_ZN4half8binary164arch3x8623f16x8_to_f32x8_x86_f16c17h696f0d48b806f466E(ptr noalias nocapture noundef nonnull sret([8 x float]) align 4 dereferenceable(32) %5, ptr noalias noundef nonnull readonly align 2 dereferenceable(16) %.sroa.06.021.us.i.i.i.i201), !noalias !1933 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(32) %320, ptr noundef nonnull readonly align 4 dereferenceable(32) %5, i64 32, i1 false), !alias.scope !1934, !noalias !1938 @@ -8014,9 +8042,11 @@ _ZN4half8binary164arch19f16_to_f32_fallback17hb49fc63c8adc336dE.exit.i.i.i.i188: %.sroa.57.022.us.i.i.i.i180 = phi i64 [ %522, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i179" ], [ 16, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i175 ] %.sroa.06.021.us.i.i.i.i181 = phi ptr [ %523, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i179" ], [ %70, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i175 ] %521 = phi ptr [ %524, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i179" ], [ %69, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i175 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.06.021.us.i.i.i.i181, i64 2) ] %522 = add nsw i64 %.sroa.57.022.us.i.i.i.i180, -8 %523 = getelementptr inbounds nuw i8, ptr %.sroa.06.021.us.i.i.i.i181, i64 16 %524 = getelementptr inbounds nuw i8, ptr %521, i64 32 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.06.021.us.i.i.i.i181, i64 2) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8), !noalias !2137 call fastcc void @_ZN4half8binary164arch3x8623f16x8_to_f32x8_x86_f16c17h696f0d48b806f466E(ptr noalias nocapture noundef nonnull sret([8 x float]) align 4 dereferenceable(32) %8, ptr noalias noundef nonnull readonly align 2 dereferenceable(16) %.sroa.06.021.us.i.i.i.i181), !noalias !2141 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(32) %521, ptr noundef nonnull readonly align 4 dereferenceable(32) %8, i64 32, i1 false), !alias.scope !2142, !noalias !2146 @@ -8689,9 +8719,11 @@ _ZN4half8binary164arch19f16_to_f32_fallback17hb49fc63c8adc336dE.exit.i.i.i.i168: %.sroa.57.022.us.i.i.i.i160 = phi i64 [ %721, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i159" ], [ 16, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i155 ] %.sroa.06.021.us.i.i.i.i161 = phi ptr [ %722, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i159" ], [ %51, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i155 ] %720 = phi ptr [ %723, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i159" ], [ %50, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i155 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.06.021.us.i.i.i.i161, i64 2) ] %721 = add nsw i64 %.sroa.57.022.us.i.i.i.i160, -8 %722 = getelementptr inbounds nuw i8, ptr %.sroa.06.021.us.i.i.i.i161, i64 16 %723 = getelementptr inbounds nuw i8, ptr %720, i64 32 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.06.021.us.i.i.i.i161, i64 2) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11), !noalias !2345 call fastcc void @_ZN4half8binary164arch3x8623f16x8_to_f32x8_x86_f16c17h696f0d48b806f466E(ptr noalias nocapture noundef nonnull sret([8 x float]) align 4 dereferenceable(32) %11, ptr noalias noundef nonnull readonly align 2 dereferenceable(16) %.sroa.06.021.us.i.i.i.i161), !noalias !2349 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(32) %720, ptr noundef nonnull readonly align 4 dereferenceable(32) %11, i64 32, i1 false), !alias.scope !2350, !noalias !2354 @@ -9361,9 +9393,11 @@ _ZN4half8binary164arch19f16_to_f32_fallback17hb49fc63c8adc336dE.exit.i.i.i.i: ; %.sroa.57.022.us.i.i.i.i = phi i64 [ %918, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i" ], [ 16, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i ] %.sroa.06.021.us.i.i.i.i = phi ptr [ %919, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i" ], [ %32, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i ] %917 = phi ptr [ %920, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i" ], [ %31, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.06.021.us.i.i.i.i, i64 2) ] %918 = add nsw i64 %.sroa.57.022.us.i.i.i.i, -8 %919 = getelementptr inbounds nuw i8, ptr %.sroa.06.021.us.i.i.i.i, i64 16 %920 = getelementptr inbounds nuw i8, ptr %917, i64 32 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.06.021.us.i.i.i.i, i64 2) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14), !noalias !2551 call fastcc void @_ZN4half8binary164arch3x8623f16x8_to_f32x8_x86_f16c17h696f0d48b806f466E(ptr noalias nocapture noundef nonnull sret([8 x float]) align 4 dereferenceable(32) %14, ptr noalias noundef nonnull readonly align 2 dereferenceable(16) %.sroa.06.021.us.i.i.i.i), !noalias !2555 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(32) %917, ptr noundef nonnull readonly align 4 dereferenceable(32) %14, i64 32, i1 false), !alias.scope !2556, !noalias !2560 @@ -10642,9 +10676,11 @@ _ZN4half8binary164arch19f16_to_f32_fallback17hb49fc63c8adc336dE.exit.i.i.i.i208: %.sroa.57.022.us.i.i.i.i200 = phi i64 [ %321, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i199" ], [ 16, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i195 ] %.sroa.06.021.us.i.i.i.i201 = phi ptr [ %322, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i199" ], [ %89, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i195 ] %320 = phi ptr [ %323, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i199" ], [ %88, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i195 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.06.021.us.i.i.i.i201, i64 2) ] %321 = add nsw i64 %.sroa.57.022.us.i.i.i.i200, -8 %322 = getelementptr inbounds nuw i8, ptr %.sroa.06.021.us.i.i.i.i201, i64 16 %323 = getelementptr inbounds nuw i8, ptr %320, i64 32 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.06.021.us.i.i.i.i201, i64 2) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !2807 call fastcc void @_ZN4half8binary164arch3x8623f16x8_to_f32x8_x86_f16c17h696f0d48b806f466E(ptr noalias nocapture noundef nonnull sret([8 x float]) align 4 dereferenceable(32) %5, ptr noalias noundef nonnull readonly align 2 dereferenceable(16) %.sroa.06.021.us.i.i.i.i201), !noalias !2811 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(32) %320, ptr noundef nonnull readonly align 4 dereferenceable(32) %5, i64 32, i1 false), !alias.scope !2812, !noalias !2816 @@ -11324,9 +11360,11 @@ _ZN4half8binary164arch19f16_to_f32_fallback17hb49fc63c8adc336dE.exit.i.i.i.i188: %.sroa.57.022.us.i.i.i.i180 = phi i64 [ %522, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i179" ], [ 16, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i175 ] %.sroa.06.021.us.i.i.i.i181 = phi ptr [ %523, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i179" ], [ %70, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i175 ] %521 = phi ptr [ %524, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i179" ], [ %69, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i175 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.06.021.us.i.i.i.i181, i64 2) ] %522 = add nsw i64 %.sroa.57.022.us.i.i.i.i180, -8 %523 = getelementptr inbounds nuw i8, ptr %.sroa.06.021.us.i.i.i.i181, i64 16 %524 = getelementptr inbounds nuw i8, ptr %521, i64 32 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.06.021.us.i.i.i.i181, i64 2) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8), !noalias !3015 call fastcc void @_ZN4half8binary164arch3x8623f16x8_to_f32x8_x86_f16c17h696f0d48b806f466E(ptr noalias nocapture noundef nonnull sret([8 x float]) align 4 dereferenceable(32) %8, ptr noalias noundef nonnull readonly align 2 dereferenceable(16) %.sroa.06.021.us.i.i.i.i181), !noalias !3019 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(32) %521, ptr noundef nonnull readonly align 4 dereferenceable(32) %8, i64 32, i1 false), !alias.scope !3020, !noalias !3024 @@ -11999,9 +12037,11 @@ _ZN4half8binary164arch19f16_to_f32_fallback17hb49fc63c8adc336dE.exit.i.i.i.i168: %.sroa.57.022.us.i.i.i.i160 = phi i64 [ %721, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i159" ], [ 16, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i155 ] %.sroa.06.021.us.i.i.i.i161 = phi ptr [ %722, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i159" ], [ %51, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i155 ] %720 = phi ptr [ %723, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i159" ], [ %50, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i155 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.06.021.us.i.i.i.i161, i64 2) ] %721 = add nsw i64 %.sroa.57.022.us.i.i.i.i160, -8 %722 = getelementptr inbounds nuw i8, ptr %.sroa.06.021.us.i.i.i.i161, i64 16 %723 = getelementptr inbounds nuw i8, ptr %720, i64 32 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.06.021.us.i.i.i.i161, i64 2) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11), !noalias !3223 call fastcc void @_ZN4half8binary164arch3x8623f16x8_to_f32x8_x86_f16c17h696f0d48b806f466E(ptr noalias nocapture noundef nonnull sret([8 x float]) align 4 dereferenceable(32) %11, ptr noalias noundef nonnull readonly align 2 dereferenceable(16) %.sroa.06.021.us.i.i.i.i161), !noalias !3227 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(32) %720, ptr noundef nonnull readonly align 4 dereferenceable(32) %11, i64 32, i1 false), !alias.scope !3228, !noalias !3232 @@ -12671,9 +12711,11 @@ _ZN4half8binary164arch19f16_to_f32_fallback17hb49fc63c8adc336dE.exit.i.i.i.i: ; %.sroa.57.022.us.i.i.i.i = phi i64 [ %918, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i" ], [ 16, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i ] %.sroa.06.021.us.i.i.i.i = phi ptr [ %919, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i" ], [ %32, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i ] %917 = phi ptr [ %920, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i.i" ], [ %31, %_ZN10std_detect6detect5cache4test17h33e4ae1e0177e982E.exit.i.i.i ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.06.021.us.i.i.i.i, i64 2) ] %918 = add nsw i64 %.sroa.57.022.us.i.i.i.i, -8 %919 = getelementptr inbounds nuw i8, ptr %.sroa.06.021.us.i.i.i.i, i64 16 %920 = getelementptr inbounds nuw i8, ptr %917, i64 32 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.06.021.us.i.i.i.i, i64 2) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14), !noalias !3429 call fastcc void @_ZN4half8binary164arch3x8623f16x8_to_f32x8_x86_f16c17h696f0d48b806f466E(ptr noalias nocapture noundef nonnull sret([8 x float]) align 4 dereferenceable(32) %14, ptr noalias noundef nonnull readonly align 2 dereferenceable(16) %.sroa.06.021.us.i.i.i.i), !noalias !3433 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(32) %917, ptr noundef nonnull readonly align 4 dereferenceable(32) %14, i64 32, i1 false), !alias.scope !3434, !noalias !3438 @@ -13950,6 +13992,7 @@ define hidden void @"_ZN244_$LT$exr..image..recursive..Recursive$LT$InnerDescrip %23 = phi i64 [ %28, %51 ], [ %.promoted.i, %.lr.ph.i.preheader.i ] %24 = phi ptr [ %25, %51 ], [ %.promoted.i.i, %.lr.ph.i.preheader.i ] %25 = getelementptr inbounds nuw i8, ptr %24, i64 64 + call void @llvm.assume(i1 true) [ "align"(ptr %24, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !3718) tail call void @llvm.experimental.noalias.scope.decl(metadata !3719) tail call void @llvm.experimental.noalias.scope.decl(metadata !3720) @@ -13958,6 +14001,9 @@ define hidden void @"_ZN244_$LT$exr..image..recursive..Recursive$LT$InnerDescrip %switch.i.i.i.i = icmp eq i8 %27, 1 %..i.i.i.i = select i1 %switch.i.i.i.i, i64 2, i64 4 %28 = add i64 %..i.i.i.i, %23 + call void @llvm.assume(i1 true) [ "align"(ptr %24, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %24, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %24, i64 8) ] %29 = getelementptr inbounds nuw i8, ptr %24, i64 32 %30 = load i64, ptr %29, align 8, !alias.scope !3723, !noalias !3730, !noundef !19 %31 = icmp ugt i64 %30, 24 @@ -14061,6 +14107,7 @@ define hidden void @"_ZN244_$LT$exr..image..recursive..Recursive$LT$InnerDescrip %72 = phi i64 [ %77, %94 ], [ %.promoted.i.i14, %.lr.ph.i.preheader.i.i ] %73 = phi ptr [ %74, %94 ], [ %.promoted.i.i.i, %.lr.ph.i.preheader.i.i ] %74 = getelementptr inbounds nuw i8, ptr %73, i64 64 + call void @llvm.assume(i1 true) [ "align"(ptr %73, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !3768) tail call void @llvm.experimental.noalias.scope.decl(metadata !3769) tail call void @llvm.experimental.noalias.scope.decl(metadata !3770) @@ -14069,6 +14116,9 @@ define hidden void @"_ZN244_$LT$exr..image..recursive..Recursive$LT$InnerDescrip %switch.i.i.i.i.us.i = icmp eq i8 %76, 1 %..i.i.i.i.us.i = select i1 %switch.i.i.i.i.us.i, i64 2, i64 4 %77 = add i64 %..i.i.i.i.us.i, %72 + call void @llvm.assume(i1 true) [ "align"(ptr %73, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %73, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %73, i64 8) ] %78 = getelementptr inbounds nuw i8, ptr %73, i64 32 %79 = load i64, ptr %78, align 8, !alias.scope !3773, !noalias !3780, !noundef !19 %80 = icmp ugt i64 %79, 24 @@ -14113,6 +14163,7 @@ define hidden void @"_ZN244_$LT$exr..image..recursive..Recursive$LT$InnerDescrip %96 = phi i64 [ %101, %121 ], [ %.promoted.i.i14, %.lr.ph.i.preheader.i.i ] %97 = phi ptr [ %98, %121 ], [ %.promoted.i.i.i, %.lr.ph.i.preheader.i.i ] %98 = getelementptr inbounds nuw i8, ptr %97, i64 64 + call void @llvm.assume(i1 true) [ "align"(ptr %97, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !3768) tail call void @llvm.experimental.noalias.scope.decl(metadata !3769) tail call void @llvm.experimental.noalias.scope.decl(metadata !3770) @@ -14121,6 +14172,9 @@ define hidden void @"_ZN244_$LT$exr..image..recursive..Recursive$LT$InnerDescrip %switch.i.i.i.i.i = icmp eq i8 %100, 1 %..i.i.i.i.i = select i1 %switch.i.i.i.i.i, i64 2, i64 4 %101 = add i64 %..i.i.i.i.i, %96 + call void @llvm.assume(i1 true) [ "align"(ptr %97, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %97, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %97, i64 8) ] %102 = getelementptr inbounds nuw i8, ptr %97, i64 32 %103 = load i64, ptr %102, align 8, !alias.scope !3773, !noalias !3788, !noundef !19 %104 = icmp ugt i64 %103, 24 @@ -14216,6 +14270,7 @@ define hidden void @"_ZN244_$LT$exr..image..recursive..Recursive$LT$InnerDescrip %140 = phi i64 [ %145, %162 ], [ %.promoted.i.i14.i, %.lr.ph.i.preheader.i.i.i ] %141 = phi ptr [ %142, %162 ], [ %.promoted.i.i.i.i, %.lr.ph.i.preheader.i.i.i ] %142 = getelementptr inbounds nuw i8, ptr %141, i64 64 + call void @llvm.assume(i1 true) [ "align"(ptr %141, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !3822) tail call void @llvm.experimental.noalias.scope.decl(metadata !3823) tail call void @llvm.experimental.noalias.scope.decl(metadata !3824) @@ -14224,6 +14279,9 @@ define hidden void @"_ZN244_$LT$exr..image..recursive..Recursive$LT$InnerDescrip %switch.i.i.i.i.us.i.i = icmp eq i8 %144, 1 %..i.i.i.i.us.i.i = select i1 %switch.i.i.i.i.us.i.i, i64 2, i64 4 %145 = add i64 %..i.i.i.i.us.i.i, %140 + call void @llvm.assume(i1 true) [ "align"(ptr %141, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %141, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %141, i64 8) ] %146 = getelementptr inbounds nuw i8, ptr %141, i64 32 %147 = load i64, ptr %146, align 8, !alias.scope !3827, !noalias !3834, !noundef !19 %148 = icmp ugt i64 %147, 24 @@ -14268,6 +14326,7 @@ define hidden void @"_ZN244_$LT$exr..image..recursive..Recursive$LT$InnerDescrip %164 = phi i64 [ %169, %189 ], [ %.promoted.i.i14.i, %.lr.ph.i.preheader.i.i.i ] %165 = phi ptr [ %166, %189 ], [ %.promoted.i.i.i.i, %.lr.ph.i.preheader.i.i.i ] %166 = getelementptr inbounds nuw i8, ptr %165, i64 64 + call void @llvm.assume(i1 true) [ "align"(ptr %165, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !3822) tail call void @llvm.experimental.noalias.scope.decl(metadata !3823) tail call void @llvm.experimental.noalias.scope.decl(metadata !3824) @@ -14276,6 +14335,9 @@ define hidden void @"_ZN244_$LT$exr..image..recursive..Recursive$LT$InnerDescrip %switch.i.i.i.i.i.i = icmp eq i8 %168, 1 %..i.i.i.i.i.i = select i1 %switch.i.i.i.i.i.i, i64 2, i64 4 %169 = add i64 %..i.i.i.i.i.i, %164 + call void @llvm.assume(i1 true) [ "align"(ptr %165, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %165, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %165, i64 8) ] %170 = getelementptr inbounds nuw i8, ptr %165, i64 32 %171 = load i64, ptr %170, align 8, !alias.scope !3827, !noalias !3842, !noundef !19 %172 = icmp ugt i64 %171, 24 @@ -14389,6 +14451,7 @@ define hidden void @"_ZN244_$LT$exr..image..recursive..Recursive$LT$InnerDescrip %22 = phi i64 [ %27, %44 ], [ %.promoted.i, %.lr.ph.i.preheader.i ] %23 = phi ptr [ %24, %44 ], [ %.promoted.i.i, %.lr.ph.i.preheader.i ] %24 = getelementptr inbounds nuw i8, ptr %23, i64 64 + call void @llvm.assume(i1 true) [ "align"(ptr %23, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !3867) tail call void @llvm.experimental.noalias.scope.decl(metadata !3868) tail call void @llvm.experimental.noalias.scope.decl(metadata !3869) @@ -14397,6 +14460,9 @@ define hidden void @"_ZN244_$LT$exr..image..recursive..Recursive$LT$InnerDescrip %switch.i.i.i.i.us = icmp eq i8 %26, 1 %..i.i.i.i.us = select i1 %switch.i.i.i.i.us, i64 2, i64 4 %27 = add i64 %..i.i.i.i.us, %22 + call void @llvm.assume(i1 true) [ "align"(ptr %23, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %23, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %23, i64 8) ] %28 = getelementptr inbounds nuw i8, ptr %23, i64 32 %29 = load i64, ptr %28, align 8, !alias.scope !3872, !noalias !3879, !noundef !19 %30 = icmp ugt i64 %29, 24 @@ -14441,6 +14507,7 @@ define hidden void @"_ZN244_$LT$exr..image..recursive..Recursive$LT$InnerDescrip %46 = phi i64 [ %51, %71 ], [ %.promoted.i, %.lr.ph.i.preheader.i ] %47 = phi ptr [ %48, %71 ], [ %.promoted.i.i, %.lr.ph.i.preheader.i ] %48 = getelementptr inbounds nuw i8, ptr %47, i64 64 + call void @llvm.assume(i1 true) [ "align"(ptr %47, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !3867) tail call void @llvm.experimental.noalias.scope.decl(metadata !3868) tail call void @llvm.experimental.noalias.scope.decl(metadata !3869) @@ -14449,6 +14516,9 @@ define hidden void @"_ZN244_$LT$exr..image..recursive..Recursive$LT$InnerDescrip %switch.i.i.i.i = icmp eq i8 %50, 1 %..i.i.i.i = select i1 %switch.i.i.i.i, i64 2, i64 4 %51 = add i64 %..i.i.i.i, %46 + call void @llvm.assume(i1 true) [ "align"(ptr %47, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %47, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %47, i64 8) ] %52 = getelementptr inbounds nuw i8, ptr %47, i64 32 %53 = load i64, ptr %52, align 8, !alias.scope !3872, !noalias !3879, !noundef !19 %54 = icmp ugt i64 %53, 24 @@ -16600,9 +16670,11 @@ _ZN4half8binary164arch19f16_to_f32_fallback17hb49fc63c8adc336dE.exit.i.i.i: ; pr %.sroa.57.022.us.i.i.i = phi i64 [ %77, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i" ], [ %72, %70 ] %.sroa.06.021.us.i.i.i = phi ptr [ %78, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i" ], [ %0, %70 ] %76 = phi ptr [ %79, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h08c46affc7c1dcbaE.exit.us.i.i.i" ], [ %2, %70 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.06.021.us.i.i.i, i64 2) ] %77 = add i64 %.sroa.57.022.us.i.i.i, -8 %78 = getelementptr inbounds nuw i8, ptr %.sroa.06.021.us.i.i.i, i64 16 %79 = getelementptr inbounds nuw i8, ptr %76, i64 32 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.06.021.us.i.i.i, i64 2) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9), !noalias !4358 call fastcc void @_ZN4half8binary164arch3x8623f16x8_to_f32x8_x86_f16c17h696f0d48b806f466E(ptr noalias nocapture noundef nonnull sret([8 x float]) align 4 dereferenceable(32) %9, ptr noalias noundef nonnull readonly align 2 dereferenceable(16) %.sroa.06.021.us.i.i.i), !noalias !4362 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(32) %76, ptr noundef nonnull readonly align 4 dereferenceable(32) %9, i64 32, i1 false), !alias.scope !4363, !noalias !4367 @@ -16620,7 +16692,7 @@ _ZN4half8binary164arch19f16_to_f32_fallback17hb49fc63c8adc336dE.exit.i.i.i: ; pr "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h749c84f19237858cE.exit11.i.i.i": ; preds = %"_ZN72_$LT$$RF$mut$u20$I$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h19f0bd69a6d35b51E.exit.thread.i.i.i.i" call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8), !noalias !4358 - call void @"_ZN4core5array75_$LT$impl$u20$core..default..Default$u20$for$u20$$u5b$T$u3b$$u20$_$u5d$$GT$7default17h2467af0a79756739E"(ptr noalias nocapture noundef nonnull sret([8 x i16]) align 2 dereferenceable(16) %8), !noalias !4358 + call void @"_ZN4core5array75_$LT$impl$u20$core..default..Default$u20$for$u20$$u5b$T$u3b$$u20$_$u5d$$GT$7default17h2467af0a79756739E"(ptr noalias nocapture noundef nonnull sret([8 x i16]) align 2 dereferenceable(16) %8), !noalias !4362 %84 = shl nuw nsw i64 %71, 1 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %8, ptr nonnull readonly align 2 %73, i64 %84, i1 false), !alias.scope !4369, !noalias !4373 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7), !noalias !4358 @@ -17264,7 +17336,9 @@ define hidden void @"_ZN5image6codecs7openexr23OpenExrDecoder$LT$R$GT$21with_alp %.013.i = phi i64 [ 0, %.lr.ph.i ], [ %73, %"_ZN5image6codecs7openexr23OpenExrDecoder$LT$R$GT$21with_alpha_preference28_$u7b$$u7b$closure$u7d$$u7d$17hccd09520fa54e25dE.exit.thread.i" ] %44 = phi ptr [ %.sink5.i.i, %.lr.ph.i ], [ %45, %"_ZN5image6codecs7openexr23OpenExrDecoder$LT$R$GT$21with_alpha_preference28_$u7b$$u7b$closure$u7d$$u7d$17hccd09520fa54e25dE.exit.thread.i" ] %45 = getelementptr inbounds nuw i8, ptr %44, i64 1424 + call void @llvm.assume(i1 true) [ "align"(ptr %44, i64 8) ] call void @llvm.experimental.noalias.scope.decl(metadata !4489) + call void @llvm.assume(i1 true) [ "align"(ptr %44, i64 8) ] br label %46 46: ; preds = %"_ZN5image6codecs7openexr23OpenExrDecoder$LT$R$GT$21with_alpha_preference28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17h7e351ff797eaa31eE.exit.i.i.i", %43 @@ -17680,7 +17754,9 @@ define hidden void @"_ZN5image6codecs7openexr23OpenExrDecoder$LT$R$GT$21with_alp %.013.i = phi i64 [ 0, %.lr.ph.i ], [ %74, %"_ZN5image6codecs7openexr23OpenExrDecoder$LT$R$GT$21with_alpha_preference28_$u7b$$u7b$closure$u7d$$u7d$17hadb653bc2eb3b7e8E.exit.thread.i" ] %45 = phi ptr [ %.sink5.i.i, %.lr.ph.i ], [ %46, %"_ZN5image6codecs7openexr23OpenExrDecoder$LT$R$GT$21with_alpha_preference28_$u7b$$u7b$closure$u7d$$u7d$17hadb653bc2eb3b7e8E.exit.thread.i" ] %46 = getelementptr inbounds nuw i8, ptr %45, i64 1424 + call void @llvm.assume(i1 true) [ "align"(ptr %45, i64 8) ] call void @llvm.experimental.noalias.scope.decl(metadata !4572) + call void @llvm.assume(i1 true) [ "align"(ptr %45, i64 8) ] br label %47 47: ; preds = %"_ZN5image6codecs7openexr23OpenExrDecoder$LT$R$GT$21with_alpha_preference28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17hbe22916f420c6dc5E.exit.i.i.i", %44 diff --git a/bench/image-rs/optimized/5oy2v8fghrh79s8.ll b/bench/image-rs/optimized/5oy2v8fghrh79s8.ll index 1fe67727ae5..39c733bdd6b 100644 --- a/bench/image-rs/optimized/5oy2v8fghrh79s8.ll +++ b/bench/image-rs/optimized/5oy2v8fghrh79s8.ll @@ -538,6 +538,8 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..chain..Chain$LT$A$C$B$GT$$ "_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.thread.i": ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5a58d1a8701d08d8E.exit15.i.i.i", %70, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5a58d1a8701d08d8E.exit13.i.i.i" %92 = phi i32 [ %91, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.i" ], [ %71, %70 ], [ %80, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5a58d1a8701d08d8E.exit15.i.i.i" ], [ %68, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5a58d1a8701d08d8E.exit13.i.i.i" ] %.sroa.0.16.i = phi ptr [ %83, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.i" ], [ %57, %70 ], [ %73, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5a58d1a8701d08d8E.exit15.i.i.i" ], [ %63, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5a58d1a8701d08d8E.exit13.i.i.i" ] + call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] tail call fastcc void @_ZN5alloc6string6String4push17hda7d9bb0deee805fE(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i32 noundef range(i32 0, 1114113) %92) %93 = icmp eq ptr %.sroa.0.16.i, %55 br i1 %93, label %_ZN4core4iter6traits8iterator8Iterator4fold17h1b1d9d32179928fbE.exit, label %.lr.ph.i @@ -2221,6 +2223,7 @@ define internal fastcc void @"_ZN3gif6reader20ReadDecoder$LT$R$GT$11decode_next1 store i64 0, ptr %15, align 8, !noalias !328 %24 = load i64, ptr %17, align 8, !alias.scope !322, !noalias !325, !noundef !4 store i64 %24, ptr %16, align 8, !noalias !328 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] %25 = call noundef ptr @"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$8read_buf17h8dea1e44d684a36aE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %12, ptr noalias noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 0), !noalias !329 %26 = icmp eq ptr %25, null br i1 %26, label %27, label %_ZN3std2io8buffered9bufreader6buffer6Buffer8fill_buf17h52794bf5723a12c7E.llvm.9832446184049035033.exit.thread @@ -2384,6 +2387,7 @@ define internal fastcc void @"_ZN3gif6reader20ReadDecoder$LT$R$GT$11decode_next1 store i64 0, ptr %15, align 8, !noalias !337 %24 = load i64, ptr %17, align 8, !alias.scope !331, !noalias !334, !noundef !4 store i64 %24, ptr %16, align 8, !noalias !337 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] %25 = call noundef ptr @"_ZN82_$LT$std..io..buffered..bufreader..BufReader$LT$R$GT$$u20$as$u20$std..io..Read$GT$8read_buf17h93e0ba42834caaa8E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %12, ptr noalias noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 0), !noalias !338 %26 = icmp eq ptr %25, null br i1 %26, label %27, label %_ZN3std2io8buffered9bufreader6buffer6Buffer8fill_buf17hfdb8927b23dc05d6E.llvm.9832446184049035033.exit.thread @@ -4640,6 +4644,7 @@ define hidden void @_ZN3std2io8buffered9bufreader6buffer6Buffer8fill_buf17h52794 store i64 0, ptr %13, align 8 %16 = load i64, ptr %15, align 8, !noundef !4 store i64 %16, ptr %14, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] %17 = call noundef ptr @"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$8read_buf17h8dea1e44d684a36aE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %2, ptr noalias noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 0) %18 = icmp eq ptr %17, null br i1 %18, label %25, label %28 @@ -4698,6 +4703,7 @@ define hidden void @_ZN3std2io8buffered9bufreader6buffer6Buffer8fill_buf17h7322f store i64 0, ptr %13, align 8 %16 = load i64, ptr %15, align 8, !noundef !4 store i64 %16, ptr %14, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 4) ] %17 = call noundef ptr @"_ZN47_$LT$std..fs..File$u20$as$u20$std..io..Read$GT$8read_buf17h4ebdf69760ddab1dE"(ptr noalias noundef nonnull align 4 dereferenceable(4) %2, ptr noalias noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 0) %18 = icmp eq ptr %17, null br i1 %18, label %25, label %28 @@ -4756,6 +4762,7 @@ define hidden void @_ZN3std2io8buffered9bufreader6buffer6Buffer8fill_buf17hfdb89 store i64 0, ptr %13, align 8 %16 = load i64, ptr %15, align 8, !noundef !4 store i64 %16, ptr %14, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] %17 = call noundef ptr @"_ZN82_$LT$std..io..buffered..bufreader..BufReader$LT$R$GT$$u20$as$u20$std..io..Read$GT$8read_buf17h93e0ba42834caaa8E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %2, ptr noalias noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 0) %18 = icmp eq ptr %17, null br i1 %18, label %25, label %28 @@ -13319,7 +13326,7 @@ define internal fastcc void @"_ZN4core3ptr145drop_in_place$LT$alloc..collections %.sroa.5.0.i.i = select i1 %.not.i.i.i, i64 %.val.i.i, i64 %13 %.sroa.11.0.i.i = tail call i64 @llvm.usub.sat.i64(i64 %9, i64 %12) %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %15 = load ptr, ptr %14, align 8, !alias.scope !5647, !noalias !5650, !nonnull !4, !noundef !4 + %15 = load ptr, ptr %14, align 8, !alias.scope !5647, !noalias !5650, !nonnull !4, !align !122, !noundef !4 %16 = getelementptr inbounds { i64, [9 x i64] }, ptr %15, i64 %.0.i.i.i.i %17 = sub i64 %.sroa.5.0.i.i, %.0.i.i.i.i tail call void @llvm.experimental.noalias.scope.decl(metadata !5652) @@ -14951,7 +14958,7 @@ define internal fastcc void @"_ZN4core3ptr164drop_in_place$LT$alloc..collections %.sroa.5.0.i.i = select i1 %.not.i.i.i, i64 %.val.i.i, i64 %13 %.sroa.11.0.i.i = tail call i64 @llvm.usub.sat.i64(i64 %9, i64 %12) %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %15 = load ptr, ptr %14, align 8, !alias.scope !6422, !noalias !6425, !nonnull !4, !noundef !4 + %15 = load ptr, ptr %14, align 8, !alias.scope !6422, !noalias !6425, !nonnull !4, !align !122, !noundef !4 %16 = getelementptr inbounds { [2 x i64], i64, [11 x i64] }, ptr %15, i64 %.0.i.i.i.i %17 = sub i64 %.sroa.5.0.i.i, %.0.i.i.i.i tail call void @llvm.experimental.noalias.scope.decl(metadata !6427) @@ -18091,9 +18098,11 @@ define hidden void @"_ZN4core3ptr213drop_in_place$LT$flate2..zlib..bufread..Zlib } ; Function Attrs: nonlazybind uwtable -define internal fastcc void @"_ZN4core3ptr214drop_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$core..result..Result$LT$exr..block..UncompressedBlock$C$exr..error..Error$GT$$GT$$GT$17h69eeba8d68234b47E"(ptr readonly %.0.val, i64 %.8.val) unnamed_addr #3 personality ptr @rust_eh_personality { +define internal fastcc void @"_ZN4core3ptr214drop_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$core..result..Result$LT$exr..block..UncompressedBlock$C$exr..error..Error$GT$$GT$$GT$17h69eeba8d68234b47E"(ptr %.0.val, i64 %.8.val) unnamed_addr #3 personality ptr @rust_eh_personality { + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %1 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %1) + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !7860) %2 = icmp eq i64 %.8.val, 0 br i1 %2, label %"_ZN159_$LT$$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..Dropper$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h458d3042420dca56E.exit", label %.lr.ph.i.i @@ -18361,7 +18370,7 @@ define internal fastcc void @"_ZN4core3ptr220drop_in_place$LT$alloc..collections %.sroa.5.0.i.i = select i1 %.not.i.i.i, i64 %.val.i.i, i64 %13 %.sroa.11.0.i.i = tail call i64 @llvm.usub.sat.i64(i64 %9, i64 %12) %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %15 = load ptr, ptr %14, align 8, !alias.scope !7969, !noalias !7972, !nonnull !4, !noundef !4 + %15 = load ptr, ptr %14, align 8, !alias.scope !7969, !noalias !7972, !nonnull !4, !align !122, !noundef !4 %16 = getelementptr inbounds { ptr, ptr }, ptr %15, i64 %.0.i.i.i.i %17 = sub i64 %.sroa.5.0.i.i, %.0.i.i.i.i %18 = icmp eq i64 %.sroa.5.0.i.i, %.0.i.i.i.i @@ -18702,9 +18711,11 @@ define hidden void @"_ZN4core3ptr229drop_in_place$LT$core..slice..sort..merge_so } ; Function Attrs: nonlazybind uwtable -define internal fastcc void @"_ZN4core3ptr233drop_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$core..result..Result$LT$$LP$usize$C$usize$C$exr..block..chunk..Chunk$RP$$C$exr..error..Error$GT$$GT$$GT$17ha12836a7aa125ed0E"(ptr readonly %.0.val, i64 %.8.val) unnamed_addr #3 personality ptr @rust_eh_personality { +define internal fastcc void @"_ZN4core3ptr233drop_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$core..result..Result$LT$$LP$usize$C$usize$C$exr..block..chunk..Chunk$RP$$C$exr..error..Error$GT$$GT$$GT$17ha12836a7aa125ed0E"(ptr %.0.val, i64 %.8.val) unnamed_addr #3 personality ptr @rust_eh_personality { + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %1 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %1) + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !8107) %2 = icmp eq i64 %.8.val, 0 br i1 %2, label %"_ZN159_$LT$$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..Dropper$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf8a305a8c5527ba9E.exit", label %.lr.ph.i.i @@ -18789,7 +18800,7 @@ define internal fastcc void @"_ZN4core3ptr239drop_in_place$LT$alloc..collections %.sroa.5.0.i.i = select i1 %.not.i.i.i, i64 %.val.i.i, i64 %13 %.sroa.11.0.i.i = tail call i64 @llvm.usub.sat.i64(i64 %9, i64 %12) %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %15 = load ptr, ptr %14, align 8, !alias.scope !8116, !noalias !8119, !nonnull !4, !noundef !4 + %15 = load ptr, ptr %14, align 8, !alias.scope !8116, !noalias !8119, !nonnull !4, !align !122, !noundef !4 %16 = getelementptr inbounds { ptr, ptr }, ptr %15, i64 %.0.i.i.i.i %17 = sub i64 %.sroa.5.0.i.i, %.0.i.i.i.i %18 = icmp eq i64 %.sroa.5.0.i.i, %.0.i.i.i.i @@ -19041,8 +19052,10 @@ define hidden void @"_ZN4core3ptr246drop_in_place$LT$alloc..boxed..Box$LT$dyn$u2 ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr252drop_in_place$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$GT$..truncate..Dropper$LT$alloc..sync..Arc$LT$flume..Hook$LT$core..result..Result$LT$exr..block..UncompressedBlock$C$exr..error..Error$GT$$C$dyn$u20$flume..signal..Signal$GT$$GT$$GT$$GT$17h614fb34b696ae49aE"(ptr %.0.val, i64 %.8.val) unnamed_addr #3 personality ptr @rust_eh_personality { + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %1 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %1) + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %2 = icmp eq i64 %.8.val, 0 br i1 %2, label %"_ZN122_$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$GT$..truncate..Dropper$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc4a9395ac7acb191E.exit", label %.lr.ph.i.i @@ -19965,8 +19978,10 @@ define hidden void @"_ZN4core3ptr2713drop_in_place$LT$core..iter..adapters..flat ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr271drop_in_place$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$GT$..truncate..Dropper$LT$alloc..sync..Arc$LT$flume..Hook$LT$core..result..Result$LT$$LP$usize$C$usize$C$exr..block..chunk..Chunk$RP$$C$exr..error..Error$GT$$C$dyn$u20$flume..signal..Signal$GT$$GT$$GT$$GT$17h0542ea46974c5a62E"(ptr %.0.val, i64 %.8.val) unnamed_addr #3 personality ptr @rust_eh_personality { + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %1 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %1) + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %2 = icmp eq i64 %.8.val, 0 br i1 %2, label %"_ZN122_$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$GT$..truncate..Dropper$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06a9d82468fb3dafE.exit", label %.lr.ph.i.i @@ -20158,8 +20173,10 @@ define hidden void @"_ZN4core3ptr286drop_in_place$LT$core..iter..adapters..map.. ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr289drop_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..sync..Arc$LT$flume..Hook$LT$core..result..Result$LT$exr..block..UncompressedBlock$C$exr..error..Error$GT$$C$dyn$u20$flume..signal..Signal$GT$$GT$$GT$$GT$17h2c1839c7edbf6314E"(ptr %.0.val, i64 %.8.val) unnamed_addr #3 personality ptr @rust_eh_personality { + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %1 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %1) + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %2 = icmp eq i64 %.8.val, 0 br i1 %2, label %"_ZN159_$LT$$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..Dropper$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h183f6fb02f8283aaE.exit", label %.lr.ph.i.i @@ -20484,8 +20501,10 @@ define hidden void @"_ZN4core3ptr303drop_in_place$LT$core..iter..adapters..flatt ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr308drop_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..sync..Arc$LT$flume..Hook$LT$core..result..Result$LT$$LP$usize$C$usize$C$exr..block..chunk..Chunk$RP$$C$exr..error..Error$GT$$C$dyn$u20$flume..signal..Signal$GT$$GT$$GT$$GT$17h33bacbe99bb660b0E"(ptr %.0.val, i64 %.8.val) unnamed_addr #3 personality ptr @rust_eh_personality { + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %1 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %1) + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %2 = icmp eq i64 %.8.val, 0 br i1 %2, label %"_ZN159_$LT$$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..Dropper$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc09affe98e23cf75E.exit", label %.lr.ph.i.i @@ -38674,7 +38693,7 @@ define hidden void @"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4ite %.sroa.5.0.i = phi i64 [ %.val.i, %15 ], [ %18, %17 ], [ 0, %2 ] %.sroa.11.0.i = phi i64 [ %16, %15 ], [ 0, %17 ], [ 0, %2 ] %19 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %20 = load ptr, ptr %19, align 8, !alias.scope !17668, !noalias !17671, !nonnull !4, !noundef !4 + %20 = load ptr, ptr %19, align 8, !alias.scope !17668, !noalias !17671, !nonnull !4, !align !122, !noundef !4 %21 = getelementptr inbounds { ptr, ptr }, ptr %20, i64 %.sroa.0.0.i %22 = getelementptr inbounds { ptr, ptr }, ptr %20, i64 %.sroa.5.0.i %23 = getelementptr inbounds { ptr, ptr }, ptr %20, i64 %.sroa.11.0.i @@ -38725,7 +38744,7 @@ define hidden void @"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4ite %.sroa.5.0.i = phi i64 [ %.val.i, %15 ], [ %18, %17 ], [ 0, %2 ] %.sroa.11.0.i = phi i64 [ %16, %15 ], [ 0, %17 ], [ 0, %2 ] %19 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %20 = load ptr, ptr %19, align 8, !alias.scope !17676, !noalias !17679, !nonnull !4, !noundef !4 + %20 = load ptr, ptr %19, align 8, !alias.scope !17676, !noalias !17679, !nonnull !4, !align !122, !noundef !4 %21 = getelementptr inbounds { ptr, ptr }, ptr %20, i64 %.sroa.0.0.i %22 = getelementptr inbounds { ptr, ptr }, ptr %20, i64 %.sroa.5.0.i %23 = getelementptr inbounds { ptr, ptr }, ptr %20, i64 %.sroa.11.0.i @@ -38812,7 +38831,7 @@ define internal fastcc void @"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$ %.sroa.5.0.i = phi i64 [ %.val.i, %16 ], [ %19, %18 ], [ 0, %5 ] %.sroa.11.0.i = phi i64 [ %17, %16 ], [ 0, %18 ], [ 0, %5 ] %20 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %21 = load ptr, ptr %20, align 8, !alias.scope !17684, !noalias !17687, !nonnull !4, !noundef !4 + %21 = load ptr, ptr %20, align 8, !alias.scope !17684, !noalias !17687, !nonnull !4, !align !122, !noundef !4 %22 = sub i64 %.sroa.5.0.i, %.sroa.0.0.i %23 = icmp ugt i64 %1, %22 store i64 %1, ptr %3, align 8 @@ -39051,7 +39070,7 @@ define internal fastcc void @"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$ %.sroa.5.0.i = phi i64 [ %.val.i, %16 ], [ %19, %18 ], [ 0, %5 ] %.sroa.11.0.i = phi i64 [ %17, %16 ], [ 0, %18 ], [ 0, %5 ] %20 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %21 = load ptr, ptr %20, align 8, !alias.scope !17746, !noalias !17749, !nonnull !4, !noundef !4 + %21 = load ptr, ptr %20, align 8, !alias.scope !17746, !noalias !17749, !nonnull !4, !align !122, !noundef !4 %22 = sub i64 %.sroa.5.0.i, %.sroa.0.0.i %23 = icmp ugt i64 %1, %22 store i64 %1, ptr %3, align 8 @@ -43788,6 +43807,7 @@ define hidden void @"_ZN72_$LT$gif..encoder..Encoder$LT$W$GT$$u20$as$u20$core..o 5: ; preds = %1 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %2), !noalias !18522 store i8 59, ptr %2, align 1, !noalias !18522 + call void @llvm.assume(i1 true) [ "align"(ptr %4, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !18527) %6 = load i64, ptr %4, align 8, !alias.scope !18527, !noalias !18530, !noundef !4 %7 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -44199,6 +44219,7 @@ default.unreachable1: ; preds = %1 br i1 %9, label %10, label %"_ZN3std4sync4mpmc7counter15Sender$LT$C$GT$7release17h7fd5a5d51df787a2E.exit" 10: ; preds = %5 + call void @llvm.assume(i1 true) [ "align"(ptr %6, i64 128) ] %11 = getelementptr inbounds nuw i8, ptr %6, i64 400 %12 = load i64, ptr %11, align 16, !noalias !18667, !noundef !4 %13 = getelementptr inbounds nuw i8, ptr %6, i64 128 @@ -44246,6 +44267,7 @@ common.resume: ; preds = %54, %24 br i1 %30, label %31, label %"_ZN3std4sync4mpmc7counter15Sender$LT$C$GT$7release17h7fd5a5d51df787a2E.exit" 31: ; preds = %26 + call void @llvm.assume(i1 true) [ "align"(ptr %27, i64 128) ] %32 = getelementptr inbounds nuw i8, ptr %27, i64 128 %33 = atomicrmw or ptr %32, i64 1 seq_cst, align 8, !noalias !18679 %34 = and i64 %33, 1 @@ -44279,6 +44301,7 @@ common.resume: ; preds = %54, %24 br i1 %46, label %47, label %"_ZN3std4sync4mpmc7counter15Sender$LT$C$GT$7release17h7fd5a5d51df787a2E.exit" 47: ; preds = %42 + call void @llvm.assume(i1 true) [ "align"(ptr %43, i64 8) ] %48 = tail call noundef zeroext i1 @"_ZN3std4sync4mpmc4zero16Channel$LT$T$GT$10disconnect17h4768693798d6a401E"(ptr noundef nonnull align 8 %43), !noalias !18682 %49 = getelementptr inbounds nuw i8, ptr %43, i64 128 %50 = atomicrmw xchg ptr %49, i8 1 acq_rel, align 1, !noalias !18682 @@ -44347,6 +44370,7 @@ define hidden void @"_ZN75_$LT$tiff..decoder..stream..LZWReader$LT$R$GT$$u20$as$ store i64 0, ptr %15, align 8, !noalias !18700 %25 = load i64, ptr %17, align 8, !alias.scope !18694, !noalias !18697, !noundef !4 store i64 %25, ptr %16, align 8, !noalias !18700 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] %26 = call noundef ptr @"_ZN56_$LT$std..io..Take$LT$T$GT$$u20$as$u20$std..io..Read$GT$8read_buf17h51a8ecb41b184104E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %12, ptr noalias noundef nonnull align 8 dereferenceable(32) %5, i64 noundef 0), !noalias !18701 %27 = icmp eq ptr %26, null br i1 %27, label %28, label %_ZN3std2io8buffered9bufreader6buffer6Buffer8fill_buf17h6a417ce01e228d83E.exit.thread @@ -44507,6 +44531,7 @@ define hidden void @"_ZN75_$LT$tiff..decoder..stream..LZWReader$LT$R$GT$$u20$as$ store i64 0, ptr %15, align 8, !noalias !18708 %25 = load i64, ptr %17, align 8, !alias.scope !18702, !noalias !18705, !noundef !4 store i64 %25, ptr %16, align 8, !noalias !18708 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] %26 = call noundef ptr @"_ZN56_$LT$std..io..Take$LT$T$GT$$u20$as$u20$std..io..Read$GT$8read_buf17h9f3d39bd1fe897d1E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %12, ptr noalias noundef nonnull align 8 dereferenceable(32) %5, i64 noundef 0), !noalias !18709 %27 = icmp eq ptr %26, null br i1 %27, label %28, label %_ZN3std2io8buffered9bufreader6buffer6Buffer8fill_buf17h8307467759d9bd8eE.exit.thread @@ -46621,6 +46646,7 @@ default.unreachable: ; preds = %24 br i1 %29, label %30, label %"_ZN4core3ptr67drop_in_place$LT$jpeg_decoder..worker..multithreaded..WorkerMsg$GT$17hfee53d00eec0224dE.exit" 30: ; preds = %26 + call void @llvm.assume(i1 true) [ "align"(ptr %.val1.i, i64 128) ] %31 = getelementptr inbounds nuw i8, ptr %.val1.i, i64 400 %32 = load i64, ptr %31, align 16, !noalias !19058, !noundef !4 %33 = getelementptr inbounds nuw i8, ptr %.val1.i, i64 128 @@ -46666,6 +46692,7 @@ common.resume.i.i.i.i: ; preds = %74, %61, %44 br i1 %49, label %50, label %"_ZN4core3ptr67drop_in_place$LT$jpeg_decoder..worker..multithreaded..WorkerMsg$GT$17hfee53d00eec0224dE.exit" 50: ; preds = %46 + call void @llvm.assume(i1 true) [ "align"(ptr %.val1.i, i64 128) ] %51 = getelementptr inbounds nuw i8, ptr %.val1.i, i64 128 %52 = atomicrmw or ptr %51, i64 1 seq_cst, align 8, !noalias !19070 %53 = and i64 %52, 1 @@ -46704,6 +46731,7 @@ common.resume.i.i.i.i: ; preds = %74, %61, %44 br i1 %66, label %67, label %"_ZN4core3ptr67drop_in_place$LT$jpeg_decoder..worker..multithreaded..WorkerMsg$GT$17hfee53d00eec0224dE.exit" 67: ; preds = %63 + call void @llvm.assume(i1 true) [ "align"(ptr %.val1.i, i64 8) ] %68 = tail call noundef zeroext i1 @"_ZN3std4sync4mpmc4zero16Channel$LT$T$GT$10disconnect17h19987e8f3383f439E"(ptr noundef nonnull align 8 %.val1.i), !noalias !19082 %69 = getelementptr inbounds nuw i8, ptr %.val1.i, i64 128 %70 = atomicrmw xchg ptr %69, i8 1 acq_rel, align 1, !noalias !19082 @@ -46997,6 +47025,7 @@ define hidden void @"_ZN82_$LT$std..io..buffered..bufreader..BufReader$LT$R$GT$$ store i64 0, ptr %20, align 8, !noalias !19183 %23 = load i64, ptr %22, align 8, !alias.scope !19177, !noalias !19180, !noundef !4 store i64 %23, ptr %21, align 8, !noalias !19183 + call void @llvm.assume(i1 true) [ "align"(ptr %18, i64 4) ] %24 = call noundef ptr @"_ZN47_$LT$std..fs..File$u20$as$u20$std..io..Read$GT$8read_buf17h4ebdf69760ddab1dE"(ptr noalias noundef nonnull align 4 dereferenceable(4) %18, ptr noalias noundef nonnull align 8 dereferenceable(32) %5, i64 noundef 0), !noalias !19184 %25 = icmp eq ptr %24, null br i1 %25, label %26, label %_ZN3std2io8buffered9bufreader6buffer6Buffer8fill_buf17h7322fa5541e7919bE.llvm.9832446184049035033.exit.thread @@ -47293,6 +47322,7 @@ define hidden void @"_ZN82_$LT$std..io..buffered..bufreader..BufReader$LT$R$GT$$ store i64 0, ptr %18, align 8, !noalias !19286 %21 = load i64, ptr %20, align 8, !alias.scope !19280, !noalias !19283, !noundef !4 store i64 %21, ptr %19, align 8, !noalias !19286 + call void @llvm.assume(i1 true) [ "align"(ptr %16, i64 4) ] %22 = call noundef ptr @"_ZN47_$LT$std..fs..File$u20$as$u20$std..io..Read$GT$8read_buf17h4ebdf69760ddab1dE"(ptr noalias noundef nonnull align 4 dereferenceable(4) %16, ptr noalias noundef nonnull align 8 dereferenceable(32) %5, i64 noundef 0), !noalias !19287 %23 = icmp eq ptr %22, null br i1 %23, label %24, label %_ZN3std2io8buffered9bufreader6buffer6Buffer8fill_buf17h7322fa5541e7919bE.llvm.9832446184049035033.exit.thread @@ -47394,6 +47424,7 @@ define hidden void @"_ZN82_$LT$std..io..buffered..bufreader..BufReader$LT$R$GT$$ store i64 0, ptr %20, align 8, !noalias !19307 %23 = load i64, ptr %22, align 8, !alias.scope !19301, !noalias !19304, !noundef !4 store i64 %23, ptr %21, align 8, !noalias !19307 + call void @llvm.assume(i1 true) [ "align"(ptr %18, i64 8) ] %24 = call noundef ptr @"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$8read_buf17h8dea1e44d684a36aE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %18, ptr noalias noundef nonnull align 8 dereferenceable(32) %7, i64 noundef 0), !noalias !19308 %25 = icmp eq ptr %24, null br i1 %25, label %26, label %_ZN3std2io8buffered9bufreader6buffer6Buffer8fill_buf17h52794bf5723a12c7E.llvm.9832446184049035033.exit.thread @@ -47536,6 +47567,7 @@ define hidden void @"_ZN82_$LT$std..io..buffered..bufreader..BufReader$LT$R$GT$$ store i64 0, ptr %19, align 8, !noalias !19346 %22 = load i64, ptr %21, align 8, !alias.scope !19340, !noalias !19343, !noundef !4 store i64 %22, ptr %20, align 8, !noalias !19346 + call void @llvm.assume(i1 true) [ "align"(ptr %17, i64 8) ] %23 = call noundef ptr @"_ZN82_$LT$std..io..buffered..bufreader..BufReader$LT$R$GT$$u20$as$u20$std..io..Read$GT$8read_buf17h93e0ba42834caaa8E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %17, ptr noalias noundef nonnull align 8 dereferenceable(32) %6, i64 noundef 0), !noalias !19347 %24 = icmp eq ptr %23, null br i1 %24, label %25, label %_ZN3std2io8buffered9bufreader6buffer6Buffer8fill_buf17hfdb8927b23dc05d6E.llvm.9832446184049035033.exit.thread @@ -47597,6 +47629,7 @@ _ZN3std2io8buffered9bufreader6buffer6Buffer8fill_buf17hfdb8927b23dc05d6E.llvm.98 store i64 0, ptr %48, align 8, !noalias !19363 %51 = load i64, ptr %50, align 8, !alias.scope !19359, !noalias !19360, !noundef !4 store i64 %51, ptr %49, align 8, !noalias !19363 + call void @llvm.assume(i1 true) [ "align"(ptr %46, i64 4) ] %52 = call noundef ptr @"_ZN47_$LT$std..fs..File$u20$as$u20$std..io..Read$GT$8read_buf17h4ebdf69760ddab1dE"(ptr noalias noundef nonnull align 4 dereferenceable(4) %46, ptr noalias noundef nonnull align 8 dereferenceable(32) %5, i64 noundef 0), !noalias !19364 %53 = icmp eq ptr %52, null br i1 %53, label %54, label %_ZN3std2io8buffered9bufreader6buffer6Buffer8fill_buf17h7322fa5541e7919bE.llvm.9832446184049035033.exit.thread.i @@ -47743,6 +47776,7 @@ define hidden noundef ptr @"_ZN82_$LT$std..io..buffered..bufreader..BufReader$LT store i64 0, ptr %26, align 8, !noalias !19399 %29 = load i64, ptr %28, align 8, !alias.scope !19393, !noalias !19396, !noundef !4 store i64 %29, ptr %27, align 8, !noalias !19399 + call void @llvm.assume(i1 true) [ "align"(ptr %22, i64 4) ] %30 = call noundef ptr @"_ZN47_$LT$std..fs..File$u20$as$u20$std..io..Read$GT$8read_buf17h4ebdf69760ddab1dE"(ptr noalias noundef nonnull align 4 dereferenceable(4) %22, ptr noalias noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 0), !noalias !19400 %31 = icmp eq ptr %30, null br i1 %31, label %32, label %_ZN3std2io8buffered9bufreader6buffer6Buffer8fill_buf17h7322fa5541e7919bE.llvm.9832446184049035033.exit.thread @@ -48099,6 +48133,7 @@ define hidden void @"_ZN85_$LT$std..io..buffered..bufreader..BufReader$LT$R$GT$$ store i64 0, ptr %13, align 8, !noalias !19440 %16 = load i64, ptr %15, align 8, !alias.scope !19436, !noalias !19438, !noundef !4 store i64 %16, ptr %14, align 8, !noalias !19440 + call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 8) ] %17 = call noundef ptr @"_ZN82_$LT$std..io..buffered..bufreader..BufReader$LT$R$GT$$u20$as$u20$std..io..Read$GT$8read_buf17h93e0ba42834caaa8E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %9, ptr noalias noundef nonnull align 8 dereferenceable(32) %3, i64 noundef 0), !noalias !19441 %18 = icmp eq ptr %17, null br i1 %18, label %25, label %28 @@ -48160,6 +48195,7 @@ define hidden void @"_ZN85_$LT$std..io..buffered..bufreader..BufReader$LT$R$GT$$ store i64 0, ptr %13, align 8, !noalias !19450 %16 = load i64, ptr %15, align 8, !alias.scope !19446, !noalias !19448, !noundef !4 store i64 %16, ptr %14, align 8, !noalias !19450 + call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 4) ] %17 = call noundef ptr @"_ZN47_$LT$std..fs..File$u20$as$u20$std..io..Read$GT$8read_buf17h4ebdf69760ddab1dE"(ptr noalias noundef nonnull align 4 dereferenceable(4) %9, ptr noalias noundef nonnull align 8 dereferenceable(32) %3, i64 noundef 0), !noalias !19451 %18 = icmp eq ptr %17, null br i1 %18, label %25, label %28 @@ -48221,6 +48257,7 @@ define hidden void @"_ZN85_$LT$std..io..buffered..bufreader..BufReader$LT$R$GT$$ store i64 0, ptr %13, align 8, !noalias !19460 %16 = load i64, ptr %15, align 8, !alias.scope !19456, !noalias !19458, !noundef !4 store i64 %16, ptr %14, align 8, !noalias !19460 + call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 8) ] %17 = call noundef ptr @"_ZN66_$LT$std..io..cursor..Cursor$LT$T$GT$$u20$as$u20$std..io..Read$GT$8read_buf17h8dea1e44d684a36aE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %9, ptr noalias noundef nonnull align 8 dereferenceable(32) %3, i64 noundef 0), !noalias !19461 %18 = icmp eq ptr %17, null br i1 %18, label %25, label %28 @@ -54382,6 +54419,8 @@ define hidden void @_ZN5image6codecs3pnm7decoder12HeaderReader21read_arbitrary_h %27 = alloca { { { i64, ptr }, i64 } }, align 8 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9), !noalias !21083 store i8 0, ptr %9, align 1, !noalias !21083 + call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] %28 = getelementptr inbounds nuw i8, ptr %1, i64 16 %29 = getelementptr inbounds nuw i8, ptr %1, i64 24 %30 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -54421,6 +54460,7 @@ define hidden void @_ZN5image6codecs3pnm7decoder12HeaderReader21read_arbitrary_h store i64 0, ptr %33, align 8, !noalias !21108 %45 = load i64, ptr %35, align 8, !alias.scope !21104, !noalias !21105, !noundef !4 store i64 %45, ptr %34, align 8, !noalias !21108 + call void @llvm.assume(i1 true) [ "align"(ptr %31, i64 4) ] %46 = call noundef ptr @"_ZN47_$LT$std..fs..File$u20$as$u20$std..io..Read$GT$8read_buf17h4ebdf69760ddab1dE"(ptr noalias noundef nonnull align 4 dereferenceable(4) %31, ptr noalias noundef nonnull align 8 dereferenceable(32) %7, i64 noundef 0), !noalias !21109 %47 = icmp eq ptr %46, null br i1 %47, label %48, label %_ZN3std2io8buffered9bufreader6buffer6Buffer8fill_buf17h7322fa5541e7919bE.llvm.9832446184049035033.exit.thread.i.i.i.i diff --git a/bench/image-rs/optimized/fyek6fuqg0ocunt.ll b/bench/image-rs/optimized/fyek6fuqg0ocunt.ll index 4ed8bde2542..84bde667b68 100644 --- a/bench/image-rs/optimized/fyek6fuqg0ocunt.ll +++ b/bench/image-rs/optimized/fyek6fuqg0ocunt.ll @@ -847,6 +847,7 @@ define hidden void @"_ZN4tiff7encoder29DirectoryEncoder$LT$W$C$K$GT$15finish_int call void @llvm.assume(i1 %68) %69 = getelementptr inbounds nuw { [4 x i64] }, ptr %66, i64 %67 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24), !noalias !148 + call void @llvm.assume(i1 true) [ "align"(ptr %69, i64 8) ] %70 = getelementptr inbounds nuw i8, ptr %69, i64 16 %71 = load i64, ptr %70, align 8, !noalias !129, !noundef !4 %72 = icmp ugt i64 %71, 4 @@ -894,6 +895,9 @@ define hidden void @"_ZN4tiff7encoder29DirectoryEncoder$LT$W$C$K$GT$15finish_int br i1 %81, label %156, label %82 82: ; preds = %79 + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.1.extract.i, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.1.extract.i, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.1.extract.i, i64 8) ] %83 = icmp ne ptr %.fca.1.extract.i, null call void @llvm.assume(i1 %83) %84 = load i16, ptr %.fca.0.extract.i, align 2, !noundef !4 @@ -954,7 +958,7 @@ define hidden void @"_ZN4tiff7encoder29DirectoryEncoder$LT$W$C$K$GT$15finish_int %99 = getelementptr inbounds nuw i8, ptr %.fca.1.extract.i, i64 24 call void @llvm.experimental.noalias.scope.decl(metadata !159) call void @llvm.experimental.noalias.scope.decl(metadata !162) - %100 = load i32, ptr %99, align 4, !alias.scope !159, !noalias !164, !noundef !4 + %100 = load i32, ptr %99, align 8, !alias.scope !159, !noalias !164, !noundef !4 call void @llvm.experimental.noalias.scope.decl(metadata !166) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17), !noalias !169 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16), !noalias !169 @@ -8698,6 +8702,7 @@ common.resume: ; preds = %1489, %.thread242.i 904: ; preds = %888 %905 = load i64, ptr %891, align 8, !alias.scope !1105, !noalias !1108, !noundef !4 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %90), !noalias !1100 + call void @llvm.assume(i1 true) [ "align"(ptr %889, i64 2) ] call void @llvm.experimental.noalias.scope.decl(metadata !1140) call void @llvm.experimental.noalias.scope.decl(metadata !1143) %906 = getelementptr inbounds nuw i8, ptr %166, i64 16 @@ -9640,6 +9645,7 @@ common.resume: ; preds = %1489, %.thread242.i 1136: ; preds = %892 %1137 = load i64, ptr %895, align 8, !alias.scope !1115, !noalias !1118, !noundef !4 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %86), !noalias !1110 + call void @llvm.assume(i1 true) [ "align"(ptr %893, i64 2) ] call void @llvm.experimental.noalias.scope.decl(metadata !1248) call void @llvm.experimental.noalias.scope.decl(metadata !1251) %1138 = getelementptr inbounds nuw i8, ptr %166, i64 16 @@ -10579,6 +10585,7 @@ common.resume: ; preds = %1489, %.thread242.i 1368: ; preds = %896 %1369 = load i64, ptr %899, align 8, !alias.scope !1125, !noalias !1128, !noundef !4 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %82), !noalias !1120 + call void @llvm.assume(i1 true) [ "align"(ptr %897, i64 2) ] call void @llvm.experimental.noalias.scope.decl(metadata !1355) call void @llvm.experimental.noalias.scope.decl(metadata !1358) %1370 = getelementptr inbounds nuw i8, ptr %166, i64 16 @@ -18221,6 +18228,8 @@ select.unfold: ; preds = %"_ZN105_$LT$image.. ret void 36: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6257def3ddbaff24E.llvm.1814251078191383949.exit.i" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.040, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.040, i64 2) ] %37 = invoke noundef i16 @_ZN5image5color11rgb_to_luma17h5a22f648ad68e395E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 2 dereferenceable(6) %.sroa.12.040, i64 noundef 3) to label %"_ZN105_$LT$image..color..Luma$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgb$LT$S$GT$$GT$$GT$10from_color17h715724045f8becd6E.exit" unwind label %.loopexit @@ -18435,6 +18444,9 @@ select.unfold: ; preds = %"_ZN106_$LT$image.. ret void 35: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6b4e75c72afa10f1E.exit.i" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.040, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.427.038, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.040, i64 2) ] %36 = invoke noundef i16 @_ZN5image5color11rgb_to_luma17h5a22f648ad68e395E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 2 dereferenceable(8) %.sroa.12.040, i64 noundef 4) to label %"_ZN106_$LT$image..color..Luma$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgba$LT$S$GT$$GT$$GT$10from_color17hbadacc1418a4ba83E.exit" unwind label %.loopexit @@ -19324,6 +19336,9 @@ select.unfold: ; preds = %"_ZN106_$LT$image.. ret void 42: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6b4e75c72afa10f1E.exit.i" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.041, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.428.039, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.041, i64 2) ] %43 = invoke noundef i16 @_ZN5image5color11rgb_to_luma17h5a22f648ad68e395E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 2 dereferenceable(6) %.sroa.12.041, i64 noundef 3) to label %"_ZN106_$LT$image..color..LumaA$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgb$LT$S$GT$$GT$$GT$10from_color17h6339d83458f7ac56E.exit" unwind label %.loopexit @@ -19576,6 +19591,9 @@ select.unfold: ; preds = %"_ZN107_$LT$image.. ret void 40: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6b4e75c72afa10f1E.exit.i" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.041, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.428.039, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.041, i64 2) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !3053) tail call void @llvm.experimental.noalias.scope.decl(metadata !3056) %41 = invoke noundef i16 @_ZN5image5color11rgb_to_luma17h5a22f648ad68e395E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 2 dereferenceable(8) %.sroa.12.041, i64 noundef 4) @@ -19803,8 +19821,11 @@ select.unfold: ; preds = %"_ZN105_$LT$image.. ret void 38: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6b4e75c72afa10f1E.exit.i" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.042, i64 4) ] %39 = getelementptr inbounds nuw i8, ptr %.sroa.12.042, i64 12 %40 = add i64 %.sroa.15.043, -3 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.429.040, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.042, i64 4) ] %41 = invoke noundef float @_ZN5image5color11rgb_to_luma17h97b5ecfd95d2b986E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 4 dereferenceable(12) %.sroa.12.042, i64 noundef 3) to label %.noexc14 unwind label %.loopexit @@ -20564,8 +20585,11 @@ select.unfold: ; preds = %"_ZN106_$LT$image.. ret void 43: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6b4e75c72afa10f1E.exit.i" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.043, i64 4) ] %44 = getelementptr inbounds nuw i8, ptr %.sroa.12.043, i64 12 %45 = add i64 %.sroa.15.044, -3 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.430.041, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.043, i64 4) ] %46 = invoke noundef float @_ZN5image5color11rgb_to_luma17h97b5ecfd95d2b986E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 4 dereferenceable(12) %.sroa.12.043, i64 noundef 3) to label %.noexc15 unwind label %.loopexit @@ -21044,8 +21068,10 @@ select.unfold: ; preds = %"_ZN106_$LT$image.. ret void 35: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6257def3ddbaff24E.llvm.1814251078191383949.exit.i" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.042, i64 4) ] %36 = getelementptr inbounds nuw i8, ptr %.sroa.12.042, i64 16 %37 = add i64 %.sroa.15.043, -4 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.042, i64 4) ] %38 = invoke noundef float @_ZN5image5color11rgb_to_luma17h97b5ecfd95d2b986E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %.sroa.12.042, i64 noundef 4) to label %.noexc14 unwind label %.loopexit @@ -21283,8 +21309,11 @@ select.unfold: ; preds = %"_ZN101_$LT$core..s 41: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6b4e75c72afa10f1E.exit.i" %42 = add i64 %.sroa.728.0, -4 %43 = getelementptr inbounds nuw i8, ptr %.sroa.427.0, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] %44 = getelementptr inbounds nuw i8, ptr %.sroa.12.0, i64 12 %45 = add i64 %.sroa.15.0, -3 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.427.0, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] invoke void @"_ZN105_$LT$image..color..Rgba$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgb$LT$S$GT$$GT$$GT$10from_color17h4c429122d9aff22cE"(ptr noalias noundef nonnull align 2 dereferenceable(8) %.sroa.427.0, ptr noalias noundef nonnull readonly align 4 dereferenceable(12) %.sroa.12.0) to label %37 unwind label %.loopexit @@ -21894,6 +21923,8 @@ select.unfold: ; preds = %"_ZN107_$LT$image.. ret void 39: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6257def3ddbaff24E.llvm.1814251078191383949.exit.i" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.041, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.041, i64 2) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !3428) tail call void @llvm.experimental.noalias.scope.decl(metadata !3431) %40 = invoke noundef i16 @_ZN5image5color11rgb_to_luma17h5a22f648ad68e395E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 2 dereferenceable(8) %.sroa.12.041, i64 noundef 4) @@ -22212,8 +22243,11 @@ select.unfold: ; preds = %"_ZN106_$LT$image.. ret void 36: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6b4e75c72afa10f1E.exit.i" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.042, i64 4) ] %37 = getelementptr inbounds nuw i8, ptr %.sroa.12.042, i64 16 %38 = add i64 %.sroa.15.043, -4 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.429.040, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.042, i64 4) ] %39 = invoke noundef float @_ZN5image5color11rgb_to_luma17h97b5ecfd95d2b986E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %.sroa.12.042, i64 noundef 4) to label %.noexc14 unwind label %.loopexit @@ -22769,8 +22803,10 @@ select.unfold: ; preds = %"_ZN101_$LT$core..s 38: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6257def3ddbaff24E.llvm.1814251078191383949.exit.i" %39 = add i64 %.sroa.728.0, -2 %40 = getelementptr inbounds nuw i8, ptr %.sroa.427.0, i64 2 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] %41 = getelementptr inbounds nuw i8, ptr %.sroa.12.0, i64 16 %42 = add i64 %.sroa.15.0, -4 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] invoke void @"_ZN107_$LT$image..color..LumaA$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgba$LT$S$GT$$GT$$GT$10from_color17h78e64e1bb217b2bbE"(ptr noalias noundef nonnull align 1 dereferenceable(2) %.sroa.427.0, ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %.sroa.12.0) to label %34 unwind label %.loopexit @@ -23137,8 +23173,10 @@ select.unfold: ; preds = %"_ZN105_$LT$image.. ret void 37: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6257def3ddbaff24E.llvm.1814251078191383949.exit.i" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.042, i64 4) ] %38 = getelementptr inbounds nuw i8, ptr %.sroa.12.042, i64 12 %39 = add i64 %.sroa.15.043, -3 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.042, i64 4) ] %40 = invoke noundef float @_ZN5image5color11rgb_to_luma17h97b5ecfd95d2b986E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 4 dereferenceable(12) %.sroa.12.042, i64 noundef 3) to label %.noexc14 unwind label %.loopexit @@ -23758,8 +23796,11 @@ select.unfold: ; preds = %"_ZN101_$LT$core..s 39: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6b4e75c72afa10f1E.exit.i" %40 = add i64 %.sroa.728.0, -2 %41 = getelementptr inbounds nuw i8, ptr %.sroa.427.0, i64 4 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] %42 = getelementptr inbounds nuw i8, ptr %.sroa.12.0, i64 16 %43 = add i64 %.sroa.15.0, -4 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.427.0, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] invoke void @"_ZN107_$LT$image..color..LumaA$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgba$LT$S$GT$$GT$$GT$10from_color17h0f98fb1e851e5a64E"(ptr noalias noundef nonnull align 2 dereferenceable(4) %.sroa.427.0, ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %.sroa.12.0) to label %35 unwind label %.loopexit @@ -23993,6 +24034,8 @@ select.unfold: ; preds = %"_ZN106_$LT$image.. ret void 41: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6257def3ddbaff24E.llvm.1814251078191383949.exit.i" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.041, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.041, i64 2) ] %42 = invoke noundef i16 @_ZN5image5color11rgb_to_luma17h5a22f648ad68e395E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 2 dereferenceable(6) %.sroa.12.041, i64 noundef 3) to label %"_ZN106_$LT$image..color..LumaA$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgb$LT$S$GT$$GT$$GT$10from_color17h9d5000b13ea842fdE.exit" unwind label %.loopexit @@ -24215,6 +24258,9 @@ select.unfold: ; preds = %"_ZN105_$LT$image.. ret void 37: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6b4e75c72afa10f1E.exit.i" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.040, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.427.038, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.040, i64 2) ] %38 = invoke noundef i16 @_ZN5image5color11rgb_to_luma17h5a22f648ad68e395E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 2 dereferenceable(6) %.sroa.12.040, i64 noundef 3) to label %"_ZN105_$LT$image..color..Luma$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgb$LT$S$GT$$GT$$GT$10from_color17h8bf877ca463daeadE.exit" unwind label %.loopexit @@ -24444,8 +24490,11 @@ select.unfold: ; preds = %"_ZN101_$LT$core..s 41: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6b4e75c72afa10f1E.exit.i" %42 = add i64 %.sroa.728.0, -3 %43 = getelementptr inbounds nuw i8, ptr %.sroa.427.0, i64 6 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] %44 = getelementptr inbounds nuw i8, ptr %.sroa.12.0, i64 16 %45 = add i64 %.sroa.15.0, -4 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.427.0, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] invoke void @"_ZN105_$LT$image..color..Rgb$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgba$LT$S$GT$$GT$$GT$10from_color17h9220906854e9076cE"(ptr noalias noundef nonnull align 2 dereferenceable(6) %.sroa.427.0, ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %.sroa.12.0) to label %37 unwind label %.loopexit @@ -24551,6 +24600,8 @@ select.unfold: ; preds = %"_ZN106_$LT$image.. ret void 34: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6257def3ddbaff24E.llvm.1814251078191383949.exit.i" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.040, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.040, i64 2) ] %35 = invoke noundef i16 @_ZN5image5color11rgb_to_luma17h5a22f648ad68e395E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 2 dereferenceable(8) %.sroa.12.040, i64 noundef 4) to label %"_ZN106_$LT$image..color..Luma$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgba$LT$S$GT$$GT$$GT$10from_color17h8fc587610dd1b884E.exit" unwind label %.loopexit @@ -25044,7 +25095,10 @@ select.unfold: ; preds = %31 34: ; preds = %31 %35 = add i64 %.sroa.728.0, -3 %36 = getelementptr inbounds nuw i8, ptr %.sroa.427.0, i64 6 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] %37 = getelementptr inbounds nuw i8, ptr %.sroa.12.0, i64 12 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.427.0, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] invoke void @"_ZN104_$LT$image..color..Rgb$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgb$LT$S$GT$$GT$$GT$10from_color17h39807b59f862f3baE"(ptr noalias noundef nonnull align 2 dereferenceable(6) %.sroa.427.0, ptr noalias noundef nonnull readonly align 4 dereferenceable(12) %.sroa.12.0) to label %31 unwind label %.loopexit @@ -25311,8 +25365,10 @@ select.unfold: ; preds = %"_ZN101_$LT$core..s 40: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6257def3ddbaff24E.llvm.1814251078191383949.exit.i" %41 = add i64 %.sroa.728.0, -3 %42 = getelementptr inbounds nuw i8, ptr %.sroa.427.0, i64 3 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] %43 = getelementptr inbounds nuw i8, ptr %.sroa.12.0, i64 16 %44 = add i64 %.sroa.15.0, -4 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] invoke void @"_ZN105_$LT$image..color..Rgb$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgba$LT$S$GT$$GT$$GT$10from_color17hb37a7b95e2cf1a8fE"(ptr noalias noundef nonnull align 1 dereferenceable(3) %.sroa.427.0, ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %.sroa.12.0) to label %36 unwind label %.loopexit @@ -25497,7 +25553,9 @@ select.unfold: ; preds = %28 31: ; preds = %28 %32 = add i64 %.sroa.728.0, -4 %33 = getelementptr inbounds nuw i8, ptr %.sroa.427.0, i64 4 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] %34 = getelementptr inbounds nuw i8, ptr %.sroa.12.0, i64 16 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] invoke void @"_ZN106_$LT$image..color..Rgba$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgba$LT$S$GT$$GT$$GT$10from_color17hc5c9dacac23cc020E"(ptr noalias noundef nonnull align 1 dereferenceable(4) %.sroa.427.0, ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %.sroa.12.0) to label %28 unwind label %.loopexit @@ -26704,8 +26762,10 @@ select.unfold: ; preds = %"_ZN101_$LT$core..s 40: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6257def3ddbaff24E.llvm.1814251078191383949.exit.i" %41 = add i64 %.sroa.728.0, -4 %42 = getelementptr inbounds nuw i8, ptr %.sroa.427.0, i64 4 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] %43 = getelementptr inbounds nuw i8, ptr %.sroa.12.0, i64 12 %44 = add i64 %.sroa.15.0, -3 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] invoke void @"_ZN105_$LT$image..color..Rgba$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgb$LT$S$GT$$GT$$GT$10from_color17h1e62213fa44c5f55E"(ptr noalias noundef nonnull align 1 dereferenceable(4) %.sroa.427.0, ptr noalias noundef nonnull readonly align 4 dereferenceable(12) %.sroa.12.0) to label %36 unwind label %.loopexit @@ -27048,8 +27108,10 @@ select.unfold: ; preds = %"_ZN106_$LT$image.. ret void 42: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6257def3ddbaff24E.llvm.1814251078191383949.exit.i" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.043, i64 4) ] %43 = getelementptr inbounds nuw i8, ptr %.sroa.12.043, i64 12 %44 = add i64 %.sroa.15.044, -3 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.043, i64 4) ] %45 = invoke noundef float @_ZN5image5color11rgb_to_luma17h97b5ecfd95d2b986E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 4 dereferenceable(12) %.sroa.12.043, i64 noundef 3) to label %.noexc15 unwind label %.loopexit @@ -28168,7 +28230,10 @@ select.unfold: ; preds = %29 32: ; preds = %29 %33 = add i64 %.sroa.728.0, -4 %34 = getelementptr inbounds nuw i8, ptr %.sroa.427.0, i64 8 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] %35 = getelementptr inbounds nuw i8, ptr %.sroa.12.0, i64 16 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.427.0, i64 2) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] invoke void @"_ZN106_$LT$image..color..Rgba$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgba$LT$S$GT$$GT$$GT$10from_color17hc0aba1db4a60a59cE"(ptr noalias noundef nonnull align 2 dereferenceable(8) %.sroa.427.0, ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %.sroa.12.0) to label %29 unwind label %.loopexit @@ -28519,7 +28584,9 @@ select.unfold: ; preds = %30 33: ; preds = %30 %34 = add i64 %.sroa.728.0, -3 %35 = getelementptr inbounds nuw i8, ptr %.sroa.427.0, i64 3 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] %36 = getelementptr inbounds nuw i8, ptr %.sroa.12.0, i64 12 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.0, i64 4) ] invoke void @"_ZN104_$LT$image..color..Rgb$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgb$LT$S$GT$$GT$$GT$10from_color17hd88159c28ef7cd1cE"(ptr noalias noundef nonnull align 1 dereferenceable(3) %.sroa.427.0, ptr noalias noundef nonnull readonly align 4 dereferenceable(12) %.sroa.12.0) to label %30 unwind label %.loopexit @@ -31754,8 +31821,11 @@ common.resume: ; preds = %378, %339, %299, %2 br i1 %or.cond.i77, label %"_ZN236_$LT$image..buffer_..ImageBuffer$LT$FromType$C$Container$GT$$u20$as$u20$image..buffer_..ConvertBuffer$LT$image..buffer_..ImageBuffer$LT$ToType$C$alloc..vec..Vec$LT$$LT$ToType$u20$as$u20$image..traits..Pixel$GT$..Subpixel$GT$$GT$$GT$$GT$7convert17h51cfb9ad7a7d3776E.exit", label %274 274: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h190e6d8993a134cbE.exit.i.i72" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.041.i74, i64 2) ] %275 = getelementptr inbounds nuw i8, ptr %.sroa.12.041.i74, i64 6 %276 = add i64 %.sroa.15.042.i73, -3 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.428.039.i76, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.041.i74, i64 2) ] %277 = invoke noundef i16 @_ZN5image5color11rgb_to_luma17h5a22f648ad68e395E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 2 dereferenceable(6) %.sroa.12.041.i74, i64 noundef 3) to label %.noexc14.i81 unwind label %.loopexit.i78, !noalias !5188 @@ -31865,8 +31935,11 @@ common.resume: ; preds = %378, %339, %299, %2 br i1 %or.cond.i94, label %"_ZN236_$LT$image..buffer_..ImageBuffer$LT$FromType$C$Container$GT$$u20$as$u20$image..buffer_..ConvertBuffer$LT$image..buffer_..ImageBuffer$LT$ToType$C$alloc..vec..Vec$LT$$LT$ToType$u20$as$u20$image..traits..Pixel$GT$..Subpixel$GT$$GT$$GT$$GT$7convert17hebb9925cebb49f72E.exit", label %314 314: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h190e6d8993a134cbE.exit.i.i89" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.041.i91, i64 2) ] %315 = getelementptr inbounds nuw i8, ptr %.sroa.12.041.i91, i64 8 %316 = add i64 %.sroa.15.042.i90, -4 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.428.039.i93, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.041.i91, i64 2) ] %317 = invoke noundef i16 @_ZN5image5color11rgb_to_luma17h5a22f648ad68e395E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 2 dereferenceable(8) %.sroa.12.041.i91, i64 noundef 4) to label %.noexc14.i98 unwind label %.loopexit.i95, !noalias !5214 @@ -31978,6 +32051,9 @@ common.resume: ; preds = %378, %339, %299, %2 br i1 %or.cond.i111, label %"_ZN236_$LT$image..buffer_..ImageBuffer$LT$FromType$C$Container$GT$$u20$as$u20$image..buffer_..ConvertBuffer$LT$image..buffer_..ImageBuffer$LT$ToType$C$alloc..vec..Vec$LT$$LT$ToType$u20$as$u20$image..traits..Pixel$GT$..Subpixel$GT$$GT$$GT$$GT$7convert17h7461c8fed5e758deE.exit", label %356 356: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h190e6d8993a134cbE.exit.i.i106" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.040.i108, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.427.038.i110, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.040.i108, i64 4) ] %357 = invoke noundef float @_ZN5image5color11rgb_to_luma17h97b5ecfd95d2b986E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 4 dereferenceable(12) %.sroa.12.040.i108, i64 noundef 3) to label %"_ZN105_$LT$image..color..Luma$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgb$LT$S$GT$$GT$$GT$10from_color17h2c75656c027b1942E.exit.i" unwind label %.loopexit.i112, !noalias !5240 @@ -32083,6 +32159,9 @@ common.resume: ; preds = %378, %339, %299, %2 br i1 %or.cond.i127, label %"_ZN236_$LT$image..buffer_..ImageBuffer$LT$FromType$C$Container$GT$$u20$as$u20$image..buffer_..ConvertBuffer$LT$image..buffer_..ImageBuffer$LT$ToType$C$alloc..vec..Vec$LT$$LT$ToType$u20$as$u20$image..traits..Pixel$GT$..Subpixel$GT$$GT$$GT$$GT$7convert17h5ab38a43a3bf2dc3E.exit", label %393 393: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h190e6d8993a134cbE.exit.i.i122" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.040.i124, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.427.038.i126, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.040.i124, i64 4) ] %394 = invoke noundef float @_ZN5image5color11rgb_to_luma17h97b5ecfd95d2b986E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %.sroa.12.040.i124, i64 noundef 4) to label %"_ZN106_$LT$image..color..Luma$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgba$LT$S$GT$$GT$$GT$10from_color17h2632d46e01a7f773E.exit.i" unwind label %.loopexit.i128, !noalias !5266 @@ -33067,8 +33146,11 @@ common.resume: ; preds = %436, %391, %340, %2 br i1 %or.cond.i76, label %"_ZN236_$LT$image..buffer_..ImageBuffer$LT$FromType$C$Container$GT$$u20$as$u20$image..buffer_..ConvertBuffer$LT$image..buffer_..ImageBuffer$LT$ToType$C$alloc..vec..Vec$LT$$LT$ToType$u20$as$u20$image..traits..Pixel$GT$..Subpixel$GT$$GT$$GT$$GT$7convert17h36a17567d837b9e8E.exit", label %320 320: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h190e6d8993a134cbE.exit.i.i71" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.042.i73, i64 2) ] %321 = getelementptr inbounds nuw i8, ptr %.sroa.12.042.i73, i64 6 %322 = add i64 %.sroa.15.043.i72, -3 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.429.040.i75, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.042.i73, i64 2) ] %323 = invoke noundef i16 @_ZN5image5color11rgb_to_luma17h5a22f648ad68e395E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 2 dereferenceable(6) %.sroa.12.042.i73, i64 noundef 3) to label %.noexc15.i80 unwind label %.loopexit.i77, !noalias !5459 @@ -33190,8 +33272,11 @@ common.resume: ; preds = %436, %391, %340, %2 br i1 %or.cond.i93, label %"_ZN236_$LT$image..buffer_..ImageBuffer$LT$FromType$C$Container$GT$$u20$as$u20$image..buffer_..ConvertBuffer$LT$image..buffer_..ImageBuffer$LT$ToType$C$alloc..vec..Vec$LT$$LT$ToType$u20$as$u20$image..traits..Pixel$GT$..Subpixel$GT$$GT$$GT$$GT$7convert17hb72b52cbd8624712E.exit", label %366 366: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h190e6d8993a134cbE.exit.i.i88" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.043.i90, i64 2) ] %367 = getelementptr inbounds nuw i8, ptr %.sroa.12.043.i90, i64 8 %368 = add i64 %.sroa.15.044.i89, -4 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.430.041.i92, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.043.i90, i64 2) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !5505) tail call void @llvm.experimental.noalias.scope.decl(metadata !5508) %369 = invoke noundef i16 @_ZN5image5color11rgb_to_luma17h5a22f648ad68e395E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 2 dereferenceable(8) %.sroa.12.043.i90, i64 noundef 4) @@ -33325,6 +33410,9 @@ common.resume: ; preds = %436, %391, %340, %2 br i1 %or.cond.i107, label %"_ZN236_$LT$image..buffer_..ImageBuffer$LT$FromType$C$Container$GT$$u20$as$u20$image..buffer_..ConvertBuffer$LT$image..buffer_..ImageBuffer$LT$ToType$C$alloc..vec..Vec$LT$$LT$ToType$u20$as$u20$image..traits..Pixel$GT$..Subpixel$GT$$GT$$GT$$GT$7convert17hef66f0907100f461E.exit", label %419 419: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h190e6d8993a134cbE.exit.i.i106" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.041.i, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.428.039.i, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.041.i, i64 4) ] %420 = invoke noundef float @_ZN5image5color11rgb_to_luma17h97b5ecfd95d2b986E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 4 dereferenceable(12) %.sroa.12.041.i, i64 noundef 3) to label %"_ZN106_$LT$image..color..LumaA$LT$T$GT$$u20$as$u20$image..color..FromColor$LT$image..color..Rgb$LT$S$GT$$GT$$GT$10from_color17hb74ec633fdec966fE.exit.i" unwind label %.loopexit.i108, !noalias !5514 @@ -33442,6 +33530,9 @@ common.resume: ; preds = %436, %391, %340, %2 br i1 %or.cond.i123, label %"_ZN236_$LT$image..buffer_..ImageBuffer$LT$FromType$C$Container$GT$$u20$as$u20$image..buffer_..ConvertBuffer$LT$image..buffer_..ImageBuffer$LT$ToType$C$alloc..vec..Vec$LT$$LT$ToType$u20$as$u20$image..traits..Pixel$GT$..Subpixel$GT$$GT$$GT$$GT$7convert17hce5245f8783f6bb6E.exit", label %462 462: ; preds = %"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h190e6d8993a134cbE.exit.i.i118" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.041.i120, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.428.039.i122, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.12.041.i120, i64 4) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !5560) tail call void @llvm.experimental.noalias.scope.decl(metadata !5563) %463 = invoke noundef float @_ZN5image5color11rgb_to_luma17h97b5ecfd95d2b986E.llvm.1609853135345852838(ptr noalias noundef nonnull readonly align 4 dereferenceable(16) %.sroa.12.041.i120, i64 noundef 4) diff --git a/bench/influxdb-rs/optimized/1s5ibqekmzia6ibu.ll b/bench/influxdb-rs/optimized/1s5ibqekmzia6ibu.ll index 3156c824568..3cebdbbefa5 100644 --- a/bench/influxdb-rs/optimized/1s5ibqekmzia6ibu.ll +++ b/bench/influxdb-rs/optimized/1s5ibqekmzia6ibu.ll @@ -4633,6 +4633,7 @@ _ZN4core5slice4sort20provide_sorted_batch17h1e811b4410ca820bE.exit: ; preds = %. %.02818.i = phi ptr [ %216, %.lr.ph.i64 ], [ %190, %198 ] %.sroa.0.117.i = phi ptr [ %219, %.lr.ph.i64 ], [ %15, %198 ] %.sroa.18.216.i = phi ptr [ %214, %.lr.ph.i64 ], [ %189, %198 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.02818.i, i64 8) ] %211 = getelementptr i8, ptr %.02818.i, i64 24 %.028.val.i = load i32, ptr %211, align 8, !alias.scope !601, !noundef !4 %212 = getelementptr i8, ptr %.sroa.0.117.i, i64 24 @@ -5274,6 +5275,7 @@ _ZN4core5slice4sort20provide_sorted_batch17hbb2a2e4eb9621257E.exit: ; preds = %. %.02818.i = phi ptr [ %222, %.lr.ph.i63 ], [ %188, %196 ] %.sroa.0.117.i = phi ptr [ %224, %.lr.ph.i63 ], [ %15, %196 ] %.sroa.18.216.i = phi ptr [ %221, %.lr.ph.i63 ], [ %187, %196 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.02818.i, i64 8) ] %.028.val.i = load ptr, ptr %.02818.i, align 8, !alias.scope !676, !nonnull !4, !noundef !4 %214 = getelementptr i8, ptr %.02818.i, i64 16 %.028.val38.i = load i64, ptr %214, align 8, !alias.scope !676, !noundef !4 @@ -5943,6 +5945,7 @@ define hidden void @_ZN4core5slice4sort7recurse17h042f79ad33b54539E.llvm.2921359 ret void 30: ; preds = %29 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0129, i64 8) ] call fastcc void @_ZN4core5slice4sort14break_patterns17h937de081361e9048E(ptr noalias noundef nonnull align 8 %.sroa.0.0129, i64 noundef %.sroa.14.0128) %31 = add i32 %.033127, -1 br label %32 @@ -6067,6 +6070,7 @@ _ZN4core5slice4sort12choose_pivot17he156a7edb75c1365E.exit: ; preds = %"_ZN4core br i1 %.not, label %74, label %72 70: ; preds = %_ZN4core5slice4sort12choose_pivot17he156a7edb75c1365E.exit + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0129, i64 8) ] %71 = call fastcc noundef zeroext i1 @_ZN4core5slice4sort22partial_insertion_sort17h12ee0afb99505d94E(ptr noalias noundef nonnull align 8 %.sroa.0.0129, i64 noundef %.sroa.14.0128) br i1 %71, label %.loopexit, label %69 @@ -6438,6 +6442,8 @@ _ZN4core5slice4sort12choose_pivot17he156a7edb75c1365E.exit: ; preds = %"_ZN4core %.0.sroa.speculated.i = call noundef i64 @llvm.umin.i64(i64 %204, i64 %211) %212 = lshr i64 %.sroa.14.0128.lcssa146, 3 %213 = icmp uge i64 %.0.sroa.speculated.i, %212 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0129.lcssa155, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %210, i64 8) ] %214 = getelementptr inbounds nuw i8, ptr %210, i64 96 %215 = add i64 %211, -1 %216 = icmp ult i64 %204, %215 @@ -6464,6 +6470,7 @@ _ZN4core5slice4sort12choose_pivot17he156a7edb75c1365E.exit: ; preds = %"_ZN4core unreachable 226: ; preds = %217 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0129, i64 8) ] call void @llvm.experimental.noalias.scope.decl(metadata !837) call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %.sroa.0.i.i52) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %.sroa.0.i.i52, ptr noundef nonnull align 8 dereferenceable(96) %.sroa.0.0129, i64 96, i1 false), !noalias !840 @@ -6555,6 +6562,7 @@ _ZN4core5slice4sort15partition_equal17hf7046a99b75a2cc7E.exit: ; preds = %241 store i64 %.sroa.5.0.copyload.i57, ptr %.sroa.5.0..sroa_idx.i56, align 8, !alias.scope !837 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %.sroa.6.0..sroa_idx.i58, ptr noundef nonnull align 8 dereferenceable(72) %.sroa.11.i53, i64 72, i1 false) call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %.sroa.11.i53) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0129, i64 8) ] %255 = icmp ugt i64 %254, %.sroa.14.0128 br i1 %255, label %256, label %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hcfef045416611928E.exit" @@ -6589,24 +6597,28 @@ _ZN4core5slice4sort15partition_equal17hf7046a99b75a2cc7E.exit: ; preds = %241 } ; Function Attrs: cold nonlazybind uwtable -define internal fastcc void @_ZN4core5slice4sort8heapsort17h4e3572cd69c0307dE(ptr noalias nocapture noundef nonnull align 8 %0, i64 noundef range(i64 21, 0) %1) unnamed_addr #12 personality ptr @rust_eh_personality { +define internal fastcc void @_ZN4core5slice4sort8heapsort17h4e3572cd69c0307dE(ptr noalias noundef nonnull align 8 %0, i64 noundef range(i64 21, 0) %1) unnamed_addr #12 personality ptr @rust_eh_personality { .lr.ph.preheader: %.sroa.0.i = alloca [12 x i64], align 8 %2 = lshr i64 %1, 1 br label %.lr.ph +.preheader: ; preds = %.lr.ph + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 8) ] + br label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h5c830c9a35a18e2dE.exit" + .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %.sroa.4.037 = phi i64 [ %3, %.lr.ph ], [ %2, %.lr.ph.preheader ] %3 = add nsw i64 %.sroa.4.037, -1 tail call fastcc void @"_ZN4core5slice4sort8heapsort28_$u7b$$u7b$closure$u7d$$u7d$17hd59852c6992eef26E"(ptr noalias noundef nonnull align 8 %0, i64 noundef %1, i64 noundef %3) %.not = icmp eq i64 %3, 0 - br i1 %.not, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h5c830c9a35a18e2dE.exit", label %.lr.ph + br i1 %.not, label %.preheader, label %.lr.ph 4: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h5c830c9a35a18e2dE.exit" ret void -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h5c830c9a35a18e2dE.exit": ; preds = %.lr.ph, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h5c830c9a35a18e2dE.exit" - %.sroa.427.038 = phi i64 [ %5, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h5c830c9a35a18e2dE.exit" ], [ %1, %.lr.ph ] +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h5c830c9a35a18e2dE.exit": ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h5c830c9a35a18e2dE.exit", %.preheader + %.sroa.427.038 = phi i64 [ %1, %.preheader ], [ %5, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h5c830c9a35a18e2dE.exit" ] %5 = add i64 %.sroa.427.038, -1 %6 = getelementptr inbounds [0 x { { { { { ptr, i64 }, i64 } } }, i64, { ptr, [2 x i64] }, { ptr, [2 x i64] }, { { { i32, i32 }, i32 }, {} }, [1 x i32] }], ptr %0, i64 0, i64 %5 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %.sroa.0.i) diff --git a/bench/influxdb-rs/optimized/59k85oi3tgixgpod.ll b/bench/influxdb-rs/optimized/59k85oi3tgixgpod.ll index 5fd97afea29..dd058ede04e 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 @@ -7396,6 +7408,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 +7523,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/influxdb-rs/optimized/xf9idvr5og46ibq.ll b/bench/influxdb-rs/optimized/xf9idvr5og46ibq.ll index 1e183202535..28e615d5229 100644 --- a/bench/influxdb-rs/optimized/xf9idvr5og46ibq.ll +++ b/bench/influxdb-rs/optimized/xf9idvr5og46ibq.ll @@ -6932,11 +6932,12 @@ define hidden void @_ZN5tokio4task5spawn11spawn_inner18panic_cold_display17hf825 unreachable } -; Function Attrs: mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable +; Function Attrs: mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable define hidden noundef align 8 ptr @"_ZN5tokio4util11atomic_cell19AtomicCell$LT$T$GT$4swap17h78cc2c4042e105fbE"(ptr nocapture noundef nonnull align 8 %0, ptr noalias noundef align 8 %1) unnamed_addr #10 personality ptr @rust_eh_personality { %3 = ptrtoint ptr %1 to i64 %4 = atomicrmw xchg ptr %0, i64 %3 acq_rel, align 8 %5 = inttoptr i64 %4 to ptr + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] ret ptr %5 } @@ -7499,6 +7500,7 @@ define hidden void @_ZN7tracing4span4Span3log17hb84d364d4a2ace98E.llvm.143320537 br i1 %.not, label %19, label %13 13: ; preds = %5 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] %14 = load i64, ptr %12, align 8, !range !1580, !noundef !4 %switch.tableidx = add nsw i64 %14, -1 %15 = icmp ult i64 %switch.tableidx, 4 @@ -14725,6 +14727,8 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17he62257500e7c8da9E.exit224 br label %938 892: ; preds = %888, %883 + call void @llvm.assume(i1 true) [ "align"(ptr %885, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %885, i64 8) ] %893 = getelementptr inbounds nuw i8, ptr %.val187.i, i64 24 call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %105), !noalias !2392 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %104), !noalias !2392 @@ -14739,6 +14743,9 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17he62257500e7c8da9E.exit224 %897 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %104), !noalias !2392 + call void @llvm.assume(i1 true) [ "align"(ptr %885, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %885, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %885, i64 8) ] %898 = cmpxchg ptr %885, i64 8, i64 0 release monotonic, align 8 %899 = extractvalue { i64, i1 } %898, 1 br i1 %899, label %"_ZN4core3ptr143drop_in_place$LT$lock_api..rwlock..RwLockWriteGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$influxdb3_write..write_buffer..SegmentState$GT$$GT$17h8174c9b9ccd44ebaE.exit232.i", label %900 @@ -14815,6 +14822,9 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17he62257500e7c8da9E.exit224 br label %924 924: ; preds = %935, %918 + call void @llvm.assume(i1 true) [ "align"(ptr %885, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %885, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %885, i64 8) ] %925 = cmpxchg ptr %885, i64 8, i64 0 release monotonic, align 8 %926 = extractvalue { i64, i1 } %925, 1 br i1 %926, label %"_ZN4core3ptr143drop_in_place$LT$lock_api..rwlock..RwLockWriteGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$influxdb3_write..write_buffer..SegmentState$GT$$GT$17h8174c9b9ccd44ebaE.exit230.i", label %927 @@ -14842,6 +14852,9 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17he62257500e7c8da9E.exit224 930: ; preds = %933, %.body227.i %.pn141.i = phi { ptr, i32 } [ %934, %933 ], [ %913, %.body227.i ] call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %103), !noalias !2392 + call void @llvm.assume(i1 true) [ "align"(ptr %885, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %885, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %885, i64 8) ] %931 = cmpxchg ptr %885, i64 8, i64 0 release monotonic, align 8 %932 = extractvalue { i64, i1 } %931, 1 br i1 %932, label %"_ZN4core3ptr143drop_in_place$LT$lock_api..rwlock..RwLockWriteGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$influxdb3_write..write_buffer..SegmentState$GT$$GT$17h8174c9b9ccd44ebaE.exit232.i", label %928 @@ -17386,6 +17399,7 @@ _ZN3std2io5Write9write_all17h647641b7f24fc93bE.exit.thread145.i.i: ; preds = %16 %.sroa.10.0155.i.i = phi ptr [ %.sroa.10.8.copyload.i.i, %"_ZN4snap5write21FrameEncoder$LT$W$GT$10into_inner17h716462b46e0ba9d4E.exit.thread.i.i" ], [ %.sroa.10.0.copyload105.i.i, %"_ZN4snap5write21FrameEncoder$LT$W$GT$10into_inner17h716462b46e0ba9d4E.exit.i.i" ] %.sroa.8.0154.i.i = phi i32 [ %.sroa.8.8.copyload.i.i, %"_ZN4snap5write21FrameEncoder$LT$W$GT$10into_inner17h716462b46e0ba9d4E.exit.thread.i.i" ], [ %.sroa.8.0.copyload101.i.i, %"_ZN4snap5write21FrameEncoder$LT$W$GT$10into_inner17h716462b46e0ba9d4E.exit.i.i" ] call void @llvm.lifetime.end.p0(i64 2128, ptr nonnull %.sroa.11.i.i) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.10.0155.i.i, i64 8) ] %224 = icmp ne ptr %.sroa.10.0155.i.i, null call void @llvm.assume(i1 %224) %225 = getelementptr inbounds nuw i8, ptr %.sroa.10.0155.i.i, i64 16 @@ -17397,6 +17411,7 @@ _ZN3std2io5Write9write_all17h647641b7f24fc93bE.exit.thread145.i.i: ; preds = %16 230: ; preds = %223 %231 = call i32 @llvm.bswap.i32(i32 %.sroa.8.0154.i.i) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.10.0155.i.i, i64 8) ] %232 = getelementptr inbounds nuw i8, ptr %.sroa.10.0155.i.i, i64 8 %233 = load i64, ptr %232, align 8, !alias.scope !3235, !noalias !3240, !noundef !4 %234 = icmp ult i64 %233, 4 @@ -17426,6 +17441,7 @@ _ZN3std2io5Write9write_all17h647641b7f24fc93bE.exit.thread145.i.i: ; preds = %16 244: ; preds = %243, %.noexc78.i.i %.pre19.i83.i.i = phi i64 [ 4, %243 ], [ %241, %.noexc78.i.i ] %245 = call i32 @llvm.bswap.i32(i32 %229) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.10.0155.i.i, i64 8) ] %246 = load i64, ptr %232, align 8, !alias.scope !3255, !noalias !3260, !noundef !4 %247 = icmp ult i64 %246, 8 br i1 %247, label %248, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h35c17b5efee51f98E.exit.i.i.i.i84.thread.i.i" @@ -18482,7 +18498,7 @@ attributes #6 = { inlinehint mustprogress nofree norecurse nosync nounwind nonla attributes #7 = { cold nonlazybind uwtable "frame-pointer"="all" "probe-stack"="inline-asm" "target-cpu"="haswell" } attributes #8 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "frame-pointer"="all" "probe-stack"="inline-asm" "target-cpu"="haswell" } attributes #9 = { cold noreturn nonlazybind uwtable "frame-pointer"="all" "probe-stack"="inline-asm" "target-cpu"="haswell" } -attributes #10 = { mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "frame-pointer"="all" "probe-stack"="inline-asm" "target-cpu"="haswell" } +attributes #10 = { mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "probe-stack"="inline-asm" "target-cpu"="haswell" } attributes #11 = { alwaysinline nonlazybind uwtable "frame-pointer"="all" "probe-stack"="inline-asm" "target-cpu"="haswell" } attributes #12 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "frame-pointer"="all" "probe-stack"="inline-asm" "target-cpu"="haswell" } attributes #13 = { alwaysinline mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "frame-pointer"="all" "probe-stack"="inline-asm" "target-cpu"="haswell" } 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/3022oi333lxf39jd.ll b/bench/just-rs/optimized/3022oi333lxf39jd.ll index 321e41bc13b..d7a0b4d9d0c 100644 --- a/bench/just-rs/optimized/3022oi333lxf39jd.ll +++ b/bench/just-rs/optimized/3022oi333lxf39jd.ll @@ -72,9 +72,11 @@ define internal fastcc void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F 12: ; preds = %2 %13 = getelementptr inbounds nuw i8, ptr %1, i64 72 %14 = extractvalue { ptr, ptr } %8, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 8) ] %15 = icmp ne ptr %14, null tail call void @llvm.assume(i1 %15) call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %7) + call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 8) ] %.val = load ptr, ptr %13, align 8 %.val3 = load ptr, ptr %14, align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !4) @@ -99,6 +101,7 @@ define internal fastcc void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F %23 = icmp ne ptr %.val3, null tail call void @llvm.assume(i1 %23) %24 = getelementptr inbounds nuw i8, ptr %.val3, i64 16 + call void @llvm.assume(i1 true) [ "align"(ptr %.val, i64 8) ] %25 = icmp ne ptr %.val, null tail call void @llvm.assume(i1 %25) call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %3), !noalias !12 @@ -2390,6 +2393,7 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. br i1 %13, label %_ZN4core4iter8adapters5chain17and_then_or_clear17h857025cb33e69697E.exit.thread.i.i, label %14 14: ; preds = %2 + call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7), !noalias !488 %15 = getelementptr inbounds nuw i8, ptr %1, i64 72 call void @_ZN4core4iter6traits8iterator8Iterator8try_fold17ha86cd9dcdeb94ef4E.llvm.11107275065492906757(ptr noalias nocapture noundef nonnull sret({ [1 x i64], ptr, [3 x i64] }) align 8 dereferenceable(40) %7, ptr noalias noundef nonnull align 8 dereferenceable(176) %1, ptr noalias noundef nonnull align 8 dereferenceable(8) %8, ptr noalias noundef nonnull align 8 dereferenceable(16) %15), !noalias !493 @@ -2413,6 +2417,7 @@ _ZN4core4iter8adapters5chain17and_then_or_clear17h857025cb33e69697E.exit.thread. br i1 %22, label %"_ZN108_$LT$core..iter..adapters..filter..Filter$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h15a4d1f63d434531E.exit.thread", label %23 23: ; preds = %_ZN4core4iter8adapters5chain17and_then_or_clear17h857025cb33e69697E.exit.thread.i.i + call void @llvm.assume(i1 true) [ "align"(ptr %20, i64 8) ] call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6), !noalias !511 %24 = getelementptr inbounds nuw i8, ptr %1, i64 160 call void @_ZN4core4iter6traits8iterator8Iterator8try_fold17h4fd85dfac1ea4011E.llvm.11107275065492906757(ptr noalias nocapture noundef nonnull sret({ [1 x i64], ptr, [3 x i64] }) align 8 dereferenceable(40) %6, ptr noalias noundef nonnull align 8 dereferenceable(88) %20, ptr noalias noundef nonnull align 1 %19, ptr noalias noundef nonnull align 8 dereferenceable(16) %24), !noalias !512 @@ -3459,6 +3464,8 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. 14: ; preds = %2 %15 = extractvalue { ptr, ptr } %11, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %15, i64 8) ] %16 = icmp ne ptr %15, null tail call void @llvm.assume(i1 %16) %.val.i = load ptr, ptr %12, align 8, !nonnull !16, !align !17, !noundef !16 @@ -3584,6 +3591,8 @@ common.resume: ; preds = %.body, %32, %24 %47 = phi ptr [ %43, %.lr.ph.i.i ], [ %70, %.noexc4 ] %48 = phi { ptr, ptr } [ %42, %.lr.ph.i.i ], [ %69, %.noexc4 ] %49 = extractvalue { ptr, ptr } %48, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %47, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %49, i64 8) ] %50 = icmp ne ptr %49, null call void @llvm.assume(i1 %50) call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %.sroa.0.i.sroa.4.i.i) @@ -12585,6 +12594,7 @@ common.resume: ; preds = %common.resume.sink. unreachable "_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h6768a15044d92984E.exit64": ; preds = %124 + call void @llvm.assume(i1 true) [ "align"(ptr %70, i64 8) ] call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %4) invoke fastcc void @"_ZN67_$LT$just..expression..Expression$u20$as$u20$core..clone..Clone$GT$5clone17h2dfb89d99efcc12eE"(ptr noalias nocapture noundef align 8 dereferenceable(128) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(128) %70) to label %"_ZN69_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h07e895749e9321f2E.exit29" unwind label %128 diff --git a/bench/just-rs/optimized/52uhuxfcop8n85cu.ll b/bench/just-rs/optimized/52uhuxfcop8n85cu.ll index 7213e3bb466..db00c6be539 100644 --- a/bench/just-rs/optimized/52uhuxfcop8n85cu.ll +++ b/bench/just-rs/optimized/52uhuxfcop8n85cu.ll @@ -1346,6 +1346,7 @@ _ZN3std4sync6poison4Flag4done17h6aecd475d8dd2349E.llvm.1798434116971987782.exit. br i1 %.not.i.i23, label %.noexc32, label %89 89: ; preds = %88 + call void @llvm.assume(i1 true) [ "align"(ptr %.val.i21, i64 8) ] %90 = icmp ne ptr %.val.i21, null tail call void @llvm.assume(i1 %90) %91 = getelementptr inbounds nuw i8, ptr %.val.i21, i64 4 @@ -1366,7 +1367,7 @@ _ZN3std9panicking11panic_count13count_is_zero17h6863efef417c46dbE.llvm.179843411 br i1 %97, label %_ZN3std4sync6poison4Flag4done17h6aecd475d8dd2349E.llvm.1798434116971987782.exit.i.i.i.i.i25, label %98 98: ; preds = %.noexc31 - store atomic i8 1, ptr %91 monotonic, align 1, !noalias !57 + store atomic i8 1, ptr %91 monotonic, align 4, !noalias !57 br label %_ZN3std4sync6poison4Flag4done17h6aecd475d8dd2349E.llvm.1798434116971987782.exit.i.i.i.i.i25 _ZN3std4sync6poison4Flag4done17h6aecd475d8dd2349E.llvm.1798434116971987782.exit.i.i.i.i.i25: ; preds = %98, %.noexc31, %93, %89 @@ -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 @@ -8293,6 +8295,7 @@ define hidden void @"_ZN4core3ptr193drop_in_place$LT$alloc..collections..btree.. ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr195drop_in_place$LT$$LT$alloc..collections..btree..map..IntoIter$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$$RF$str$C$just..alias..Alias$C$alloc..alloc..Global$GT$$GT$17h01538a655510f0f6E"(ptr nonnull %.0.val) unnamed_addr #5 personality ptr @rust_eh_personality { %1 = alloca { ptr, [2 x i64] }, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %1) call void @"_ZN5alloc11collections5btree3map25IntoIter$LT$K$C$V$C$A$GT$10dying_next17h288c79a5c8281094E"(ptr noalias nocapture noundef nonnull sret({ ptr, [2 x i64] }) align 8 dereferenceable(24) %1, ptr noalias noundef nonnull align 8 dereferenceable(72) %.0.val) %2 = load ptr, ptr %1, align 8, !noundef !4 @@ -8904,6 +8907,7 @@ define hidden void @"_ZN4core3ptr211drop_in_place$LT$$LT$alloc..vec..into_iter.. ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr212drop_in_place$LT$$LT$alloc..collections..btree..map..IntoIter$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$alloc..string..String$C$just..summary..Recipe$C$alloc..alloc..Global$GT$$GT$17hde965486da98fe62E"(ptr nonnull %.0.val) unnamed_addr #5 personality ptr @rust_eh_personality { %1 = alloca { ptr, [2 x i64] }, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %1) call void @"_ZN5alloc11collections5btree3map25IntoIter$LT$K$C$V$C$A$GT$10dying_next17hd1c07aad43957460E"(ptr noalias nocapture noundef nonnull sret({ ptr, [2 x i64] }) align 8 dereferenceable(24) %1, ptr noalias noundef nonnull align 8 dereferenceable(72) %.0.val) %2 = load ptr, ptr %1, align 8, !noundef !4 @@ -9099,6 +9103,7 @@ define hidden void @"_ZN4core3ptr217drop_in_place$LT$alloc..collections..btree.. ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr218drop_in_place$LT$$LT$alloc..collections..btree..map..IntoIter$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$$RF$str$C$alloc..rc..Rc$LT$just..recipe..Recipe$GT$$C$alloc..alloc..Global$GT$$GT$17h402b0ce8b88027f2E"(ptr nonnull %.0.val) unnamed_addr #5 { %1 = alloca { ptr, [2 x i64] }, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %1) call void @"_ZN5alloc11collections5btree3map25IntoIter$LT$K$C$V$C$A$GT$10dying_next17h4458f064516d8c28E"(ptr noalias nocapture noundef nonnull sret({ ptr, [2 x i64] }) align 8 dereferenceable(24) %1, ptr noalias noundef nonnull align 8 dereferenceable(72) %.0.val) %2 = load ptr, ptr %1, align 8, !noundef !4 @@ -9153,6 +9158,7 @@ define internal fastcc void @"_ZN4core3ptr218drop_in_place$LT$$LT$alloc..collect ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr219drop_in_place$LT$$LT$alloc..collections..btree..map..IntoIter$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$$RF$str$C$just..alias..Alias$LT$just..name..Name$GT$$C$alloc..alloc..Global$GT$$GT$17h46287d406209cc4aE"(ptr nonnull %.0.val) unnamed_addr #5 { %1 = alloca { ptr, [2 x i64] }, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %1) call void @"_ZN5alloc11collections5btree3map25IntoIter$LT$K$C$V$C$A$GT$10dying_next17h0730d93d375e0cb9E"(ptr noalias nocapture noundef nonnull sret({ ptr, [2 x i64] }) align 8 dereferenceable(24) %1, ptr noalias noundef nonnull align 8 dereferenceable(72) %.0.val) %2 = load ptr, ptr %1, align 8, !noundef !4 @@ -9425,6 +9431,7 @@ define hidden void @"_ZN4core3ptr233drop_in_place$LT$$LT$alloc..collections..btr ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr235drop_in_place$LT$$LT$alloc..collections..btree..map..IntoIter$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$$RF$str$C$just..binding..Binding$LT$just..expression..Expression$GT$$C$alloc..alloc..Global$GT$$GT$17hbce5dc869a805d16E"(ptr nonnull %.0.val) unnamed_addr #5 { %1 = alloca { ptr, [2 x i64] }, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %1) call void @"_ZN5alloc11collections5btree3map25IntoIter$LT$K$C$V$C$A$GT$10dying_next17h58fda3a29cb07417E"(ptr noalias nocapture noundef nonnull sret({ ptr, [2 x i64] }) align 8 dereferenceable(24) %1, ptr noalias noundef nonnull align 8 dereferenceable(72) %.0.val) %2 = load ptr, ptr %1, align 8, !noundef !4 @@ -9929,6 +9936,7 @@ define internal fastcc void @"_ZN4core3ptr251drop_in_place$LT$alloc..vec..Vec$LT ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr254drop_in_place$LT$$LT$alloc..collections..btree..map..IntoIter$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$$RF$str$C$just..recipe..Recipe$LT$just..unresolved_dependency..UnresolvedDependency$GT$$C$alloc..alloc..Global$GT$$GT$17hc98bb4c5df4b36d5E"(ptr nonnull %.0.val) unnamed_addr #5 { %1 = alloca { ptr, [2 x i64] }, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %1) call void @"_ZN5alloc11collections5btree3map25IntoIter$LT$K$C$V$C$A$GT$10dying_next17hc3e4bd2e7c55acabE"(ptr noalias nocapture noundef nonnull sret({ ptr, [2 x i64] }) align 8 dereferenceable(24) %1, ptr noalias noundef nonnull align 8 dereferenceable(72) %.0.val) %2 = load ptr, ptr %1, align 8, !noundef !4 @@ -10111,6 +10119,7 @@ define hidden void @"_ZN4core3ptr285drop_in_place$LT$core..iter..adapters..filte define internal fastcc void @"_ZN4core3ptr286drop_in_place$LT$$LT$alloc..collections..btree..map..IntoIter$LT$K$C$V$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$..drop..DropGuard$LT$just..namepath..Namepath$C$alloc..collections..btree..set..BTreeSet$LT$alloc..vec..Vec$LT$alloc..string..String$GT$$GT$$C$alloc..alloc..Global$GT$$GT$17hbdf2b61351faaaecE"(ptr nonnull %.0.val) unnamed_addr #5 personality ptr @rust_eh_personality { %1 = alloca { { { i64, [3 x i64] }, { i64, [3 x i64] } }, i64, {} }, align 8 %2 = alloca { ptr, [2 x i64] }, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) call void @"_ZN5alloc11collections5btree3map25IntoIter$LT$K$C$V$C$A$GT$10dying_next17hfcea70d650c9f1d0E"(ptr noalias nocapture noundef nonnull sret({ ptr, [2 x i64] }) align 8 dereferenceable(24) %2, ptr noalias noundef nonnull align 8 dereferenceable(72) %.0.val) %3 = load ptr, ptr %2, align 8, !noundef !4 @@ -10682,6 +10691,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 +40080,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/just-rs/optimized/xt6bvrk4jdo7mpy.ll b/bench/just-rs/optimized/xt6bvrk4jdo7mpy.ll index 22137300874..ac7e1f4508a 100644 --- a/bench/just-rs/optimized/xt6bvrk4jdo7mpy.ll +++ b/bench/just-rs/optimized/xt6bvrk4jdo7mpy.ll @@ -860,6 +860,7 @@ define hidden noundef align 8 dereferenceable_or_null(48) ptr @"_ZN108_$LT$alloc "_ZN108_$LT$alloc..collections..btree..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6cddb562a33bdb26E.llvm.9118937971122011336.exit": ; preds = %1, %18 %.sroa.0.0.i = phi ptr [ %20, %18 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.i, i64 8) ] ret ptr %.sroa.0.0.i } @@ -909,6 +910,7 @@ define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN108_$LT$alloc "_ZN108_$LT$alloc..collections..btree..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h281cfa8d892f4dfaE.exit": ; preds = %1, %18 %.sroa.0.0.i = phi ptr [ %20, %18 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.i, i64 8) ] ret ptr %.sroa.0.0.i } @@ -958,6 +960,7 @@ define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN108_$LT$alloc "_ZN108_$LT$alloc..collections..btree..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h31890ae7c13bf47eE.llvm.9118937971122011336.exit": ; preds = %1, %18 %.sroa.0.0.i = phi ptr [ %20, %18 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.i, i64 8) ] ret ptr %.sroa.0.0.i } @@ -1056,6 +1059,7 @@ define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN108_$LT$alloc "_ZN108_$LT$alloc..collections..btree..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf2a1c7c08a64b2a8E.exit": ; preds = %1, %18 %.sroa.0.0.i = phi ptr [ %20, %18 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.i, i64 8) ] ret ptr %.sroa.0.0.i } @@ -1105,6 +1109,7 @@ define hidden noundef align 8 dereferenceable_or_null(24) ptr @"_ZN108_$LT$alloc "_ZN108_$LT$alloc..collections..btree..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2fcd35f7f33554a7E.llvm.9118937971122011336.exit": ; preds = %1, %18 %.sroa.0.0.i = phi ptr [ %20, %18 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.i, i64 8) ] ret ptr %.sroa.0.0.i } @@ -1154,6 +1159,7 @@ define hidden noundef align 8 dereferenceable_or_null(24) ptr @"_ZN108_$LT$alloc "_ZN108_$LT$alloc..collections..btree..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h13ed644445a9bfe3E.exit": ; preds = %1, %18 %.sroa.0.0.i = phi ptr [ %20, %18 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.i, i64 8) ] ret ptr %.sroa.0.0.i } @@ -1203,6 +1209,7 @@ define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN108_$LT$alloc "_ZN108_$LT$alloc..collections..btree..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha36d0e28f2d8d7f9E.llvm.9118937971122011336.exit": ; preds = %1, %18 %.sroa.0.0.i = phi ptr [ %20, %18 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.i, i64 8) ] ret ptr %.sroa.0.0.i } @@ -1252,6 +1259,7 @@ define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN108_$LT$alloc "_ZN108_$LT$alloc..collections..btree..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcce65685e188fafbE.llvm.9118937971122011336.exit": ; preds = %1, %18 %.sroa.0.0.i = phi ptr [ %20, %18 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.i, i64 8) ] ret ptr %.sroa.0.0.i } @@ -1304,6 +1312,7 @@ define hidden noundef align 8 dereferenceable_or_null(208) ptr @"_ZN110_$LT$allo "_ZN108_$LT$alloc..collections..btree..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf2a1c7c08a64b2a8E.exit": ; preds = %1, %18 %.sroa.0.0.i = phi ptr [ %23, %18 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.i, i64 8) ] ret ptr %.sroa.0.0.i } @@ -1356,6 +1365,7 @@ define hidden noundef align 8 dereferenceable_or_null(8) ptr @"_ZN110_$LT$alloc. "_ZN108_$LT$alloc..collections..btree..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h281cfa8d892f4dfaE.exit": ; preds = %1, %18 %.sroa.0.0.i = phi ptr [ %23, %18 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.i, i64 8) ] ret ptr %.sroa.0.0.i } @@ -1408,6 +1418,7 @@ define hidden noundef align 8 dereferenceable_or_null(104) ptr @"_ZN110_$LT$allo "_ZN108_$LT$alloc..collections..btree..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2d196878b0d75f6eE.exit": ; preds = %1, %18 %.sroa.0.0.i = phi ptr [ %23, %18 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.i, i64 8) ] ret ptr %.sroa.0.0.i } @@ -1460,6 +1471,7 @@ define hidden noundef align 8 dereferenceable_or_null(104) ptr @"_ZN110_$LT$allo "_ZN108_$LT$alloc..collections..btree..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcce65685e188fafbE.llvm.9118937971122011336.exit": ; preds = %1, %18 %.sroa.0.0.i = phi ptr [ %23, %18 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.i, i64 8) ] ret ptr %.sroa.0.0.i } @@ -1512,6 +1524,7 @@ define hidden noundef align 8 dereferenceable_or_null(8) ptr @"_ZN110_$LT$alloc. "_ZN108_$LT$alloc..collections..btree..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd901115b47e913f6E.llvm.9118937971122011336.exit": ; preds = %1, %18 %.sroa.0.0.i = phi ptr [ %23, %18 ], [ null, %1 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.i, i64 8) ] ret ptr %.sroa.0.0.i } @@ -4071,6 +4084,7 @@ define hidden noundef align 8 dereferenceable_or_null(376) ptr @"_ZN5alloc11coll 32: ; 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_tree17he46ac3dd5179fd1cE.exit", %3 %.0 = phi ptr [ null, %3 ], [ %31, %.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_tree17he46ac3dd5179fd1cE.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -4157,6 +4171,7 @@ define hidden noundef align 8 dereferenceable_or_null(8) ptr @"_ZN5alloc11collec 31: ; 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_tree17h4750d05151e9c9bfE.exit", %2 %.0 = phi ptr [ null, %2 ], [ %30, %.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_tree17h4750d05151e9c9bfE.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -4243,6 +4258,7 @@ define hidden noundef align 8 dereferenceable_or_null(24) ptr @"_ZN5alloc11colle 31: ; 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_tree17hd0a97702c3809656E.exit", %2 %.0 = phi ptr [ null, %2 ], [ %30, %.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_tree17hd0a97702c3809656E.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -4414,6 +4430,7 @@ define hidden noundef align 8 dereferenceable_or_null(24) ptr @"_ZN5alloc11colle 31: ; 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_tree17hcc93c81c4d747bbaE.exit", %2 %.0 = phi ptr [ null, %2 ], [ %30, %.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_tree17hcc93c81c4d747bbaE.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -4500,6 +4517,7 @@ define hidden noundef align 8 dereferenceable_or_null(152) ptr @"_ZN5alloc11coll 32: ; 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_tree17hd86f35a6e0e627c4E.exit", %3 %.0 = phi ptr [ null, %3 ], [ %31, %.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_tree17hd86f35a6e0e627c4E.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -4586,6 +4604,7 @@ define hidden noundef align 8 dereferenceable_or_null(8) ptr @"_ZN5alloc11collec 32: ; 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_tree17h773bf5ea3504aefeE.exit", %3 %.0 = phi ptr [ null, %3 ], [ %31, %.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_tree17h773bf5ea3504aefeE.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -4757,6 +4776,7 @@ define hidden noundef align 8 dereferenceable_or_null(104) ptr @"_ZN5alloc11coll 32: ; 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_tree17h3302bd00409e2dabE.exit", %3 %.0 = phi ptr [ null, %3 ], [ %31, %.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_tree17h3302bd00409e2dabE.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -4843,6 +4863,7 @@ define hidden noundef align 8 dereferenceable_or_null(272) ptr @"_ZN5alloc11coll 32: ; 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_tree17he0ef8b43720d4a74E.exit", %3 %.0 = phi ptr [ null, %3 ], [ %31, %.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_tree17he0ef8b43720d4a74E.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -4929,6 +4950,7 @@ define hidden noundef align 8 dereferenceable_or_null(8) ptr @"_ZN5alloc11collec 31: ; 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_tree17h0379b51a54afdddbE.exit", %2 %.0 = phi ptr [ null, %2 ], [ %30, %.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_tree17h0379b51a54afdddbE.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -5015,6 +5037,7 @@ define hidden noundef align 8 dereferenceable_or_null(24) ptr @"_ZN5alloc11colle 32: ; 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_tree17h9080cf5d7a4e1466E.exit", %3 %.0 = phi ptr [ null, %3 ], [ %31, %.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_tree17h9080cf5d7a4e1466E.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -5101,6 +5124,7 @@ define hidden noundef align 8 dereferenceable_or_null(8) ptr @"_ZN5alloc11collec 31: ; 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_tree17h39090b06707e4885E.exit", %2 %.0 = phi ptr [ null, %2 ], [ %30, %.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_tree17h39090b06707e4885E.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -5187,6 +5211,7 @@ define hidden noundef align 8 dereferenceable_or_null(24) ptr @"_ZN5alloc11colle 32: ; 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_tree17haedd2be397fa549bE.exit", %3 %.0 = phi ptr [ null, %3 ], [ %31, %.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_tree17haedd2be397fa549bE.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -5358,6 +5383,7 @@ define hidden noundef align 8 dereferenceable_or_null(104) ptr @"_ZN5alloc11coll 32: ; 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_tree17h3752a51bda80338cE.exit", %3 %.0 = phi ptr [ null, %3 ], [ %31, %.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_tree17h3752a51bda80338cE.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -5444,6 +5470,7 @@ define hidden noundef align 8 dereferenceable_or_null(208) ptr @"_ZN5alloc11coll 32: ; 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_tree17h33945a25a58d2fbcE.exit", %3 %.0 = phi ptr [ null, %3 ], [ %31, %.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_tree17h33945a25a58d2fbcE.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -5530,6 +5557,7 @@ define hidden noundef align 4 dereferenceable_or_null(4) ptr @"_ZN5alloc11collec 31: ; 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_tree17hb1b16ac2799bdecbE.exit", %2 %.0 = phi ptr [ null, %2 ], [ %30, %.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_tree17hb1b16ac2799bdecbE.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 4) ] ret ptr %.0 } @@ -10493,6 +10521,7 @@ define hidden noundef align 8 dereferenceable_or_null(24) ptr @"_ZN5alloc11colle 31: ; 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_tree17hf6a26c11b7f31052E.exit", %3 %.0 = phi ptr [ null, %3 ], [ %30, %.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_tree17hf6a26c11b7f31052E.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } diff --git a/bench/meilisearch-rs/optimized/2g3cn5cmegynvtue.ll b/bench/meilisearch-rs/optimized/2g3cn5cmegynvtue.ll index 1065052422d..a0ddc845fa1 100644 --- a/bench/meilisearch-rs/optimized/2g3cn5cmegynvtue.ll +++ b/bench/meilisearch-rs/optimized/2g3cn5cmegynvtue.ll @@ -120,7 +120,7 @@ _ZN10serde_json3ser9Formatter10end_string17h5f4f549f3e4de650E.llvm.2337583790011 ; Function Attrs: nonlazybind uwtable define hidden noalias noundef ptr @_ZN10serde_json3ser27format_escaped_str_contents17hc9df7fe4fdfa66faE.llvm.2337583790011467692(ptr noalias nocapture noundef readonly align 8 dereferenceable(8) %0, ptr noalias nocapture nonnull readnone align 1 %1, ptr noalias noundef nonnull readonly align 1 %2, i64 noundef %3) unnamed_addr #0 personality ptr @rust_eh_personality { %5 = getelementptr inbounds i8, ptr %2, i64 %3 - %.val26 = load ptr, ptr %0, align 8, !nonnull !13 + %.val26 = load ptr, ptr %0, align 8, !nonnull !13, !align !30 %6 = getelementptr inbounds nuw i8, ptr %.val26, i64 16 %7 = getelementptr inbounds nuw i8, ptr %.val26, i64 8 br label %.outer @@ -1521,6 +1521,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t 24: ; preds = %21 %25 = getelementptr inbounds nuw i8, ptr %.sroa.017.050, i64 72 %26 = add nuw nsw i64 %.sroa.7.049, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.017.050, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !544) %27 = load i64, ptr %.sroa.017.050, align 8, !range !547, !alias.scope !544, !noalias !548, !noundef !13 %28 = xor i64 %27, -9223372036854775808 @@ -2134,6 +2135,7 @@ define hidden noalias noundef align 8 ptr @"_ZN83_$LT$serde_json..ser..Compound$ br i1 %7, label %_ZN10serde_json3ser9Formatter16begin_object_key17h8764a9bea1306ba3E.exit, label %8 8: ; preds = %3 + call void @llvm.assume(i1 true) [ "align"(ptr %.val, i64 8) ] %9 = icmp ne ptr %.val, null tail call void @llvm.assume(i1 %9) %10 = getelementptr inbounds nuw i8, ptr %.val, i64 16 @@ -2328,6 +2330,7 @@ _ZN10serde_json3ser9Formatter11begin_array17hd0cd20ac71de6fc7E.exit.i.i.i: ; pre br i1 %41, label %"_ZN4core4iter6traits8iterator8Iterator12try_for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17h0301d700524eb0b6E.exit.i.i.i.i", label %43 43: ; preds = %.lr.ph.i.i + call void @llvm.assume(i1 true) [ "align"(ptr %.val.i.i.i.i.i.i.i, i64 8) ] %44 = icmp ne ptr %.val.i.i.i.i.i.i.i, null tail call void @llvm.assume(i1 %44) %45 = getelementptr inbounds nuw i8, ptr %.val.i.i.i.i.i.i.i, i64 16 @@ -2358,7 +2361,7 @@ _ZN10serde_json3ser9Formatter11begin_array17hd0cd20ac71de6fc7E.exit.i.i.i: ; pre br i1 %57, label %38, label %"_ZN5serde3ser5impls76_$LT$impl$u20$serde..ser..Serialize$u20$for$u20$alloc..vec..Vec$LT$T$GT$$GT$9serialize17hb2b951907705fd9fE.exit" 58: ; preds = %38 - %.val.pre.i.i = load ptr, ptr %3, align 8, !alias.scope !949, !nonnull !13, !noundef !13 + %.val.pre.i.i = load ptr, ptr %3, align 8, !alias.scope !949, !nonnull !13, !align !30, !noundef !13 %59 = getelementptr inbounds nuw i8, ptr %.val.pre.i.i, i64 16 %60 = load i64, ptr %59, align 8, !alias.scope !983, !noalias !994, !noundef !13 %61 = load i64, ptr %.val.pre.i.i, align 8, !alias.scope !983, !noalias !994, !noundef !13 @@ -2533,9 +2536,9 @@ _ZN4core4iter6traits8iterator8Iterator12try_for_each17he614be39e22fb3aaE.exit.th br label %70 70: ; preds = %29, %_ZN4core4iter6traits8iterator8Iterator12try_for_each17he614be39e22fb3aaE.exit.thread.i.i, %"_ZN83_$LT$serde_json..ser..Compound$LT$W$C$F$GT$$u20$as$u20$serde..ser..SerializeSeq$GT$3end17h079f1336fe61e38eE.exit.sink.split.i.i" - %.sink10.i.i = phi i64 [ %28, %29 ], [ %66, %_ZN4core4iter6traits8iterator8Iterator12try_for_each17he614be39e22fb3aaE.exit.thread.i.i ], [ %.pre.i.i.i.i.i.i.i12.i.i, %"_ZN83_$LT$serde_json..ser..Compound$LT$W$C$F$GT$$u20$as$u20$serde..ser..SerializeSeq$GT$3end17h079f1336fe61e38eE.exit.sink.split.i.i" ] + %.sink12.i.i = phi i64 [ %28, %29 ], [ %66, %_ZN4core4iter6traits8iterator8Iterator12try_for_each17he614be39e22fb3aaE.exit.thread.i.i ], [ %.pre.i.i.i.i.i.i.i12.i.i, %"_ZN83_$LT$serde_json..ser..Compound$LT$W$C$F$GT$$u20$as$u20$serde..ser..SerializeSeq$GT$3end17h079f1336fe61e38eE.exit.sink.split.i.i" ] %71 = load ptr, ptr %24, align 8, !noalias !1177, !nonnull !13, !noundef !13 - %72 = getelementptr inbounds i8, ptr %71, i64 %.sink10.i.i + %72 = getelementptr inbounds i8, ptr %71, i64 %.sink12.i.i store i8 93, ptr %72, align 1, !noalias !1177 %storemerge.in.i.i = load i64, ptr %18, align 8, !noalias !1177, !noundef !13 %storemerge.i.i = add i64 %storemerge.in.i.i, 1 diff --git a/bench/meilisearch-rs/optimized/448pbsgxvapmdmcd.ll b/bench/meilisearch-rs/optimized/448pbsgxvapmdmcd.ll index 0d6717d84f8..2c52282fc5f 100644 --- a/bench/meilisearch-rs/optimized/448pbsgxvapmdmcd.ll +++ b/bench/meilisearch-rs/optimized/448pbsgxvapmdmcd.ll @@ -299,6 +299,7 @@ define hidden noundef nonnull align 8 ptr @"_ZN3std3sys12thread_local10fast_loca 16: ; preds = %"_ZN3std3sys12thread_local10fast_local12Key$LT$T$GT$14try_initialize17hc18e14b3635f6853E.llvm.16429374078602074278.exit", %14 %.sroa.0.0 = phi ptr [ %15, %14 ], [ %.sroa.2.0..sroa_idx.i.i, %"_ZN3std3sys12thread_local10fast_local12Key$LT$T$GT$14try_initialize17hc18e14b3635f6853E.llvm.16429374078602074278.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0, i64 8) ] ret ptr %.sroa.0.0 } @@ -5578,7 +5579,7 @@ define hidden void @"_ZN83_$LT$core..slice..sort..InsertionHole$LT$T$GT$$u20$as$ define hidden void @"_ZN85_$LT$indexmap..map..core..IndexMapCore$LT$K$C$V$GT$$u20$as$u20$core..clone..Clone$GT$10clone_from17h3db9c20932885fd7E.llvm.16429374078602074278"(ptr noalias noundef align 8 dereferenceable(56) %0, ptr noalias noundef readonly align 8 dereferenceable(56) %1) unnamed_addr #3 personality ptr @rust_eh_personality { %3 = alloca [32 x i8], align 8 %4 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %5 = load ptr, ptr %4, align 8, !nonnull !4, !noundef !4 + %5 = load ptr, ptr %4, align 8, !nonnull !4, !align !16, !noundef !4 %6 = getelementptr inbounds nuw i8, ptr %1, i64 16 %7 = load i64, ptr %6, align 8, !noundef !4 %8 = getelementptr inbounds nuw i8, ptr %0, i64 24 diff --git a/bench/mimalloc/optimized/alloc-aligned.c.ll b/bench/mimalloc/optimized/alloc-aligned.c.ll index 35a1052223d..34d635bebb3 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,8 +131,7 @@ 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) ] + %call58.i = tail call i64 @mi_usable_size(ptr noundef %7) #7 tail call void @llvm.memset.p0.i64(ptr align 8 %7, i8 0, i64 %call58.i, i1 false) br label %return @@ -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 @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..336d6be7caa 100644 --- a/bench/mimalloc/optimized/heap.c.ll +++ b/bench/mimalloc/optimized/heap.c.ll @@ -259,7 +259,6 @@ entry: 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) %4 = load ptr, ptr %3, align 8 store ptr %4, ptr %call1, align 8 @@ -395,8 +394,6 @@ 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) %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 @@ -480,8 +477,6 @@ 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) %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 @@ -596,8 +591,6 @@ if.end3: ; preds = %for.body.i tail call void @_mi_heap_delayed_free_all(ptr noundef nonnull %heap) #9 %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) %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 @@ -749,8 +742,6 @@ _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) %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 diff --git a/bench/mimalloc/optimized/init.c.ll b/bench/mimalloc/optimized/init.c.ll index 882c891dbd2..3cb8ffe0fb4 100644 --- a/bench/mimalloc/optimized/init.c.ll +++ b/bench/mimalloc/optimized/init.c.ll @@ -224,7 +224,6 @@ if.end21.i.i: ; preds = %if.then11.i.i, %if. if.then24.i.i: ; preds = %if.end21.i.i, %if.end21.thread26.i.i %td.329.i.i = phi ptr [ %10, %if.end21.thread26.i.i ], [ %td.4.ph.i.i, %if.end21.i.i ] - call void @llvm.assume(i1 true) [ "align"(ptr %td.329.i.i, i64 8) ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(4688) %td.329.i.i, i8 0, i64 4688, i1 false) br label %if.end6.i @@ -237,11 +236,8 @@ if.end6.i: ; preds = %if.then24.i.i, %if. %td.323.i.ph.i = phi ptr [ %td.329.i.i, %if.then24.i.i ], [ %td.4.ph.i.i, %if.end21.i.i ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %memid.i.i) %tld7.i = getelementptr inbounds nuw i8, ptr %td.323.i.ph.i, i64 3064 - call void @llvm.assume(i1 true) [ "align"(ptr %tld7.i, i64 8) ] - call void @llvm.assume(i1 true) [ "align"(ptr @tld_empty, i64 8) ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1600) %tld7.i, ptr noundef nonnull readonly align 64 dereferenceable(1600) @tld_empty, i64 range(i64 1600, 3065) 1600, i1 false) call void @llvm.assume(i1 true) [ "align"(ptr %td.323.i.ph.i, i64 8) ] - call void @llvm.assume(i1 true) [ "align"(ptr @_mi_heap_empty, i64 8) ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(3064) %td.323.i.ph.i, ptr noundef nonnull readonly align 64 dereferenceable(3064) @_mi_heap_empty, i64 range(i64 1600, 3065) 3064, i1 false) %13 = call ptr asm "movq %fs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(ptr) null) #12, !srcloc !4 %14 = ptrtoint ptr %13 to i64 diff --git a/bench/mimalloc/optimized/page.c.ll b/bench/mimalloc/optimized/page.c.ll index 1f45c87b3d9..ebbf68c7975 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) 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/3m8k5ep4f562pm44.ll b/bench/mini-lsm-rs/optimized/3m8k5ep4f562pm44.ll index 3b1676a8e0a..39301ca527b 100644 --- a/bench/mini-lsm-rs/optimized/3m8k5ep4f562pm44.ll +++ b/bench/mini-lsm-rs/optimized/3m8k5ep4f562pm44.ll @@ -50,8 +50,10 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: inlinehint nonlazybind uwtable define internal fastcc void @_ZN10serde_json3ser9Formatter10end_object17hb5f1af755e2a8da0E(ptr %.0.val) unnamed_addr #0 { + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %1 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %1) + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !4) tail call void @llvm.experimental.noalias.scope.decl(metadata !7) tail call void @llvm.experimental.noalias.scope.decl(metadata !10) @@ -79,8 +81,10 @@ define internal fastcc void @_ZN10serde_json3ser9Formatter10end_object17hb5f1af7 ; Function Attrs: inlinehint nonlazybind uwtable define internal fastcc void @_ZN10serde_json3ser9Formatter18begin_object_value17h03a13b412c0f78e2E(ptr %.0.val) unnamed_addr #0 { + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %1 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %1) + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !23) tail call void @llvm.experimental.noalias.scope.decl(metadata !26) tail call void @llvm.experimental.noalias.scope.decl(metadata !29) @@ -1218,7 +1222,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 @@ -1279,7 +1283,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 @@ -1483,7 +1487,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 @@ -2287,7 +2291,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 @@ -4178,6 +4182,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 } @@ -8164,8 +8169,10 @@ define internal fastcc noalias noundef align 8 ptr @"_ZN5serde3ser5impls57_$LT$i "_ZN4itoa55_$LT$impl$u20$itoa..private..Sealed$u20$for$u20$u64$GT$5write17h79281af73e3980a4E.exit.i.i": ; preds = %36, %30 %.2.i.i.i = phi i64 [ %37, %36 ], [ %32, %30 ] %41 = sub i64 20, %.2.i.i.i + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val1, i64 8) ] %42 = icmp ne ptr %.0.val1, null tail call void @llvm.assume(i1 %42) + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val1, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !1002) tail call void @llvm.experimental.noalias.scope.decl(metadata !1005) tail call void @llvm.experimental.noalias.scope.decl(metadata !1008) @@ -8730,7 +8737,7 @@ _ZN10serde_json3ser9Formatter18begin_object_value17h03a13b412c0f78e2E.exit: ; pr 73: ; preds = %"_ZN92_$LT$serde_json..ser..Compound$LT$W$C$F$GT$$u20$as$u20$serde..ser..SerializeTupleVariant$GT$15serialize_field17h1e6ccfd669a98a25E.exit" %74 = getelementptr inbounds nuw i8, ptr %0, i64 88 - %.val.i.i9 = load ptr, ptr %1, align 8, !noalias !1250, !nonnull !21, !noundef !21 + %.val.i.i9 = load ptr, ptr %1, align 8, !noalias !1250, !nonnull !21, !align !145, !noundef !21 tail call void @llvm.experimental.noalias.scope.decl(metadata !1257) tail call void @llvm.experimental.noalias.scope.decl(metadata !1260) tail call void @llvm.experimental.noalias.scope.decl(metadata !1263) @@ -8758,7 +8765,7 @@ _ZN10serde_json3ser9Formatter18begin_object_value17h03a13b412c0f78e2E.exit: ; pr br i1 %86, label %87, label %63 87: ; preds = %"_ZN92_$LT$serde_json..ser..Compound$LT$W$C$F$GT$$u20$as$u20$serde..ser..SerializeTupleVariant$GT$15serialize_field17hb93474a9c4bdfcbaE.exit" - %.val7 = load ptr, ptr %1, align 8, !nonnull !21, !noundef !21 + %.val7 = load ptr, ptr %1, align 8, !nonnull !21, !align !145, !noundef !21 tail call void @llvm.experimental.noalias.scope.decl(metadata !1277) tail call void @llvm.experimental.noalias.scope.decl(metadata !1280) tail call void @llvm.experimental.noalias.scope.decl(metadata !1283) diff --git a/bench/mini-lsm-rs/optimized/4lbrpk7rlft27pjz.ll b/bench/mini-lsm-rs/optimized/4lbrpk7rlft27pjz.ll index 4040e891fc6..d0880ddc9ea 100644 --- a/bench/mini-lsm-rs/optimized/4lbrpk7rlft27pjz.ll +++ b/bench/mini-lsm-rs/optimized/4lbrpk7rlft27pjz.ll @@ -320,6 +320,7 @@ define hidden void @_ZN17crossbeam_channel5waker5Waker10disconnect17hbfe96527587 %14 = getelementptr inbounds nuw i8, ptr %13, i64 16 %15 = load ptr, ptr %14, align 8, !nonnull !4, !noundef !4 %16 = getelementptr inbounds nuw i8, ptr %15, i64 40 + call void @llvm.assume(i1 true) [ "align"(ptr %16, i64 4) ] %17 = atomicrmw xchg ptr %16, i32 1 release, align 4 %18 = icmp eq i32 %17, -1 br i1 %18, label %19, label %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17hce15e1a80f7fd7bfE.exit @@ -363,7 +364,7 @@ define internal fastcc void @_ZN17crossbeam_channel5waker5Waker6notify17hece2fcc store i64 %13, ptr %.sroa.5.0..sroa_idx, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %.sroa.7) %15 = icmp eq i64 %8, %9 - br i1 %15, label %.thread, label %.lr.ph + br i1 %15, label %.thread16, label %.lr.ph .lr.ph: ; preds = %1 %.sroa.7.0..sroa_idx2 = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -387,9 +388,9 @@ define internal fastcc void @_ZN17crossbeam_channel5waker5Waker6notify17hece2fcc %.sroa.47.0..0.5.sroa_idx = getelementptr inbounds nuw i8, ptr %19, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.7, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.47.0..0.5.sroa_idx, i64 16, i1 false) %21 = icmp eq ptr %.sroa.06.0.copyload, null - br i1 %21, label %.thread, label %22 + br i1 %21, label %.thread16, label %22 -.thread: ; preds = %18, %"_ZN4core3ptr52drop_in_place$LT$crossbeam_channel..waker..Entry$GT$17hb9ed768752c9c0e0E.exit14", %1 +.thread16: ; preds = %18, %"_ZN4core3ptr52drop_in_place$LT$crossbeam_channel..waker..Entry$GT$17hb9ed768752c9c0e0E.exit14", %1 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.7) call void @"_ZN79_$LT$alloc..vec..drain..Drain$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0afbc7fe6ed2e6c3E.llvm.1597650999041595525"(ptr noalias noundef nonnull align 8 dereferenceable(40) %3) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) @@ -427,6 +428,7 @@ define internal fastcc void @_ZN17crossbeam_channel5waker5Waker6notify17hece2fcc %35 = getelementptr inbounds nuw i8, ptr %34, i64 16 %36 = load ptr, ptr %35, align 8, !nonnull !4, !noundef !4 %37 = getelementptr inbounds nuw i8, ptr %36, i64 40 + call void @llvm.assume(i1 true) [ "align"(ptr %37, i64 4) ] %38 = atomicrmw xchg ptr %37, i32 1 release, align 4 %39 = icmp eq i32 %38, -1 br i1 %39, label %40, label %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17hce15e1a80f7fd7bfE.exit @@ -457,7 +459,7 @@ _ZN3std10sys_common14thread_parking5futex6Parker6unpark17hce15e1a80f7fd7bfE.exit %46 = load ptr, ptr %.sroa.2.0..sroa_idx, align 8, !alias.scope !48, !nonnull !4, !noundef !4 %47 = load ptr, ptr %3, align 8, !alias.scope !48, !nonnull !4, !noundef !4 %48 = icmp eq ptr %47, %46 - br i1 %48, label %.thread, label %18 + br i1 %48, label %.thread16, label %18 49: ; preds = %32, %"_ZN4core3ptr52drop_in_place$LT$crossbeam_channel..waker..Entry$GT$17hb9ed768752c9c0e0E.exit" %50 = landingpad { ptr, i32 } @@ -560,6 +562,7 @@ common.resume: ; preds = %43, %17 %35 = getelementptr inbounds nuw i8, ptr %34, i64 16 %36 = load ptr, ptr %35, align 8, !noalias !85, !nonnull !4, !noundef !4 %37 = getelementptr inbounds nuw i8, ptr %36, i64 40 + call void @llvm.assume(i1 true) [ "align"(ptr %37, i64 4) ] %38 = atomicrmw xchg ptr %37, i32 1 release, align 4, !noalias !85 %39 = icmp eq i32 %38, -1 br i1 %39, label %40, label %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17hce15e1a80f7fd7bfE.exit.i @@ -1179,6 +1182,7 @@ _ZN17crossbeam_channel7context7Context12store_packet17h891d80907ed7870fE.exit.i. %77 = getelementptr inbounds nuw i8, ptr %61, i64 16 %78 = load ptr, ptr %77, align 8, !noalias !214, !nonnull !4, !noundef !4 %79 = getelementptr inbounds nuw i8, ptr %78, i64 40 + call void @llvm.assume(i1 true) [ "align"(ptr %79, i64 4) ] %80 = atomicrmw xchg ptr %79, i32 1 release, align 4, !noalias !214 %81 = icmp eq i32 %80, -1 br i1 %81, label %82, label %.noexc3 diff --git a/bench/mini-lsm-rs/optimized/5148wh4ru143gbx4.ll b/bench/mini-lsm-rs/optimized/5148wh4ru143gbx4.ll index a4706878b4c..fbc5f7dc38a 100644 --- a/bench/mini-lsm-rs/optimized/5148wh4ru143gbx4.ll +++ b/bench/mini-lsm-rs/optimized/5148wh4ru143gbx4.ll @@ -1571,6 +1571,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 +1629,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 +1669,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 +1727,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 +1767,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 +1826,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/xb52qaqr7dfb8ti.ll b/bench/mini-lsm-rs/optimized/xb52qaqr7dfb8ti.ll index ce5e246a48c..e8e50c9aaf2 100644 --- a/bench/mini-lsm-rs/optimized/xb52qaqr7dfb8ti.ll +++ b/bench/mini-lsm-rs/optimized/xb52qaqr7dfb8ti.ll @@ -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 @@ -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 @@ -230,6 +232,7 @@ 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 @@ -2727,9 +2730,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 @@ -2764,6 +2767,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 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/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..c09bea9bb12 100644 --- a/bench/proxy/optimized/proxy_integration_tests.cpp.ll +++ b/bench/proxy/optimized/proxy_integration_tests.cpp.ll @@ -3434,8 +3434,6 @@ 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 ret void diff --git a/bench/qdrant-rs/optimized/mmfuyqzmr1ty69v.ll b/bench/qdrant-rs/optimized/mmfuyqzmr1ty69v.ll index 568daac22c9..3979350b106 100644 --- a/bench/qdrant-rs/optimized/mmfuyqzmr1ty69v.ll +++ b/bench/qdrant-rs/optimized/mmfuyqzmr1ty69v.ll @@ -1351,9 +1351,9 @@ define void @_ZN6sparse5index14search_context13SearchContext12plain_search17h411 %.sroa.6.0..sroa_idx45 = getelementptr inbounds nuw i8, ptr %14, i64 24 store ptr %25, ptr %.sroa.6.0..sroa_idx45, align 8 %26 = icmp eq i64 %.sroa.548.0.copyload, 0 - br i1 %26, label %.thread67, label %.lr.ph94 + br i1 %26, label %.thread67, label %.lr.ph95 -.lr.ph94: ; preds = %24 +.lr.ph95: ; preds = %24 %27 = getelementptr inbounds nuw i8, ptr %1, i64 144 %28 = getelementptr inbounds nuw i8, ptr %1, i64 24 %29 = getelementptr inbounds nuw i8, ptr %1, i64 40 @@ -1421,8 +1421,8 @@ define void @_ZN6sparse5index14search_context13SearchContext12plain_search17h411 %52 = getelementptr inbounds nuw i8, ptr %6, i64 8 br label %121 -53: ; preds = %.lr.ph94, %86 - %54 = phi ptr [ %.sroa.447.0.copyload, %.lr.ph94 ], [ %88, %86 ] +53: ; preds = %.lr.ph95, %86 + %54 = phi ptr [ %.sroa.447.0.copyload, %.lr.ph95 ], [ %88, %86 ] call void @llvm.experimental.noalias.scope.decl(metadata !139) %55 = getelementptr inbounds nuw i8, ptr %54, i64 4 store ptr %55, ptr %.sroa.4.0..sroa_idx, align 8, !alias.scope !139 @@ -1480,9 +1480,10 @@ define void @_ZN6sparse5index14search_context13SearchContext12plain_search17h411 to label %82 unwind label %80 .lr.ph: ; preds = %69, %94 - %.sroa.049.092 = phi ptr [ %78, %94 ], [ %72, %69 ] - %78 = getelementptr inbounds nuw i8, ptr %.sroa.049.092, i64 32 - %79 = invoke noundef align 4 dereferenceable_or_null(12) ptr @_ZN6sparse5index12posting_list19PostingListIterator7skip_to17h1f932048eaf675dcE(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.049.092, i32 noundef %56) + %.sroa.049.093 = phi ptr [ %78, %94 ], [ %72, %69 ] + %78 = getelementptr inbounds nuw i8, ptr %.sroa.049.093, i64 32 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.049.093, i64 8) ] + %79 = invoke noundef align 4 dereferenceable_or_null(12) ptr @_ZN6sparse5index12posting_list19PostingListIterator7skip_to17h1f932048eaf675dcE(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.049.093, i32 noundef %56) to label %92 unwind label %120 80: ; preds = %82, %._crit_edge @@ -1528,7 +1529,7 @@ define void @_ZN6sparse5index14search_context13SearchContext12plain_search17h411 br i1 %95, label %._crit_edge, label %.lr.ph 96: ; preds = %92 - %97 = getelementptr inbounds nuw i8, ptr %.sroa.049.092, i64 24 + %97 = getelementptr inbounds nuw i8, ptr %.sroa.049.093, i64 24 %98 = load i32, ptr %97, align 8, !noundef !5 %99 = load i64, ptr %31, align 8, !alias.scope !145, !noundef !5 %100 = load i64, ptr %13, align 8, !alias.scope !145, !noundef !5 diff --git a/bench/qemu/optimized/accel_tcg_cputlb.c.ll b/bench/qemu/optimized/accel_tcg_cputlb.c.ll index fe5c236604b..46e6140e6af 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 @@ -3617,7 +3609,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 +3925,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 +3943,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 +3963,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 +3981,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 +3992,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 +4009,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 @@ -4060,7 +4033,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 +4272,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 +4361,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 +4382,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 +4404,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 +4551,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 +4645,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 +4667,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 +4701,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 +4731,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 +4757,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 @@ -5049,69 +5010,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 +5100,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 +5180,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 +6670,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 +6701,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 +6732,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 +6759,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 +12811,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 +12869,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 +12945,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 +13070,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 +13086,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 +13338,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 +13393,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 @@ -13517,7 +13446,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 +13694,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 +13754,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 +13842,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 +13937,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 +13984,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 +14043,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 +14073,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 +14309,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 +14360,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 +14419,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..02a071f3deb 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 @@ -2355,7 +2347,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 @@ -2549,10 +2540,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 +2779,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 +2797,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 +2817,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 +2835,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 +2846,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 +2863,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 @@ -3109,7 +3080,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 +3169,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 +3190,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 +3212,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 +3297,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 +3391,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 +3413,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 +3447,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 +3477,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 +3503,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 +3588,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 +3683,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 +3730,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 +3789,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 +3819,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 @@ -4070,69 +4020,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 +4110,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 +4190,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 +6350,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 +6434,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/rayon-rs/optimized/2lfjygkmshe72z1q.ll b/bench/rayon-rs/optimized/2lfjygkmshe72z1q.ll index c25f71fb488..2348b6716fb 100644 --- a/bench/rayon-rs/optimized/2lfjygkmshe72z1q.ll +++ b/bench/rayon-rs/optimized/2lfjygkmshe72z1q.ll @@ -130,8 +130,10 @@ define hidden noundef zeroext i1 @_ZN4core3ops8function2Fn4call17h741d10ae63c3ed ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr61drop_in_place$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$17h037f25805bba7023E"(ptr %.0.val, i8 %.8.val) unnamed_addr #1 { + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 4) ] %1 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %1) + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 4) ] %2 = getelementptr inbounds nuw i8, ptr %.0.val, i64 4 %3 = trunc nuw i8 %.8.val to i1 br i1 %3, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i, label %4 @@ -147,10 +149,11 @@ _ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i: ; pr br i1 %8, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i, label %9 9: ; preds = %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i - store atomic i8 1, ptr %2 monotonic, align 1 + store atomic i8 1, ptr %2 monotonic, align 4 br label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i: ; preds = %9, %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i, %4, %0 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 4) ] %10 = atomicrmw xchg ptr %.0.val, i32 0 release, align 4 %11 = icmp eq i32 %10, 2 br i1 %11, label %12, label %"_ZN79_$LT$std..sync..mutex..MutexGuard$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h949f322efca72823E.exit" @@ -736,6 +739,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 +806,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 +824,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 @@ -895,7 +902,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 @@ -937,7 +944,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 +955,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/2xi93mrj8f00xnic.ll b/bench/rayon-rs/optimized/2xi93mrj8f00xnic.ll index 425df5fc112..b45fc82a186 100644 --- a/bench/rayon-rs/optimized/2xi93mrj8f00xnic.ll +++ b/bench/rayon-rs/optimized/2xi93mrj8f00xnic.ll @@ -278,6 +278,7 @@ define internal fastcc void @"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize br i1 %41, label %44, label %42 42: ; preds = %35 + call void @llvm.assume(i1 true) [ "align"(ptr %40, i64 128) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4), !noalias !11 store ptr @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h2c83d87f31735336E.llvm.3707938170552112821, ptr %4, align 8, !alias.scope !14, !noalias !11 %43 = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -328,6 +329,7 @@ _ZN15crossbeam_epoch5guard5Guard15defer_unchecked17h4ccf3bef69ace06cE.exit: ; pr br i1 %56, label %"_ZN4core3ptr50drop_in_place$LT$crossbeam_epoch..guard..Guard$GT$17h0f560ee4f7794edaE.exit", label %57 57: ; preds = %55 + call void @llvm.assume(i1 true) [ "align"(ptr %.val15, i64 128) ] %58 = getelementptr inbounds nuw i8, ptr %.val15, i64 2072 %59 = load i64, ptr %58, align 8, !noundef !9 %60 = add i64 %59, -1 @@ -337,9 +339,9 @@ _ZN15crossbeam_epoch5guard5Guard15defer_unchecked17h4ccf3bef69ace06cE.exit: ; pr 62: ; preds = %57 %63 = getelementptr inbounds nuw i8, ptr %.val15, i64 2176 - store atomic i64 0, ptr %63 release, align 8 + store atomic i64 0, ptr %63 release, align 128 %64 = getelementptr inbounds nuw i8, ptr %.val15, i64 2080 - %65 = load i64, ptr %64, align 8, !noundef !9 + %65 = load i64, ptr %64, align 32, !noundef !9 %66 = icmp eq i64 %65, 0 br i1 %66, label %67, label %"_ZN4core3ptr50drop_in_place$LT$crossbeam_epoch..guard..Guard$GT$17h0f560ee4f7794edaE.exit" @@ -621,6 +623,7 @@ _ZN15crossbeam_epoch7default11with_handle17he9fc9abe04fa9854E.exit: ; preds = %" br i1 %50, label %"_ZN4core3ptr50drop_in_place$LT$crossbeam_epoch..guard..Guard$GT$17h0f560ee4f7794edaE.exit", label %51 51: ; preds = %47 + call void @llvm.assume(i1 true) [ "align"(ptr %22, i64 128) ] %52 = getelementptr inbounds nuw i8, ptr %22, i64 2072 %53 = load i64, ptr %52, align 8, !noundef !9 %54 = add i64 %53, -1 @@ -630,9 +633,9 @@ _ZN15crossbeam_epoch7default11with_handle17he9fc9abe04fa9854E.exit: ; preds = %" 56: ; preds = %51 %57 = getelementptr inbounds nuw i8, ptr %22, i64 2176 - store atomic i64 0, ptr %57 release, align 8 + store atomic i64 0, ptr %57 release, align 128 %58 = getelementptr inbounds nuw i8, ptr %22, i64 2080 - %59 = load i64, ptr %58, align 8, !noundef !9 + %59 = load i64, ptr %58, align 32, !noundef !9 %60 = icmp eq i64 %59, 0 br i1 %60, label %"_ZN4core3ptr50drop_in_place$LT$crossbeam_epoch..guard..Guard$GT$17h0f560ee4f7794edaE.exit.sink.split", label %"_ZN4core3ptr50drop_in_place$LT$crossbeam_epoch..guard..Guard$GT$17h0f560ee4f7794edaE.exit" @@ -650,6 +653,7 @@ _ZN15crossbeam_epoch7default11with_handle17he9fc9abe04fa9854E.exit: ; preds = %" br i1 %62, label %"_ZN4core3ptr50drop_in_place$LT$crossbeam_epoch..guard..Guard$GT$17h0f560ee4f7794edaE.exit", label %63 63: ; preds = %61 + call void @llvm.assume(i1 true) [ "align"(ptr %22, i64 128) ] %64 = getelementptr inbounds nuw i8, ptr %22, i64 2072 %65 = load i64, ptr %64, align 8, !noundef !9 %66 = add i64 %65, -1 @@ -659,9 +663,9 @@ _ZN15crossbeam_epoch7default11with_handle17he9fc9abe04fa9854E.exit: ; preds = %" 68: ; preds = %63 %69 = getelementptr inbounds nuw i8, ptr %22, i64 2176 - store atomic i64 0, ptr %69 release, align 8 + store atomic i64 0, ptr %69 release, align 128 %70 = getelementptr inbounds nuw i8, ptr %22, i64 2080 - %71 = load i64, ptr %70, align 8, !noundef !9 + %71 = load i64, ptr %70, align 32, !noundef !9 %72 = icmp eq i64 %71, 0 br i1 %72, label %"_ZN4core3ptr50drop_in_place$LT$crossbeam_epoch..guard..Guard$GT$17h0f560ee4f7794edaE.exit.sink.split", label %"_ZN4core3ptr50drop_in_place$LT$crossbeam_epoch..guard..Guard$GT$17h0f560ee4f7794edaE.exit" @@ -1293,6 +1297,7 @@ define internal fastcc void @"_ZN4core3ptr50drop_in_place$LT$crossbeam_epoch..gu br i1 %1, label %"_ZN71_$LT$crossbeam_epoch..guard..Guard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h72683678aec6a452E.exit", label %2 2: ; preds = %0 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 128) ] %3 = getelementptr inbounds nuw i8, ptr %.0.val, i64 2072 %4 = load i64, ptr %3, align 8, !noundef !9 %5 = add i64 %4, -1 @@ -1302,9 +1307,9 @@ define internal fastcc void @"_ZN4core3ptr50drop_in_place$LT$crossbeam_epoch..gu 7: ; preds = %2 %8 = getelementptr inbounds nuw i8, ptr %.0.val, i64 2176 - store atomic i64 0, ptr %8 release, align 8 + store atomic i64 0, ptr %8 release, align 128 %9 = getelementptr inbounds nuw i8, ptr %.0.val, i64 2080 - %10 = load i64, ptr %9, align 8, !noundef !9 + %10 = load i64, ptr %9, align 32, !noundef !9 %11 = icmp eq i64 %10, 0 br i1 %11, label %12, label %"_ZN71_$LT$crossbeam_epoch..guard..Guard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h72683678aec6a452E.exit" diff --git a/bench/rayon-rs/optimized/5ev50in5ju1pej99.ll b/bench/rayon-rs/optimized/5ev50in5ju1pej99.ll index 4eb9f91986d..2626b7f31a2 100644 --- a/bench/rayon-rs/optimized/5ev50in5ju1pej99.ll +++ b/bench/rayon-rs/optimized/5ev50in5ju1pej99.ll @@ -215,8 +215,10 @@ define internal void @"_ZN4core3ptr54drop_in_place$LT$core..option..Option$LT$us ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr61drop_in_place$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$17h037f25805bba7023E"(ptr %.0.val, i8 %.8.val) unnamed_addr #1 { + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 4) ] %1 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %1) + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 4) ] %2 = getelementptr inbounds nuw i8, ptr %.0.val, i64 4 %3 = trunc nuw i8 %.8.val to i1 br i1 %3, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i, label %4 @@ -232,10 +234,11 @@ _ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i: ; pr br i1 %8, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i, label %9 9: ; preds = %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i - store atomic i8 1, ptr %2 monotonic, align 1 + store atomic i8 1, ptr %2 monotonic, align 4 br label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i: ; preds = %9, %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i, %4, %0 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 4) ] %10 = atomicrmw xchg ptr %.0.val, i32 0 release, align 4 %11 = icmp eq i32 %10, 2 br i1 %11, label %12, label %"_ZN79_$LT$std..sync..mutex..MutexGuard$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h949f322efca72823E.exit" @@ -564,7 +567,7 @@ define hidden void @"_ZN71_$LT$alloc..sync..Arc$LT$T$C$A$GT$$u20$as$u20$core..op 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 hidden noundef align 8 ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h88eb63ac567fc69aE.llvm.14976363794789945401"(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 @@ -579,6 +582,7 @@ define hidden noundef align 8 ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u 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 } @@ -652,6 +656,7 @@ common.resume: ; preds = %24, %17 resume { ptr, i32 } %common.resume.op "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h2e81deeb22fcae4eE.exit": ; preds = %"_ZN3std4sync5mutex19MutexGuard$LT$T$GT$3new17hd1113d1d88291f80E.exit" + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 4) ] %22 = getelementptr inbounds nuw i8, ptr %0, i64 5 store i8 1, ptr %22, align 1 %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -661,10 +666,14 @@ common.resume: ; preds = %24, %17 24: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h2e81deeb22fcae4eE.exit" %25 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 4) ] invoke fastcc void @"_ZN4core3ptr61drop_in_place$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$17h037f25805bba7023E"(ptr nonnull %0, i8 %.0.i.i.i) #22 to label %common.resume unwind label %37 26: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h2e81deeb22fcae4eE.exit" + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 4) ] + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 4) ] %27 = trunc nuw i8 %.0.i.i.i to i1 br i1 %27, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i, label %28 @@ -679,10 +688,11 @@ _ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i.i: ; br i1 %32, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i, label %33 33: ; preds = %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i.i - store atomic i8 1, ptr %13 monotonic, align 1 + store atomic i8 1, ptr %13 monotonic, align 4 br label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i: ; preds = %33, %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i.i, %28, %26 + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 4) ] %34 = atomicrmw xchg ptr %0, i32 0 release, align 4 %35 = icmp eq i32 %34, 2 br i1 %35, label %36, label %"_ZN4core3ptr61drop_in_place$LT$std..sync..mutex..MutexGuard$LT$bool$GT$$GT$17h037f25805bba7023E.exit" @@ -1009,6 +1019,7 @@ _ZN10rayon_core8registry19set_global_registry17h8c93fbc64a3f9233E.exit: ; preds "_ZN4core6result19Result$LT$T$C$E$GT$6expect17hf293763e98a4f866E.llvm.14976363794789945401.exit": ; preds = %.thread, %14, %19, %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h9e11ae7b94f75448E.exit.i.i.i" %.sroa.6.0.ph = phi ptr [ @_ZN10rayon_core8registry12THE_REGISTRY17hbce80af4cee2695bE, %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h9e11ae7b94f75448E.exit.i.i.i" ], [ @_ZN10rayon_core8registry12THE_REGISTRY17hbce80af4cee2695bE, %19 ], [ %.sroa.4.0.copyload.pre, %14 ], [ @_ZN10rayon_core8registry12THE_REGISTRY17hbce80af4cee2695bE, %.thread ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.6.0.ph, i64 8) ] ret ptr %.sroa.6.0.ph } @@ -1308,7 +1319,7 @@ define hidden noundef i64 @_ZN10rayon_core8registry8Registry19current_num_thread ret i64 %.0 } -; 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 noundef align 128 ptr @_ZN10rayon_core8registry8Registry14current_thread17h48d147d3f6f52d55E(ptr noundef nonnull readnone align 128 %0) unnamed_addr #5 personality ptr @rust_eh_personality { "_ZN4core6result19Result$LT$T$C$E$GT$6expect17h390e0a82b1a81ed6E.llvm.14976363794789945401.exit": %.0.val.i = load ptr, ptr @_ZN10rayon_core8registry19WORKER_THREAD_STATE7__getit3VAL17h9453257021be81b2E, align 8, !noalias !182, !noundef !4 @@ -1316,6 +1327,7 @@ define noundef align 128 ptr @_ZN10rayon_core8registry8Registry14current_thread1 br i1 %1, label %7, label %2 2: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h390e0a82b1a81ed6E.llvm.14976363794789945401.exit" + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val.i, i64 128) ] %3 = getelementptr inbounds nuw i8, ptr %.0.val.i, i64 272 %4 = load ptr, ptr %3, align 16, !nonnull !4, !noundef !4 %5 = getelementptr inbounds nuw i8, ptr %4, i64 128 @@ -1357,6 +1369,7 @@ define void @_ZN10rayon_core8registry8Registry17wait_until_primed17he3defff33130 .lr.ph: ; preds = %1, %.lr.ph %.sroa.0.04 = phi ptr [ %8, %.lr.ph ], [ %3, %1 ] %8 = getelementptr inbounds nuw i8, ptr %.sroa.0.04, i64 48 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.04, i64 8) ] %9 = getelementptr inbounds nuw i8, ptr %.sroa.0.04, i64 24 tail call void @_ZN10rayon_core5latch9LockLatch4wait17hfb3c7c9301abcfc8E(ptr noundef nonnull align 4 %9) %10 = icmp eq ptr %8, %6 @@ -2320,6 +2333,7 @@ define hidden void @_ZN10rayon_core8registry9main_loop17h1548e426449e3194E.llvm. br i1 %.not, label %27, label %26 26: ; preds = %23 + call void @llvm.assume(i1 true) [ "align"(ptr %24, i64 8) ] invoke void @_ZN10rayon_core8registry8Registry12catch_unwind17h7201d1f7228249caE(ptr noundef nonnull align 128 %16, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %24, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %3) to label %27 unwind label %46 @@ -2375,6 +2389,7 @@ _ZN10rayon_core8registry12WorkerThread22wait_until_out_of_work17hee0b3f7a77fabe2 br i1 %.not4, label %45, label %44 44: ; preds = %_ZN10rayon_core8registry12WorkerThread22wait_until_out_of_work17hee0b3f7a77fabe23E.exit + call void @llvm.assume(i1 true) [ "align"(ptr %42, i64 8) ] invoke void @_ZN10rayon_core8registry8Registry12catch_unwind17h0b46656f477527b3E(ptr noundef nonnull align 128 %16, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %42, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %3) to label %45 unwind label %41 @@ -2752,9 +2767,9 @@ declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 attributes #0 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) 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 = { 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(read, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #5 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { 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(argmem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #8 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } diff --git a/bench/regex-rs/optimized/10eccrragw6uslmk.ll b/bench/regex-rs/optimized/10eccrragw6uslmk.ll index f15785cc46c..6c19b09e5fb 100644 --- a/bench/regex-rs/optimized/10eccrragw6uslmk.ll +++ b/bench/regex-rs/optimized/10eccrragw6uslmk.ll @@ -12109,14 +12109,14 @@ define hidden { ptr, ptr } @"_ZN92_$LT$hashbrown..map..Iter$LT$K$C$V$GT$$u20$as$ %2 = getelementptr inbounds nuw i8, ptr %0, i64 32 %3 = load i64, ptr %2, align 8, !alias.scope !2302, !noundef !12 %4 = icmp eq i64 %3, 0 - br i1 %4, label %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1feda8f67c65d672E.exit", label %5 + br i1 %4, label %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1feda8f67c65d672E.exit.thread", label %5 5: ; preds = %1 %6 = getelementptr inbounds nuw i8, ptr %0, i64 24 %7 = tail call { i64, i64 } @"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h806c2d75f94c2f57E.llvm.12622858556511099134"(ptr noalias noundef nonnull align 2 dereferenceable(2) %6) %.fca.0.extract4.i.i = extractvalue { i64, i64 } %7, 0 %8 = icmp eq i64 %.fca.0.extract4.i.i, 1 - br i1 %8, label %"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9next_impl17hbcb05ad6f7a7c03dE.llvm.12622858556511099134.exit.i", label %.lr.ph.i.i + br i1 %8, label %.loopexit, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %5 %9 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -12137,9 +12137,9 @@ define hidden { ptr, ptr } @"_ZN92_$LT$hashbrown..map..Iter$LT$K$C$V$GT$$u20$as$ %19 = tail call { i64, i64 } @"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h806c2d75f94c2f57E.llvm.12622858556511099134"(ptr noalias noundef nonnull align 2 dereferenceable(2) %6) %.fca.0.extract.i.i = extractvalue { i64, i64 } %19, 0 %20 = icmp eq i64 %.fca.0.extract.i.i, 1 - br i1 %20, label %"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9next_impl17hbcb05ad6f7a7c03dE.llvm.12622858556511099134.exit.i", label %10 + br i1 %20, label %.loopexit, label %10 -"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9next_impl17hbcb05ad6f7a7c03dE.llvm.12622858556511099134.exit.i": ; preds = %10, %5 +.loopexit: ; preds = %10, %5 %.lcssa.i.i = phi { i64, i64 } [ %7, %5 ], [ %19, %10 ] %.fca.1.extract.i.i = extractvalue { i64, i64 } %.lcssa.i.i, 1 %21 = load ptr, ptr %0, align 8, !alias.scope !2314, !nonnull !12, !noundef !12 @@ -12148,18 +12148,16 @@ define hidden { ptr, ptr } @"_ZN92_$LT$hashbrown..map..Iter$LT$K$C$V$GT$$u20$as$ %24 = load i64, ptr %2, align 8, !alias.scope !2302, !noundef !12 %25 = add i64 %24, -1 store i64 %25, ptr %2, align 8, !alias.scope !2302 - br label %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1feda8f67c65d672E.exit" - -"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1feda8f67c65d672E.exit": ; preds = %1, %"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9next_impl17hbcb05ad6f7a7c03dE.llvm.12622858556511099134.exit.i" - %.0.i = phi ptr [ %23, %"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9next_impl17hbcb05ad6f7a7c03dE.llvm.12622858556511099134.exit.i" ], [ null, %1 ] - %26 = icmp eq ptr %.0.i, null - %27 = getelementptr inbounds i8, ptr %.0.i, i64 -24 - %28 = getelementptr inbounds i8, ptr %.0.i, i64 -8 - %.sroa.3.0 = select i1 %26, ptr undef, ptr %28 - %.sroa.0.0 = select i1 %26, ptr null, ptr %27 - %29 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0, 0 - %30 = insertvalue { ptr, ptr } %29, ptr %.sroa.3.0, 1 - ret { ptr, ptr } %30 + %26 = getelementptr inbounds i8, ptr %23, i64 -24 + %27 = getelementptr inbounds i8, ptr %23, i64 -8 + br label %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1feda8f67c65d672E.exit.thread" + +"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1feda8f67c65d672E.exit.thread": ; preds = %1, %.loopexit + %.sroa.3.0 = phi ptr [ %27, %.loopexit ], [ undef, %1 ] + %.sroa.0.0 = phi ptr [ %26, %.loopexit ], [ null, %1 ] + %28 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0, 0 + %29 = insertvalue { ptr, ptr } %28, ptr %.sroa.3.0, 1 + ret { ptr, ptr } %29 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) uwtable @@ -12972,6 +12970,7 @@ define hidden noundef align 8 dereferenceable_or_null(24) ptr @"_ZN9hashbrown3ra %32 = icmp eq ptr %.0.i, null %33 = getelementptr inbounds i8, ptr %.0.i, i64 -24 %.0 = select i1 %32, ptr null, ptr %33 + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } diff --git a/bench/regex-rs/optimized/11vfjke4utuj478u.ll b/bench/regex-rs/optimized/11vfjke4utuj478u.ll index b4169ca0951..a7379286a19 100644 --- a/bench/regex-rs/optimized/11vfjke4utuj478u.ll +++ b/bench/regex-rs/optimized/11vfjke4utuj478u.ll @@ -1870,6 +1870,7 @@ define internal fastcc noundef align 4 dereferenceable_or_null(4) ptr @"_ZN9hash %68 = icmp eq ptr %.03, null %69 = getelementptr inbounds nuw i8, ptr %.03, i64 16 %.0 = select i1 %68, ptr null, ptr %69 + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 4) ] ret ptr %.0 } @@ -6404,6 +6405,8 @@ _ZN14regex_automata6hybrid3dfa4Lazy15try_clear_cache17he46a9b47820b739dE.exit298 br i1 %608, label %.loopexit413, label %.lr.ph.i166 .lr.ph.i166: ; preds = %.noexc167 + call void @llvm.assume(i1 true) [ "align"(ptr %.val46, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.val47, i64 8) ] %609 = icmp ne ptr %.val47, null call void @llvm.assume(i1 %609) br label %610 @@ -6444,6 +6447,8 @@ _ZN14regex_automata6hybrid3dfa4Lazy15try_clear_cache17he46a9b47820b739dE.exit298 br i1 %618, label %.loopexit, label %.lr.ph.i174 .lr.ph.i174: ; preds = %.noexc175 + call void @llvm.assume(i1 true) [ "align"(ptr %.val48, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.val49, i64 8) ] %619 = icmp ne ptr %.val49, null call void @llvm.assume(i1 %619) br label %620 @@ -6499,7 +6504,7 @@ _ZN14regex_automata6hybrid3dfa4Lazy15try_clear_cache17he46a9b47820b739dE.exit298 } ; Function Attrs: nonlazybind uwtable -define internal fastcc void @_ZN14regex_automata6hybrid3dfa4Lazy14set_transition17hb44bc0a909428fcdE(ptr readonly %.0.val, ptr readonly %.8.val, i32 noundef %0, i32 %1, i32 noundef %2) unnamed_addr #0 personality ptr @rust_eh_personality { +define internal fastcc void @_ZN14regex_automata6hybrid3dfa4Lazy14set_transition17hb44bc0a909428fcdE(ptr %.0.val, ptr readonly %.8.val, i32 noundef %0, i32 %1, i32 noundef %2) unnamed_addr #0 personality ptr @rust_eh_personality { %4 = alloca [1 x { ptr, ptr }], align 8 %5 = alloca { { ptr, i64 }, { ptr, i64 }, { ptr, i64 } }, align 8 %6 = alloca [1 x { ptr, ptr }], align 8 @@ -6511,6 +6516,7 @@ define internal fastcc void @_ZN14regex_automata6hybrid3dfa4Lazy14set_transition %.sroa.5.0.extract.shift = lshr i32 %1, 16 %.sroa.5.0.extract.trunc = zext nneg i32 %.sroa.5.0.extract.shift to i64 store i32 %2, ptr %8, align 4 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %10 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %10) %11 = icmp ne ptr %.8.val, null @@ -6551,6 +6557,7 @@ _ZN14regex_automata6hybrid3dfa7LazyRef8is_valid17h6ff33c3c23a0a93eE.exit.thread: unreachable 27: ; preds = %_ZN14regex_automata6hybrid3dfa7LazyRef8is_valid17h6ff33c3c23a0a93eE.exit + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %28 = and i32 %2, 134217727 %29 = zext nneg i32 %28 to i64 %30 = icmp ugt i64 %15, %29 @@ -6578,6 +6585,7 @@ _ZN14regex_automata6hybrid3dfa7LazyRef8is_valid17h6ff33c3c23a0a93eE.exit22.threa unreachable 38: ; preds = %27 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %trunc = trunc i32 %1 to i1 br i1 %trunc, label %46, label %39 @@ -8228,6 +8236,8 @@ _ZN14regex_automata4util4utf811is_boundary17hf4d6af245184b3aeE.exit23: ; preds = br i1 %spec.select.i21, label %.loopexit, label %25 25: ; preds = %21, %_ZN14regex_automata4util4utf811is_boundary17hf4d6af245184b3aeE.exit23 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %3, i64 8) ] %26 = tail call noundef align 8 ptr @_ZN14regex_automata6hybrid6search20find_overlapping_fwd17hc7d7d5de91737937E(ptr noalias noundef nonnull readonly align 8 dereferenceable(688) %2, ptr noalias noundef nonnull align 8 dereferenceable(352) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %0, ptr noalias noundef nonnull align 8 dereferenceable(64) %1) %27 = icmp eq ptr %26, null br i1 %27, label %28, label %.loopexit @@ -10713,6 +10723,7 @@ define hidden void @_ZN14regex_automata4meta8wrappers12OnePassCache3new17h639063 %15 = add i64 %12, -1 %16 = getelementptr inbounds [0 x { i32, i32 }], ptr %14, i64 0, i64 %15 %.0.i.i.i.i = select i1 %.not.i.i.i.i, ptr null, ptr %16 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i.i.i.i, i64 4) ] %17 = invoke noundef i32 @"_ZN4core6option15Option$LT$T$GT$6map_or17hdc2ed9ca1d6a9a6eE.llvm.16507365577459693613"(ptr noalias noundef readonly align 4 dereferenceable_or_null(8) %.0.i.i.i.i, i32 noundef 0) to label %.noexc.i unwind label %23, !noalias !2280 @@ -10803,6 +10814,7 @@ define void @_ZN14regex_automata4meta8wrappers12OnePassCache5reset17h18dabecc552 %18 = add i64 %15, -1 %19 = getelementptr inbounds [0 x { i32, i32 }], ptr %17, i64 0, i64 %18 %.0.i.i.i = select i1 %.not.i.i.i, ptr null, ptr %19 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i.i.i, i64 4) ] %20 = tail call noundef i32 @"_ZN4core6option15Option$LT$T$GT$6map_or17hdc2ed9ca1d6a9a6eE.llvm.16507365577459693613"(ptr noalias noundef readonly align 4 dereferenceable_or_null(8) %.0.i.i.i, i32 noundef 0), !noalias !2319 %21 = zext i32 %20 to i64 %22 = load i64, ptr %14, align 8, !alias.scope !2320, !noalias !2318, !noundef !5 diff --git a/bench/regex-rs/optimized/4p7mqoqm6h8kkgbs.ll b/bench/regex-rs/optimized/4p7mqoqm6h8kkgbs.ll index be38063ef3e..b0ecf47184c 100644 --- a/bench/regex-rs/optimized/4p7mqoqm6h8kkgbs.ll +++ b/bench/regex-rs/optimized/4p7mqoqm6h8kkgbs.ll @@ -41,6 +41,7 @@ define hidden void @"_ZN104_$LT$core..iter..adapters..cloned..Cloned$LT$I$GT$$u2 9: ; preds = %2 %10 = getelementptr inbounds nuw i8, ptr %6, i64 24 store ptr %10, ptr %1, align 8, !alias.scope !5 + call void @llvm.assume(i1 true) [ "align"(ptr %6, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !8) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3), !noalias !13 call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hebbb1fc2363025c1E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 dereferenceable(24) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) dereferenceable_or_null(24) %6), !noalias !8 @@ -70,7 +71,7 @@ define hidden { i32, ptr } @"_ZN119_$LT$regex_automata..util..primitives..WithPa br i1 %switch, label %10, label %11 10: ; preds = %6 - tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.47f0a5a52828d2b742d36ebdc600f332.3.llvm.11839231457967886541, i64 noundef 43, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.47f0a5a52828d2b742d36ebdc600f332.5.llvm.11839231457967886541) #13 + tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.47f0a5a52828d2b742d36ebdc600f332.3.llvm.11839231457967886541, i64 noundef 43, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.47f0a5a52828d2b742d36ebdc600f332.5.llvm.11839231457967886541) #14 unreachable 11: ; preds = %6 @@ -202,8 +203,8 @@ define hidden { ptr, ptr } @"_ZN63_$LT$I$u20$as$u20$core..iter..traits..collect. ret { ptr, ptr } %4 } -; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable -define hidden noundef align 8 dereferenceable_or_null(24) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7b08b6956a4bb315E.llvm.11839231457967886541"(ptr noalias nocapture noundef align 8 dereferenceable(16) %0) unnamed_addr #3 { +; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable +define hidden noundef align 8 dereferenceable_or_null(24) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7b08b6956a4bb315E.llvm.11839231457967886541"(ptr noalias nocapture noundef align 8 dereferenceable(16) %0) unnamed_addr #6 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load ptr, ptr %2, align 8, !nonnull !4, !noundef !4 %4 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 @@ -217,6 +218,7 @@ define hidden noundef align 8 dereferenceable_or_null(24) 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 } @@ -256,7 +258,7 @@ define hidden void @_ZN5regex8builders7Builder3new17h0d12423bb591e296E(ptr noali 6: ; preds = %2 %7 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr45drop_in_place$LT$regex..builders..Builder$GT$17h70e9a16ff5ce7811E"(ptr noalias noundef nonnull align 8 dereferenceable(160) %4) #14 + invoke void @"_ZN4core3ptr45drop_in_place$LT$regex..builders..Builder$GT$17h70e9a16ff5ce7811E"(ptr noalias noundef nonnull align 8 dereferenceable(160) %4) #15 to label %10 unwind label %8 "_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$T$C$I$GT$$GT$11spec_extend17h251aaa18cd594f9bE.exit": ; preds = %2 @@ -267,7 +269,7 @@ define hidden void @_ZN5regex8builders7Builder3new17h0d12423bb591e296E(ptr noali 8: ; preds = %6 %9 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #15 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #16 unreachable 10: ; preds = %6 @@ -286,7 +288,7 @@ define hidden void @_ZN5regex8builders7Builder3new17he1584c897902742fE(ptr noali 4: ; preds = %1 %5 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr45drop_in_place$LT$regex..builders..Builder$GT$17h70e9a16ff5ce7811E"(ptr noalias noundef nonnull align 8 dereferenceable(160) %2) #14 + invoke void @"_ZN4core3ptr45drop_in_place$LT$regex..builders..Builder$GT$17h70e9a16ff5ce7811E"(ptr noalias noundef nonnull align 8 dereferenceable(160) %2) #15 to label %8 unwind label %6 "_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$T$C$I$GT$$GT$11spec_extend17h0ba5835ab3b30981E.exit": ; preds = %1 @@ -297,7 +299,7 @@ define hidden void @_ZN5regex8builders7Builder3new17he1584c897902742fE(ptr noali 6: ; preds = %4 %7 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #15 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #16 unreachable 8: ; preds = %4 @@ -327,13 +329,13 @@ define void @_ZN5regex8builders5bytes12RegexBuilder3new17h6901428803d639e8E(ptr 8: ; preds = %3 %9 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr45drop_in_place$LT$regex..builders..Builder$GT$17h70e9a16ff5ce7811E"(ptr noalias noundef nonnull align 8 dereferenceable(160) %5) #14 + invoke void @"_ZN4core3ptr45drop_in_place$LT$regex..builders..Builder$GT$17h70e9a16ff5ce7811E"(ptr noalias noundef nonnull align 8 dereferenceable(160) %5) #15 to label %12 unwind label %10, !noalias !21 10: ; preds = %8 %11 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #15, !noalias !21 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #16, !noalias !21 unreachable 12: ; preds = %8 @@ -942,7 +944,7 @@ _ZN5regex5regex5bytes12no_expansion17h3ce9713693a687f3E.exit: ; preds = %10, %11 } ; 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 #6 +declare void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #7 ; Function Attrs: nonlazybind uwtable declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #1 @@ -963,10 +965,10 @@ declare noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList declare hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h0cedd93b37f7aa5aE"(ptr noalias noundef readonly align 8 dereferenceable(8), ptr noalias noundef align 8 dereferenceable(64)) 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) #7 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #8 ; Function Attrs: cold noreturn nounwind nonlazybind uwtable -declare void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() unnamed_addr #8 +declare void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() unnamed_addr #9 ; Function Attrs: nonlazybind uwtable declare hidden void @_ZN5regex8builders7Builder15build_one_bytes17hfc277fc41c11ddbdE(ptr noalias nocapture noundef sret({ ptr, [3 x i64] }) align 8 dereferenceable(32), ptr noalias noundef readonly align 8 dereferenceable(160)) unnamed_addr #1 @@ -978,10 +980,10 @@ declare hidden void @_ZN5regex8builders7Builder16build_many_bytes17ha4436740a89e declare void @_ZN14regex_automata4util8captures8Captures22interpolate_bytes_into17h5d2472c12f96434fE(ptr noalias noundef readonly align 8 dereferenceable(40), ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noalias noundef align 8 dereferenceable(24)) unnamed_addr #1 ; 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 void @"_ZN67_$LT$regex..builders..Builder$u20$as$u20$core..default..Default$GT$7default17hea6e786948e237ffE"(ptr noalias nocapture noundef sret({ { { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { [16 x i8], i8, [7 x i8] }, { i8, i8 }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }, { { i64, ptr }, i64 }, { i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [2 x i8] } }) align 8 dereferenceable(160)) unnamed_addr #1 @@ -1005,7 +1007,7 @@ declare void @_ZN14regex_automata4util6syntax6Config20dot_matches_new_line17hee6 declare void @_ZN14regex_automata4util6syntax6Config4crlf17h73c52b732fa23f47E(ptr noalias nocapture noundef sret({ i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [2 x i8] }) align 4 dereferenceable(16), ptr noalias nocapture noundef align 4 dereferenceable(16), i1 noundef zeroext) unnamed_addr #1 ; Function Attrs: inlinehint nonlazybind uwtable -declare hidden void @"_ZN74_$LT$regex_automata..meta..regex..Config$u20$as$u20$core..clone..Clone$GT$5clone17h22eaa2114994b3f2E.llvm.12136644151290946301"(ptr noalias nocapture noundef sret({ { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { [16 x i8], i8, [7 x i8] }, { i8, i8 }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }) align 8 dereferenceable(120), ptr noalias noundef readonly align 8 dereferenceable(120)) unnamed_addr #10 +declare hidden void @"_ZN74_$LT$regex_automata..meta..regex..Config$u20$as$u20$core..clone..Clone$GT$5clone17h22eaa2114994b3f2E.llvm.12136644151290946301"(ptr noalias nocapture noundef sret({ { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { [16 x i8], i8, [7 x i8] }, { i8, i8 }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }) align 8 dereferenceable(120), ptr noalias noundef readonly align 8 dereferenceable(120)) unnamed_addr #11 ; Function Attrs: nonlazybind uwtable declare void @_ZN14regex_automata4meta5regex6Config15line_terminator17h9db8619ae3501b4aE(ptr noalias nocapture noundef sret({ { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { i64, i64 }, { [16 x i8], i8, [7 x i8] }, { i8, i8 }, i8, i8, i8, i8, i8, i8, i8, i8, i8, [5 x i8] }) align 8 dereferenceable(120), ptr noalias nocapture noundef align 8 dereferenceable(120), i8 noundef) unnamed_addr #1 @@ -1029,7 +1031,7 @@ declare void @_ZN14regex_automata4util6syntax6Config5octal17h7ba6677bd5673fd6E(p declare void @_ZN14regex_automata4util6syntax6Config10nest_limit17ha4d5c0a021caf529E(ptr noalias nocapture noundef sret({ i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [2 x i8] }) align 4 dereferenceable(16), ptr noalias nocapture noundef align 4 dereferenceable(16), i32 noundef) unnamed_addr #1 ; Function Attrs: inlinehint nonlazybind uwtable -declare hidden void @"_ZN71_$LT$alloc..sync..Arc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h02de9d72c394614cE.llvm.13084666244534616040"(ptr noalias noundef align 8 dereferenceable(16)) unnamed_addr #10 +declare hidden void @"_ZN71_$LT$alloc..sync..Arc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h02de9d72c394614cE.llvm.13084666244534616040"(ptr noalias noundef align 8 dereferenceable(16)) unnamed_addr #11 ; Function Attrs: nonlazybind uwtable declare hidden void @"_ZN4core3ptr45drop_in_place$LT$regex..builders..Builder$GT$17h70e9a16ff5ce7811E"(ptr noalias noundef align 8 dereferenceable(160)) unnamed_addr #1 @@ -1047,13 +1049,13 @@ declare hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17h1d5a80e9 declare hidden noundef i64 @"_ZN56_$LT$$BP$const$u20$T$u20$as$u20$memchr..ext..Pointer$GT$8distance17habd1359cc593a97cE"(ptr noundef, ptr noundef) unnamed_addr #1 ; Function Attrs: inlinehint nonlazybind uwtable -declare hidden noundef ptr @_ZN4core4sync6atomic11atomic_load17h705600093d4b62c0E.llvm.15639794734364571569(ptr noundef, i8 noundef) unnamed_addr #10 +declare hidden noundef ptr @_ZN4core4sync6atomic11atomic_load17h705600093d4b62c0E.llvm.15639794734364571569(ptr noundef, i8 noundef) unnamed_addr #11 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #11 +declare void @llvm.assume(i1 noundef) #12 ; 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 attributes #0 = { alwaysinline mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } @@ -1061,16 +1063,17 @@ attributes #2 = { inlinehint mustprogress nofree norecurse nosync nounwind nonla attributes #3 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #5 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) 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 = { 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 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #11 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #12 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #13 = { noreturn } -attributes #14 = { cold } -attributes #15 = { cold noreturn nounwind } +attributes #6 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) 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 = { 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 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #12 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #13 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #14 = { noreturn } +attributes #15 = { cold } +attributes #16 = { cold noreturn nounwind } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll b/bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll index 41befb91076..3fbf29aea13 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 @@ -1290,13 +1290,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 @@ -1773,6 +1773,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 +1931,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/ropey-rs/optimized/1rgs0gwanwoi91gz.ll b/bench/ropey-rs/optimized/1rgs0gwanwoi91gz.ll index eadd7f81bff..3058fcd9693 100644 --- a/bench/ropey-rs/optimized/1rgs0gwanwoi91gz.ll +++ b/bench/ropey-rs/optimized/1rgs0gwanwoi91gz.ll @@ -19,11 +19,11 @@ define hidden { ptr, i64 } @"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20 br i1 %8, label %10, label %11 9: ; preds = %5 - tail call void @_ZN4core5slice5index22slice_index_order_fail17h375f84510c422e93E(i64 noundef %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #18 + tail call void @_ZN4core5slice5index22slice_index_order_fail17h375f84510c422e93E(i64 noundef %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #19 unreachable 10: ; preds = %7 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h70ffde91723d2a46E(i64 noundef %1, i64 noundef %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #18 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h70ffde91723d2a46E(i64 noundef %1, i64 noundef %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4) #19 unreachable 11: ; preds = %7 @@ -103,6 +103,7 @@ define hidden noundef i64 @_ZN11str_indices5utf1621count_surrogates_impl17he841a %.sroa.028.079 = phi ptr [ %28, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.12620698079031950665.exit.thread" ], [ %10, %.preheader ] %.sroa.529.078 = phi i64 [ %29, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.12620698079031950665.exit.thread" ], [ %12, %.preheader ] %.sroa.0.0.sroa.speculated.i.i = tail call noundef i64 @llvm.umin.i64(i64 %.sroa.529.078, i64 255) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.028.079, i64 16) ] %28 = getelementptr inbounds nuw <2 x i64>, ptr %.sroa.028.079, i64 %.sroa.0.0.sroa.speculated.i.i %29 = sub i64 %.sroa.529.078, %.sroa.0.0.sroa.speculated.i.i br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.12620698079031950665.exit" @@ -123,7 +124,7 @@ define hidden noundef i64 @_ZN11str_indices5utf1621count_surrogates_impl17he841a ret i64 %.sroa.0.1 "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.12620698079031950665.exit.thread": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.12620698079031950665.exit" - %36 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %45, <16 x i8> zeroinitializer) #19 + %36 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %45, <16 x i8> zeroinitializer) #20 %.sroa.0.0.vec.extract.i = extractelement <2 x i64> %36, i64 0 %.sroa.0.8.vec.extract.i = extractelement <2 x i64> %36, i64 1 %37 = add i64 %.sroa.0.8.vec.extract.i, %.sroa.0.280 @@ -196,7 +197,7 @@ define hidden { ptr, i64 } @"_ZN4core3str6traits110_$LT$impl$u20$core..slice..in br i1 %11, label %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hb97b2eada704aeb2E.llvm.12620698079031950665.exit.thread", label %12 12: ; preds = %7, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hb97b2eada704aeb2E.llvm.12620698079031950665.exit" - tail call void @_ZN4core3str16slice_error_fail17h11278fc6a58fee91E(ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2, i64 noundef 0, i64 noundef %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3) #18 + tail call void @_ZN4core3str16slice_error_fail17h11278fc6a58fee91E(ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2, i64 noundef 0, i64 noundef %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3) #19 unreachable "_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hb97b2eada704aeb2E.llvm.12620698079031950665.exit.thread": ; preds = %4, %7, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hb97b2eada704aeb2E.llvm.12620698079031950665.exit" @@ -218,7 +219,7 @@ define hidden void @_ZN4core9core_arch3x864sse212_mm_add_epi817h06b4dd1368b27043 define hidden void @_ZN4core9core_arch3x864sse212_mm_sad_epu817hbd4dac94207eeac9E.llvm.12620698079031950665(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([16 x i8]) align 16 dereferenceable(16) initializes((0, 16)) %0, ptr noalias nocapture noundef readonly align 16 dereferenceable(16) %1, ptr noalias nocapture noundef readonly align 16 dereferenceable(16) %2) unnamed_addr #5 { %4 = load <16 x i8>, ptr %1, align 16 %5 = load <16 x i8>, ptr %2, align 16 - %6 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %4, <16 x i8> %5) #19 + %6 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %4, <16 x i8> %5) #20 store <2 x i64> %6, ptr %0, align 16 ret void } @@ -377,7 +378,7 @@ define hidden void @"_ZN84_$LT$core..core_arch..x86..__m128i$u20$as$u20$str_indi ; Function Attrs: alwaysinline mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable define hidden noundef i64 @"_ZN84_$LT$core..core_arch..x86..__m128i$u20$as$u20$str_indices..byte_chunk..ByteChunk$GT$9sum_bytes17h76c2483bed7e0686E.llvm.12620698079031950665"(ptr noalias nocapture noundef readonly align 16 dereferenceable(16) %0) unnamed_addr #9 { %2 = load <16 x i8>, ptr %0, align 16 - %3 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %2, <16 x i8> zeroinitializer) #19 + %3 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %2, <16 x i8> zeroinitializer) #20 %shift = shufflevector <2 x i64> %3, <2 x i64> poison, <2 x i32> %4 = add <2 x i64> %3, %shift %5 = extractelement <2 x i64> %4, i64 0 @@ -483,7 +484,7 @@ define noundef i64 @_ZN5ropey9str_utils27byte_to_utf16_surrogate_idx17h1e1aeb5c0 br i1 %17, label %"_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$5index17h66d5095e8283f190E.llvm.12620698079031950665.exit", label %18 18: ; preds = %14, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hb97b2eada704aeb2E.llvm.12620698079031950665.exit.i" - tail call void @_ZN4core3str16slice_error_fail17h11278fc6a58fee91E(ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1, i64 noundef 0, i64 noundef %.sroa.0.058, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.775cfca7b5a560aabe8e003211b2d5bf.33.llvm.12620698079031950665) #18 + tail call void @_ZN4core3str16slice_error_fail17h11278fc6a58fee91E(ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1, i64 noundef 0, i64 noundef %.sroa.0.058, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.775cfca7b5a560aabe8e003211b2d5bf.33.llvm.12620698079031950665) #19 unreachable "_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$5index17h66d5095e8283f190E.llvm.12620698079031950665.exit": ; preds = %6, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hb97b2eada704aeb2E.llvm.12620698079031950665.exit.i" @@ -538,6 +539,7 @@ define noundef i64 @_ZN5ropey9str_utils27byte_to_utf16_surrogate_idx17h1e1aeb5c0 %.sroa.010.065 = phi ptr [ %43, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.12620698079031950665.exit.thread" ], [ %25, %.preheader ] %.sroa.511.064 = phi i64 [ %44, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.12620698079031950665.exit.thread" ], [ %27, %.preheader ] %.sroa.0.0.sroa.speculated.i.i = tail call noundef i64 @llvm.umin.i64(i64 %.sroa.511.064, i64 255) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.010.065, i64 16) ] %43 = getelementptr inbounds nuw <2 x i64>, ptr %.sroa.010.065, i64 %.sroa.0.0.sroa.speculated.i.i %44 = sub i64 %.sroa.511.064, %.sroa.0.0.sroa.speculated.i.i br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.12620698079031950665.exit" @@ -554,7 +556,7 @@ define noundef i64 @_ZN5ropey9str_utils27byte_to_utf16_surrogate_idx17h1e1aeb5c0 br i1 %50, label %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.llvm.12620698079031950665.exit, label %.lr.ph72 "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.12620698079031950665.exit.thread": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.12620698079031950665.exit" - %51 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %60, <16 x i8> zeroinitializer) #19 + %51 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %60, <16 x i8> zeroinitializer) #20 %.sroa.0.0.vec.extract.i = extractelement <2 x i64> %51, i64 0 %.sroa.0.8.vec.extract.i = extractelement <2 x i64> %51, i64 1 %52 = add i64 %.sroa.0.8.vec.extract.i, %.sroa.0.2.i66 @@ -658,7 +660,7 @@ define noundef i64 @_ZN5ropey9str_utils27utf16_code_unit_to_char_idx17hbc7fc5756 br i1 %36, label %37, label %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h06e5dcfa222d39b0E.exit" 37: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.12620698079031950665.exit.thread" - tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h9fca8563b179f90fE(i64 noundef %.sroa.0.2.i.lcssa, i64 noundef %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.775cfca7b5a560aabe8e003211b2d5bf.10) #18, !noalias !68 + tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h9fca8563b179f90fE(i64 noundef %.sroa.0.2.i.lcssa, i64 noundef %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.775cfca7b5a560aabe8e003211b2d5bf.10) #19, !noalias !68 unreachable "_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h06e5dcfa222d39b0E.exit": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.12620698079031950665.exit.thread" @@ -677,10 +679,10 @@ define noundef i64 @_ZN5ropey9str_utils27utf16_code_unit_to_char_idx17hbc7fc5756 %41 = load <16 x i8>, ptr %.sroa.023.0159, align 16, !alias.scope !71, !noalias !74 %42 = icmp slt <16 x i8> %41, splat (i8 -64) %43 = zext <16 x i1> %42 to <16 x i8> - %44 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %43, <16 x i8> zeroinitializer) #19 + %44 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %43, <16 x i8> zeroinitializer) #20 %45 = icmp ugt <16 x i8> %41, splat (i8 -17) %46 = zext <16 x i1> %45 to <16 x i8> - %47 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %46, <16 x i8> zeroinitializer) #19 + %47 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %46, <16 x i8> zeroinitializer) #20 %.sroa.0.0.vec.extract.i = extractelement <2 x i64> %47, i64 0 %.sroa.0.8.vec.extract.i = extractelement <2 x i64> %47, i64 1 %.neg127 = add i64 %.sroa.08.3.i160, 16 @@ -721,8 +723,8 @@ define noundef i64 @_ZN5ropey9str_utils27utf16_code_unit_to_char_idx17hbc7fc5756 ._crit_edge: ; preds = %.lr.ph145 %69 = shl nuw nsw i64 %.sroa.0.0.sroa.speculated.i8, 4 - %70 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %87, <16 x i8> zeroinitializer) #19 - %71 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %90, <16 x i8> zeroinitializer) #19 + %70 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %87, <16 x i8> zeroinitializer) #20 + %71 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %90, <16 x i8> zeroinitializer) #20 %.sroa.0.0.vec.extract.i3 = extractelement <2 x i64> %71, i64 0 %.sroa.0.8.vec.extract.i4 = extractelement <2 x i64> %71, i64 1 %72 = add i64 %69, %.sroa.08.2.i152 @@ -833,7 +835,7 @@ _ZN11str_indices5utf1616to_byte_idx_impl17hc61dbf244c402ddbE.exit: ; preds = %"_ "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.12620698079031950665.exit.thread.i": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.12620698079031950665.exit.i", %._crit_edge.i %.lcssa161.i = phi <16 x i8> [ zeroinitializer, %._crit_edge.i ], [ %145, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.12620698079031950665.exit.i" ] - %128 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %.lcssa161.i, <16 x i8> zeroinitializer) #19 + %128 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %.lcssa161.i, <16 x i8> zeroinitializer) #20 %.sroa.0.0.vec.extract.i.i = extractelement <2 x i64> %128, i64 0 %.sroa.0.8.vec.extract.i.i = extractelement <2 x i64> %128, i64 1 %129 = icmp eq i64 %106, 0 @@ -894,7 +896,7 @@ _ZN11str_indices5utf1616to_byte_idx_impl17hc61dbf244c402ddbE.exit: ; preds = %"_ %164 = add nuw nsw <16 x i8> %155, %151 %165 = add nuw nsw <16 x i8> %164, %159 %166 = add nuw nsw <16 x i8> %165, %163 - %167 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %166, <16 x i8> zeroinitializer) #19 + %167 = tail call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %166, <16 x i8> zeroinitializer) #20 %.sroa.0.0.vec.extract.i7.i = extractelement <2 x i64> %167, i64 0 %.sroa.0.8.vec.extract.i8.i = extractelement <2 x i64> %167, i64 1 %168 = add i64 %.sroa.0.8.vec.extract.i8.i, %.sroa.011.0.i169.i @@ -1006,17 +1008,20 @@ declare void @_ZN4core3str16slice_error_fail17h11278fc6a58fee91E(ptr noalias nou ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(none) declare <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8>, <16 x i8>) unnamed_addr #14 +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #15 + ; Function Attrs: mustprogress 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) #16 ; Function Attrs: mustprogress 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) #16 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #16 +declare void @llvm.experimental.noalias.scope.decl(metadata) #17 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #17 +declare i64 @llvm.umin.i64(i64, i64) #18 attributes #0 = { alwaysinline 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" } @@ -1033,11 +1038,12 @@ attributes #11 = { nofree norecurse nosync nounwind nonlazybind memory(argmem: r attributes #12 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #13 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #14 = { mustprogress nocallback nofree nosync nounwind willreturn memory(none) } -attributes #15 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #16 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #17 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #18 = { noreturn } -attributes #19 = { nounwind } +attributes #15 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #16 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #17 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #18 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #19 = { noreturn } +attributes #20 = { nounwind } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/ropey-rs/optimized/21bl6c983bdkzf7g.ll b/bench/ropey-rs/optimized/21bl6c983bdkzf7g.ll index d4813be0d06..9df35898c70 100644 --- a/bench/ropey-rs/optimized/21bl6c983bdkzf7g.ll +++ b/bench/ropey-rs/optimized/21bl6c983bdkzf7g.ll @@ -1386,6 +1386,7 @@ define hidden noundef i64 @_ZN11str_indices5utf1621count_surrogates_impl17he841a %.sroa.028.079 = phi ptr [ %28, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.15236414416081531888.exit.thread" ], [ %10, %.preheader ] %.sroa.529.078 = phi i64 [ %29, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.15236414416081531888.exit.thread" ], [ %12, %.preheader ] %.sroa.0.0.sroa.speculated.i.i = tail call noundef i64 @llvm.umin.i64(i64 %.sroa.529.078, i64 255) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.028.079, i64 16) ] %28 = getelementptr inbounds nuw <2 x i64>, ptr %.sroa.028.079, i64 %.sroa.0.0.sroa.speculated.i.i %29 = sub i64 %.sroa.529.078, %.sroa.0.0.sroa.speculated.i.i br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.15236414416081531888.exit" @@ -5476,6 +5477,7 @@ define void @_ZN5ropey4tree4node4Node17get_chunk_at_byte17hc722a15ed603f0bcE(ptr %.sroa.4.0.lcssa = phi i64 [ 0, %3 ], [ %43, %40 ] %.sroa.05.0.lcssa = phi i64 [ 0, %3 ], [ %44, %40 ] %.sroa.0.0.lcssa = phi ptr [ %1, %3 ], [ %47, %40 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.lcssa, i64 8) ] %6 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa, i64 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !685 call void @"_ZN8smallvec17SmallVec$LT$A$GT$6triple17h2f30d8a9bb127a1cE.llvm.8018463459433534105"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(1000) %6) @@ -5603,6 +5605,7 @@ define void @_ZN5ropey4tree4node4Node17get_chunk_at_char17h162e654e07e3527eE(ptr %.sroa.4.0.lcssa = phi i64 [ 0, %3 ], [ %43, %40 ] %.sroa.05.0.lcssa = phi i64 [ 0, %3 ], [ %44, %40 ] %.sroa.0.0.lcssa = phi ptr [ %1, %3 ], [ %47, %40 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.lcssa, i64 8) ] %6 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa, i64 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !705 call void @"_ZN8smallvec17SmallVec$LT$A$GT$6triple17h2f30d8a9bb127a1cE.llvm.8018463459433534105"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(1000) %6) @@ -5730,6 +5733,7 @@ define void @_ZN5ropey4tree4node4Node28get_chunk_at_utf16_code_unit17h3fd3e3f7ab %.sroa.4.0.lcssa = phi i64 [ 0, %3 ], [ %44, %41 ] %.sroa.05.0.lcssa = phi i64 [ 0, %3 ], [ %45, %41 ] %.sroa.0.0.lcssa = phi ptr [ %1, %3 ], [ %48, %41 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.lcssa, i64 8) ] %6 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa, i64 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !725 call void @"_ZN8smallvec17SmallVec$LT$A$GT$6triple17h2f30d8a9bb127a1cE.llvm.8018463459433534105"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(1000) %6) @@ -5859,6 +5863,7 @@ define void @_ZN5ropey4tree4node4Node23get_chunk_at_line_break17hb8b8a9713ee69b9 %.sroa.4.0.lcssa = phi i64 [ 0, %3 ], [ %42, %39 ] %.sroa.05.0.lcssa = phi i64 [ 0, %3 ], [ %43, %39 ] %.sroa.0.0.lcssa = phi ptr [ %1, %3 ], [ %46, %39 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0.lcssa, i64 8) ] %6 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa, i64 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !745 call void @"_ZN8smallvec17SmallVec$LT$A$GT$6triple17h2f30d8a9bb127a1cE.llvm.8018463459433534105"(ptr noalias nocapture noundef nonnull sret([24 x i8]) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(1000) %6) @@ -6527,6 +6532,7 @@ _ZN5ropey4tree13node_children12NodeChildren4iter17hedc82a92e73b9756E.exit: ; pre %38 = add nuw i64 %.sroa.8.039, 1 %39 = getelementptr inbounds { i64, i64, i64, i64 }, ptr %27, i64 %.sroa.8.039 %40 = getelementptr inbounds ptr, ptr %28, i64 %.sroa.8.039 + call void @llvm.assume(i1 true) [ "align"(ptr %39, i64 8) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) %41 = load ptr, ptr %40, align 8, !nonnull !7, !noundef !7 %42 = getelementptr inbounds nuw i8, ptr %41, i64 16 @@ -7662,6 +7668,7 @@ _ZN5ropey4tree13node_children12NodeChildren5nodes17h41f9a73c210d05f7E.exit: ; pr 38: ; preds = %_ZN5ropey4tree13node_children12NodeChildren9nodes_mut17h1d9d40aadd47c1ebE.exit %39 = add nsw i64 %.pre-phi27, -1 %40 = getelementptr inbounds [0 x ptr], ptr %4, i64 0, i64 %39 + call void @llvm.assume(i1 true) [ "align"(ptr %40, i64 8) ] %41 = tail call noundef align 8 dereferenceable(1008) ptr @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$8make_mut17h4b2c8c9d5667e931E.llvm.15236414416081531888"(ptr noalias noundef nonnull align 8 dereferenceable(8) %40) %42 = tail call noundef zeroext i1 @_ZN5ropey4tree4node4Node13zip_fix_right17h8692b3b832156182E(ptr noalias noundef nonnull align 8 dereferenceable(1008) %41) br i1 %42, label %7, label %.loopexit.loopexit @@ -8158,6 +8165,7 @@ _ZN11str_indices5chars10count_impl17h85466a28fb53b459E.llvm.15236414416081531888 %.sroa.5192.0488 = phi i64 [ %108, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.15236414416081531888.exit47.thread" ], [ %91, %.preheader ] %.sroa.0191.0487 = phi ptr [ %107, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.15236414416081531888.exit47.thread" ], [ %89, %.preheader ] %.sroa.0.0.sroa.speculated.i.i = tail call noundef i64 @llvm.umin.i64(i64 %.sroa.5192.0488, i64 255) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0191.0487, i64 16) ] %107 = getelementptr inbounds nuw <2 x i64>, ptr %.sroa.0191.0487, i64 %.sroa.0.0.sroa.speculated.i.i %108 = sub i64 %.sroa.5192.0488, %.sroa.0.0.sroa.speculated.i.i br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.llvm.15236414416081531888.exit47" diff --git a/bench/ropey-rs/optimized/m1t64q7tygzmil6.ll b/bench/ropey-rs/optimized/m1t64q7tygzmil6.ll index bf809ea0c0f..6e93efc28b4 100644 --- a/bench/ropey-rs/optimized/m1t64q7tygzmil6.ll +++ b/bench/ropey-rs/optimized/m1t64q7tygzmil6.ll @@ -315,7 +315,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit: ; preds = %2 %42 = getelementptr inbounds nuw i8, ptr %1, i64 32 %.val94 = load ptr, ptr %42, align 8, !nonnull !4, !noundef !4 %43 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val95 = load ptr, ptr %43, align 8, !nonnull !4, !noundef !4 + %.val95 = load ptr, ptr %43, align 8, !nonnull !4, !align !5, !noundef !4 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %11), !noalias !16 store ptr @anon.e942f5b93070d75cb2a7dc08a9bb38ac.11, ptr %11, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 8 @@ -353,7 +353,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit107: ; preds = %2 %50 = getelementptr inbounds nuw i8, ptr %1, i64 32 %.val92 = load ptr, ptr %50, align 8, !nonnull !4, !noundef !4 %51 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val93 = load ptr, ptr %51, align 8, !nonnull !4, !noundef !4 + %.val93 = load ptr, ptr %51, align 8, !nonnull !4, !align !5, !noundef !4 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %10), !noalias !19 store ptr @anon.e942f5b93070d75cb2a7dc08a9bb38ac.14, ptr %10, align 8 %.sroa.5169.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 8 @@ -391,7 +391,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit113: ; preds = %2 %58 = getelementptr inbounds nuw i8, ptr %1, i64 32 %.val90 = load ptr, ptr %58, align 8, !nonnull !4, !noundef !4 %59 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val91 = load ptr, ptr %59, align 8, !nonnull !4, !noundef !4 + %.val91 = load ptr, ptr %59, align 8, !nonnull !4, !align !5, !noundef !4 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %9), !noalias !22 store ptr @anon.e942f5b93070d75cb2a7dc08a9bb38ac.17, ptr %9, align 8 %.sroa.5175.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 8 @@ -429,7 +429,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit119: ; preds = %2 %66 = getelementptr inbounds nuw i8, ptr %1, i64 32 %.val88 = load ptr, ptr %66, align 8, !nonnull !4, !noundef !4 %67 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val89 = load ptr, ptr %67, align 8, !nonnull !4, !noundef !4 + %.val89 = load ptr, ptr %67, align 8, !nonnull !4, !align !5, !noundef !4 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %8), !noalias !25 store ptr @anon.e942f5b93070d75cb2a7dc08a9bb38ac.20, ptr %8, align 8 %.sroa.5181.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 8 @@ -459,7 +459,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit125: ; preds = %2 %71 = getelementptr inbounds nuw i8, ptr %1, i64 32 %.val86 = load ptr, ptr %71, align 8, !nonnull !4, !noundef !4 %72 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val87 = load ptr, ptr %72, align 8, !nonnull !4, !noundef !4 + %.val87 = load ptr, ptr %72, align 8, !nonnull !4, !align !5, !noundef !4 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7), !noalias !28 store ptr @anon.e942f5b93070d75cb2a7dc08a9bb38ac.22, ptr %7, align 8 %.sroa.5187.0..sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 8 @@ -514,7 +514,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit137: ; preds = %2 %92 = getelementptr inbounds nuw i8, ptr %1, i64 32 %.val82 = load ptr, ptr %92, align 8, !nonnull !4, !noundef !4 %93 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val83 = load ptr, ptr %93, align 8, !nonnull !4, !noundef !4 + %.val83 = load ptr, ptr %93, align 8, !nonnull !4, !align !5, !noundef !4 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6), !noalias !35 store ptr @anon.e942f5b93070d75cb2a7dc08a9bb38ac.28, ptr %6, align 8 %.sroa.5199.0..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -552,7 +552,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit143: ; preds = %2 %100 = getelementptr inbounds nuw i8, ptr %1, i64 32 %.val80 = load ptr, ptr %100, align 8, !nonnull !4, !noundef !4 %101 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val81 = load ptr, ptr %101, align 8, !nonnull !4, !noundef !4 + %.val81 = load ptr, ptr %101, align 8, !nonnull !4, !align !5, !noundef !4 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5), !noalias !38 store ptr @anon.e942f5b93070d75cb2a7dc08a9bb38ac.30, ptr %5, align 8 %.sroa.5205.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 8 @@ -631,6 +631,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit161: ; preds = %136 store ptr %15, ptr %14, align 8 %.sroa.460.0..sroa_idx = getelementptr inbounds nuw i8, ptr %14, i64 8 store ptr @"_ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h7e93687954fa76c5E", ptr %.sroa.460.0..sroa_idx, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %.val79, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4), !noalias !47 store ptr @anon.e942f5b93070d75cb2a7dc08a9bb38ac.33, ptr %4, align 8 %.sroa.5217.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -660,6 +661,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit167: ; preds = %140 store ptr %13, ptr %12, align 8 %.sroa.464.0..sroa_idx = getelementptr inbounds nuw i8, ptr %12, i64 8 store ptr @"_ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h7e93687954fa76c5E", ptr %.sroa.464.0..sroa_idx, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %.val77, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3), !noalias !50 store ptr @anon.e942f5b93070d75cb2a7dc08a9bb38ac.36, ptr %3, align 8 %.sroa.5229.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -728,6 +730,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit39: ; preds = %15 store ptr @"_ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h7e93687954fa76c5E", ptr %.sroa.416.0..sroa_idx, align 8 %22 = icmp ne ptr %.32.val, null call void @llvm.assume(i1 %22) + call void @llvm.assume(i1 true) [ "align"(ptr %.40.val, i64 8) ] %23 = icmp ne ptr %.40.val, null call void @llvm.assume(i1 %23) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7), !noalias !56 @@ -759,6 +762,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit45: ; preds = %16 store ptr @"_ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h7e93687954fa76c5E", ptr %.sroa.412.0..sroa_idx, align 8 %25 = icmp ne ptr %.32.val, null call void @llvm.assume(i1 %25) + call void @llvm.assume(i1 true) [ "align"(ptr %.40.val, i64 8) ] %26 = icmp ne ptr %.40.val, null call void @llvm.assume(i1 %26) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6), !noalias !59 @@ -792,6 +796,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit51: ; preds = %16 store ptr @"_ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h7e93687954fa76c5E", ptr %.sroa.420.0..sroa_idx, align 8 %29 = icmp ne ptr %.32.val, null call void @llvm.assume(i1 %29) + call void @llvm.assume(i1 true) [ "align"(ptr %.40.val, i64 8) ] %30 = icmp ne ptr %.40.val, null call void @llvm.assume(i1 %30) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5), !noalias !62 diff --git a/bench/serde-rs-json/optimized/1z3u82elh7pk3w5r.ll b/bench/serde-rs-json/optimized/1z3u82elh7pk3w5r.ll index 8f8e603195b..ac975d728c2 100644 --- a/bench/serde-rs-json/optimized/1z3u82elh7pk3w5r.ll +++ b/bench/serde-rs-json/optimized/1z3u82elh7pk3w5r.ll @@ -779,7 +779,7 @@ _ZN10serde_json3ser18format_escaped_str17hc54fac0069c29f8cE.exit.thread.i.i.i: ; 195: ; preds = %192 %196 = load ptr, ptr %15, align 8, !noalias !115, !nonnull !5, !align !113, !noundef !5 - %.val15.i.i = load ptr, ptr %196, align 8, !noalias !71, !nonnull !5, !noundef !5 + %.val15.i.i = load ptr, ptr %196, align 8, !noalias !71, !nonnull !5, !align !113, !noundef !5 %197 = call noundef ptr @_ZN3std2io5Write9write_all17h6ffa51b6097a75eaE(ptr noalias noundef nonnull align 8 dereferenceable(8) %.val15.i.i, ptr noalias noundef nonnull readonly align 1 @anon.7b12c2ab9e1ce74a96d00cd7e4c1ea31.18, i64 noundef 1), !noalias !71 %198 = icmp eq ptr %197, null br i1 %198, label %"_ZN83_$LT$serde_json..ser..Compound$LT$W$C$F$GT$$u20$as$u20$serde..ser..SerializeMap$GT$3end17h03981213a55c5436E.exit.i.i", label %199 @@ -795,6 +795,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) @@ -1240,8 +1242,10 @@ _ZN10serde_json3ser18format_escaped_str17hda01937d878482f2E.exit.thread.i.i.i: ; br i1 %386, label %387, label %"_ZN79_$LT$serde_json..ser..PrettyFormatter$u20$as$u20$serde_json..ser..Formatter$GT$10end_object17h1fe3b75ebc7f4fa2E.exit.i18.i.i" 387: ; preds = %379 + call void @llvm.assume(i1 true) [ "align"(ptr %.val.i17.i.i, i64 8) ] %388 = icmp ne ptr %.val.i17.i.i, null call void @llvm.assume(i1 %388) + call void @llvm.assume(i1 true) [ "align"(ptr %.val.i17.i.i, i64 8) ] %389 = call noundef ptr @_ZN3std2io5Write9write_all17h6ffa51b6097a75eaE(ptr noalias noundef nonnull align 8 dereferenceable(8) %.val.i17.i.i, ptr noalias noundef nonnull readonly align 1 @anon.7b12c2ab9e1ce74a96d00cd7e4c1ea31.19, i64 noundef 1), !noalias !217 %390 = icmp eq ptr %389, null br i1 %390, label %391, label %"_ZN79_$LT$serde_json..ser..PrettyFormatter$u20$as$u20$serde_json..ser..Formatter$GT$10end_object17h1fe3b75ebc7f4fa2E.exit.thread.i.i.i" @@ -1264,8 +1268,10 @@ _ZN10serde_json3ser18format_escaped_str17hda01937d878482f2E.exit.thread.i.i.i: ; br i1 %399, label %395, label %"_ZN79_$LT$serde_json..ser..PrettyFormatter$u20$as$u20$serde_json..ser..Formatter$GT$10end_object17h1fe3b75ebc7f4fa2E.exit.thread.i.i.i" "_ZN79_$LT$serde_json..ser..PrettyFormatter$u20$as$u20$serde_json..ser..Formatter$GT$10end_object17h1fe3b75ebc7f4fa2E.exit.i18.i.i": ; preds = %395, %379 + call void @llvm.assume(i1 true) [ "align"(ptr %.val.i17.i.i, i64 8) ] %400 = icmp ne ptr %.val.i17.i.i, null call void @llvm.assume(i1 %400) + call void @llvm.assume(i1 true) [ "align"(ptr %.val.i17.i.i, i64 8) ] %401 = call noundef ptr @_ZN3std2io5Write9write_all17h6ffa51b6097a75eaE(ptr noalias noundef nonnull align 8 dereferenceable(8) %.val.i17.i.i, ptr noalias noundef nonnull readonly align 1 @anon.7b12c2ab9e1ce74a96d00cd7e4c1ea31.18, i64 noundef 1), !noalias !217 %402 = icmp eq ptr %401, null br i1 %402, label %"_ZN83_$LT$serde_json..ser..Compound$LT$W$C$F$GT$$u20$as$u20$serde..ser..SerializeMap$GT$3end17h03e2085cde463d2dE.exit.i.i", label %"_ZN79_$LT$serde_json..ser..PrettyFormatter$u20$as$u20$serde_json..ser..Formatter$GT$10end_object17h1fe3b75ebc7f4fa2E.exit.thread.i.i.i" @@ -1284,6 +1290,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 diff --git a/bench/serde-rs-json/optimized/2g78x8xblier5b5n.ll b/bench/serde-rs-json/optimized/2g78x8xblier5b5n.ll index 7204ae4bef8..466aae7e678 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 } @@ -877,6 +879,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 } @@ -1267,7 +1270,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/avcnj5n6q0l8tf3.ll b/bench/serde-rs-json/optimized/avcnj5n6q0l8tf3.ll index fcc546bae39..6ede9be39c7 100644 --- a/bench/serde-rs-json/optimized/avcnj5n6q0l8tf3.ll +++ b/bench/serde-rs-json/optimized/avcnj5n6q0l8tf3.ll @@ -90,7 +90,7 @@ define hidden noundef align 8 ptr @_ZN5serde3ser10Serializer11collect_seq17h90ea "_ZN5serde3ser10Serializer11collect_seq28_$u7b$$u7b$closure$u7d$$u7d$17h8d9c29048a2b1953E.exit.preheader": ; preds = %8, %10 %.ph47 = xor i1 %9, true - %.val.i.i = load ptr, ptr %0, align 8, !nonnull !4 + %.val.i.i = load ptr, ptr %0, align 8, !nonnull !4, !align !5 br label %"_ZN5serde3ser10Serializer11collect_seq28_$u7b$$u7b$closure$u7d$$u7d$17h8d9c29048a2b1953E.exit" "_ZN5serde3ser10Serializer11collect_seq28_$u7b$$u7b$closure$u7d$$u7d$17h8d9c29048a2b1953E.exit": ; preds = %"_ZN5serde3ser10Serializer11collect_seq28_$u7b$$u7b$closure$u7d$$u7d$17h8d9c29048a2b1953E.exit.preheader", %_ZN10serde_json3ser9Formatter17begin_array_value17h9f83a6765b4a56eeE.exit.i.thread @@ -102,6 +102,7 @@ define hidden noundef align 8 ptr @_ZN5serde3ser10Serializer11collect_seq17h90ea 16: ; preds = %"_ZN5serde3ser10Serializer11collect_seq28_$u7b$$u7b$closure$u7d$$u7d$17h8d9c29048a2b1953E.exit" %17 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 32 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.0, i64 8) ] br i1 %13, label %_ZN10serde_json3ser9Formatter17begin_array_value17h9f83a6765b4a56eeE.exit.i.thread, label %_ZN10serde_json3ser9Formatter17begin_array_value17h9f83a6765b4a56eeE.exit.i _ZN10serde_json3ser9Formatter17begin_array_value17h9f83a6765b4a56eeE.exit.i: ; preds = %16 @@ -118,7 +119,7 @@ _ZN10serde_json3ser9Formatter17begin_array_value17h9f83a6765b4a56eeE.exit.i.thre br i1 %14, label %"_ZN83_$LT$serde_json..ser..Compound$LT$W$C$F$GT$$u20$as$u20$serde..ser..SerializeSeq$GT$3end17he785904be89a5c65E.exit", label %23 23: ; preds = %22 - %.val7 = load ptr, ptr %0, align 8, !nonnull !4, !noundef !4 + %.val7 = load ptr, ptr %0, align 8, !nonnull !4, !align !5, !noundef !4 %24 = tail call noundef ptr @_ZN3std2io5Write9write_all17h6ffa51b6097a75eaE(ptr noalias noundef nonnull align 8 dereferenceable(8) %.val7, ptr noalias noundef nonnull readonly align 1 @anon.7383d113eafbf7870c8f4bb85f4fa11e.23, i64 noundef 1), !noalias !34 %25 = icmp eq ptr %24, null br i1 %25, label %"_ZN83_$LT$serde_json..ser..Compound$LT$W$C$F$GT$$u20$as$u20$serde..ser..SerializeSeq$GT$3end17he785904be89a5c65E.exit", label %"_ZN83_$LT$serde_json..ser..Compound$LT$W$C$F$GT$$u20$as$u20$serde..ser..SerializeSeq$GT$3end17he785904be89a5c65E.exit.sink.split" @@ -173,7 +174,8 @@ define hidden noundef align 8 ptr @_ZN5serde3ser10Serializer11collect_seq17ha474 %.sroa.0.050 = phi ptr [ %.val, %.lr.ph ], [ %18, %"_ZN5serde3ser10Serializer11collect_seq28_$u7b$$u7b$closure$u7d$$u7d$17h38ae4195f4643c69E.exit" ] %.sroa.8.049 = phi i1 [ true, %.lr.ph ], [ false, %"_ZN5serde3ser10Serializer11collect_seq28_$u7b$$u7b$closure$u7d$$u7d$17h38ae4195f4643c69E.exit" ] %18 = getelementptr inbounds nuw i8, ptr %.sroa.0.050, i64 32 - %.val.i.i = load ptr, ptr %0, align 8, !noalias !61, !nonnull !4, !noundef !4 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.050, i64 8) ] + %.val.i.i = load ptr, ptr %0, align 8, !noalias !61, !nonnull !4, !align !5, !noundef !4 tail call void @llvm.experimental.noalias.scope.decl(metadata !69), !noalias !72 br i1 %.sroa.8.049, label %.split.i.i, label %.split4.i.i @@ -219,7 +221,7 @@ define hidden noundef align 8 ptr @_ZN5serde3ser10Serializer11collect_seq17ha474 36: ; preds = %"_ZN5serde3ser10Serializer11collect_seq28_$u7b$$u7b$closure$u7d$$u7d$17h38ae4195f4643c69E.exit" tail call void @llvm.experimental.noalias.scope.decl(metadata !92) - %.val.i7 = load ptr, ptr %0, align 8, !alias.scope !92, !nonnull !4, !noundef !4 + %.val.i7 = load ptr, ptr %0, align 8, !alias.scope !92, !nonnull !4, !align !5, !noundef !4 tail call void @llvm.experimental.noalias.scope.decl(metadata !95) %37 = load i64, ptr %6, align 8, !alias.scope !98, !noundef !4 %38 = add i64 %37, -1 @@ -1017,6 +1019,7 @@ define hidden noundef ptr @_ZN10serde_json3ser27format_escaped_str_contents17h0e store i8 48, ptr %9, align 1 store i8 %66, ptr %10, align 1 store i8 %68, ptr %11, align 1 + call void @llvm.assume(i1 true) [ "align"(ptr %.val, i64 8) ] call void @llvm.assume(i1 %12) %69 = call noundef ptr @_ZN3std2io5Write9write_all17h6ffa51b6097a75eaE(ptr noalias noundef nonnull align 8 dereferenceable(8) %.val, ptr noalias noundef nonnull readonly align 1 %5, i64 noundef 6), !noalias !487 call void @llvm.lifetime.end.p0(i64 6, ptr nonnull %5) @@ -1197,6 +1200,7 @@ define hidden noundef ptr @_ZN10serde_json3ser27format_escaped_str_contents17h86 store i8 48, ptr %9, align 1 store i8 %66, ptr %10, align 1 store i8 %68, ptr %11, align 1 + call void @llvm.assume(i1 true) [ "align"(ptr %.val, i64 8) ] call void @llvm.assume(i1 %12) %69 = call noundef ptr @_ZN3std2io5Write9write_all17h6ffa51b6097a75eaE(ptr noalias noundef nonnull align 8 dereferenceable(8) %.val, ptr noalias noundef nonnull readonly align 1 %5, i64 noundef 6), !noalias !512 call void @llvm.lifetime.end.p0(i64 6, ptr nonnull %5) @@ -1279,7 +1283,7 @@ default.unreachable48: ; preds = %23, %2 %15 = getelementptr inbounds nuw i8, ptr %0, i64 1 %16 = load i8, ptr %15, align 1, !range !533, !noundef !4 %17 = trunc nuw i8 %16 to i1 - %.val13 = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.val13 = load ptr, ptr %1, align 8, !nonnull !4, !align !5, !noundef !4 br i1 %17, label %.split.i.i, label %.split2.i.i .split2.i.i: ; preds = %14 @@ -1390,6 +1394,7 @@ _ZN10serde_json3ser9Formatter9write_u6417hc93ca8d034f51936E.exit.i.i: ; preds = %.2.i.i.i.i = phi i64 [ %64, %63 ], [ %59, %57 ] %68 = sub i64 20, %.2.i.i.i.i %69 = getelementptr inbounds i8, ptr %5, i64 %.2.i.i.i.i + call void @llvm.assume(i1 true) [ "align"(ptr %.val14, i64 8) ] %70 = icmp ne ptr %.val14, null tail call void @llvm.assume(i1 %70) %71 = call noundef ptr @_ZN3std2io5Write9write_all17h6ffa51b6097a75eaE(ptr noalias noundef nonnull align 8 dereferenceable(8) %.val14, ptr noalias noundef nonnull readonly align 1 %69, i64 noundef %68), !noalias !548 @@ -1492,6 +1497,7 @@ _ZN10serde_json3ser9Formatter9write_i6417h0c3664d217a454d2E.exit.i.i: ; preds = %.3.i.i.i.i = phi i64 [ %.2.i.i.i6.i, %117 ], [ %119, %118 ] %121 = sub i64 20, %.3.i.i.i.i %122 = getelementptr inbounds i8, ptr %4, i64 %.3.i.i.i.i + call void @llvm.assume(i1 true) [ "align"(ptr %.val14, i64 8) ] %123 = icmp ne ptr %.val14, null tail call void @llvm.assume(i1 %123) %124 = call noundef ptr @_ZN3std2io5Write9write_all17h6ffa51b6097a75eaE(ptr noalias noundef nonnull align 8 dereferenceable(8) %.val14, ptr noalias noundef nonnull readonly align 1 %122, i64 noundef %121), !noalias !555 @@ -1512,6 +1518,7 @@ _ZN10serde_json3ser9Formatter9write_i6417h0c3664d217a454d2E.exit.i.i: ; preds = 131: ; preds = %128 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3), !noalias !540 %132 = call noundef i64 @_ZN3ryu6pretty8format6417ha857aef885057fcfE(double noundef %129, ptr noundef nonnull %3), !noalias !540 + call void @llvm.assume(i1 true) [ "align"(ptr %.val14, i64 8) ] %133 = icmp ne ptr %.val14, null call void @llvm.assume(i1 %133) %134 = call noundef ptr @_ZN3std2io5Write9write_all17h6ffa51b6097a75eaE(ptr noalias noundef nonnull align 8 dereferenceable(8) %.val14, ptr noalias noundef nonnull readonly align 1 %3, i64 noundef %132), !noalias !558 @@ -1524,8 +1531,10 @@ _ZN10serde_json3ser9Formatter9write_i6417h0c3664d217a454d2E.exit.i.i: ; preds = br label %"_ZN95_$LT$$RF$mut$u20$serde_json..ser..Serializer$LT$W$C$F$GT$$u20$as$u20$serde..ser..Serializer$GT$14serialize_unit17h3ee872745e9410e0E.exit" select.unfold.i.i: ; preds = %128 + call void @llvm.assume(i1 true) [ "align"(ptr %.val14, i64 8) ] %138 = icmp ne ptr %.val14, null tail call void @llvm.assume(i1 %138) + call void @llvm.assume(i1 true) [ "align"(ptr %.val14, i64 8) ] %139 = tail call noundef ptr @_ZN3std2io5Write9write_all17h6ffa51b6097a75eaE(ptr noalias noundef nonnull align 8 dereferenceable(8) %.val14, ptr noalias noundef nonnull readonly align 1 @anon.7383d113eafbf7870c8f4bb85f4fa11e.8, i64 noundef 4), !noalias !561 %140 = icmp eq ptr %139, null br i1 %140, label %"_ZN95_$LT$$RF$mut$u20$serde_json..ser..Serializer$LT$W$C$F$GT$$u20$as$u20$serde..ser..Serializer$GT$14serialize_unit17h3ee872745e9410e0E.exit", label %141 @@ -1598,6 +1607,7 @@ _ZN10serde_json3ser18format_escaped_str17hda01937d878482f2E.exit.thread.i: ; pre "_ZN95_$LT$$RF$mut$u20$serde_json..ser..Serializer$LT$W$C$F$GT$$u20$as$u20$serde..ser..Serializer$GT$14serialize_unit17h3ee872745e9410e0E.exit": ; preds = %_ZN10serde_json3ser18format_escaped_str17hda01937d878482f2E.exit.thread.i, %_ZN10serde_json3ser18format_escaped_str17hda01937d878482f2E.exit.i, %141, %select.unfold.i.i, %136, %131, %126, %_ZN10serde_json3ser9Formatter9write_i6417h0c3664d217a454d2E.exit.i.i, %73, %_ZN10serde_json3ser9Formatter9write_u6417hc93ca8d034f51936E.exit.i.i, %21, %_ZN10serde_json3ser9Formatter10write_bool17h3cf53aafdd323af7E.exit.i, %12, %9, %226, %"_ZN83_$LT$serde_json..ser..Compound$LT$W$C$F$GT$$u20$as$u20$serde..ser..SerializeMap$GT$3end17h03e2085cde463d2dE.exit", %157 %.0 = phi ptr [ %.1, %226 ], [ %.0.i20, %"_ZN83_$LT$serde_json..ser..Compound$LT$W$C$F$GT$$u20$as$u20$serde..ser..SerializeMap$GT$3end17h03e2085cde463d2dE.exit" ], [ %159, %157 ], [ %13, %12 ], [ null, %9 ], [ %22, %21 ], [ null, %_ZN10serde_json3ser9Formatter10write_bool17h3cf53aafdd323af7E.exit.i ], [ %74, %73 ], [ null, %_ZN10serde_json3ser9Formatter9write_u6417hc93ca8d034f51936E.exit.i.i ], [ %127, %126 ], [ null, %_ZN10serde_json3ser9Formatter9write_i6417h0c3664d217a454d2E.exit.i.i ], [ %137, %136 ], [ null, %131 ], [ %142, %141 ], [ null, %select.unfold.i.i ], [ %156, %_ZN10serde_json3ser18format_escaped_str17hda01937d878482f2E.exit.thread.i ], [ null, %_ZN10serde_json3ser18format_escaped_str17hda01937d878482f2E.exit.i ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 "_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$4iter17h155e9fd32c552b4bE.exit": ; preds = %169, %"_ZN79_$LT$serde_json..ser..PrettyFormatter$u20$as$u20$serde_json..ser..Formatter$GT$10end_object17h1fe3b75ebc7f4fa2E.exit.i" @@ -1667,6 +1677,7 @@ _ZN10serde_json3ser18format_escaped_str17hda01937d878482f2E.exit.thread.i: ; pre br i1 %192, label %193, label %"_ZN79_$LT$serde_json..ser..PrettyFormatter$u20$as$u20$serde_json..ser..Formatter$GT$10end_object17h1fe3b75ebc7f4fa2E.exit.i18" 193: ; preds = %185 + call void @llvm.assume(i1 true) [ "align"(ptr %.val.i17, i64 8) ] %194 = icmp ne ptr %.val.i17, null call void @llvm.assume(i1 %194) %195 = call noundef ptr @_ZN3std2io5Write9write_all17h6ffa51b6097a75eaE(ptr noalias noundef nonnull align 8 dereferenceable(8) %.val.i17, ptr noalias noundef nonnull readonly align 1 @anon.7383d113eafbf7870c8f4bb85f4fa11e.28.llvm.18206402751905676474, i64 noundef 1), !noalias !625 @@ -1691,6 +1702,7 @@ _ZN10serde_json3ser18format_escaped_str17hda01937d878482f2E.exit.thread.i: ; pre br i1 %205, label %201, label %"_ZN79_$LT$serde_json..ser..PrettyFormatter$u20$as$u20$serde_json..ser..Formatter$GT$10end_object17h1fe3b75ebc7f4fa2E.exit.thread.i" "_ZN79_$LT$serde_json..ser..PrettyFormatter$u20$as$u20$serde_json..ser..Formatter$GT$10end_object17h1fe3b75ebc7f4fa2E.exit.i18": ; preds = %201, %185 + call void @llvm.assume(i1 true) [ "align"(ptr %.val.i17, i64 8) ] %206 = icmp ne ptr %.val.i17, null call void @llvm.assume(i1 %206) %207 = call noundef ptr @_ZN3std2io5Write9write_all17h6ffa51b6097a75eaE(ptr noalias noundef nonnull align 8 dereferenceable(8) %.val.i17, ptr noalias noundef nonnull readonly align 1 @anon.7383d113eafbf7870c8f4bb85f4fa11e.26, i64 noundef 1), !noalias !633 @@ -1711,6 +1723,8 @@ _ZN10serde_json3ser18format_escaped_str17hda01937d878482f2E.exit.thread.i: ; pre %.fca.0.extract41 = phi ptr [ %.fca.0.extract, %_ZN5serde3ser12SerializeMap15serialize_entry17h410e038fe18d3eacE.exit ], [ %.fca.0.extract40, %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$4iter17h155e9fd32c552b4bE.exit" ] %210 = phi { ptr, ptr } [ %224, %_ZN5serde3ser12SerializeMap15serialize_entry17h410e038fe18d3eacE.exit ], [ %178, %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$4iter17h155e9fd32c552b4bE.exit" ] %.fca.1.extract = extractvalue { ptr, ptr } %210, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.0.extract41, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.1.extract, i64 8) ] %211 = icmp ne ptr %.fca.1.extract, null call void @llvm.assume(i1 %211) %212 = 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) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.fca.0.extract41), !noalias !636 @@ -1788,7 +1802,7 @@ default.unreachable65: ; preds = %22, %2 %14 = getelementptr inbounds nuw i8, ptr %0, i64 1 %15 = load i8, ptr %14, align 1, !range !533, !noundef !4 %16 = trunc nuw i8 %15 to i1 - %.val13 = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.val13 = load ptr, ptr %1, align 8, !nonnull !4, !align !5, !noundef !4 br i1 %16, label %.split.i.i, label %.split2.i.i .split2.i.i: ; preds = %13 @@ -1899,6 +1913,7 @@ _ZN10serde_json3ser9Formatter9write_u6417h834517c92d4fb842E.exit.i.i: ; preds = %.2.i.i.i.i = phi i64 [ %63, %62 ], [ %58, %56 ] %67 = sub i64 20, %.2.i.i.i.i %68 = getelementptr inbounds i8, ptr %5, i64 %.2.i.i.i.i + call void @llvm.assume(i1 true) [ "align"(ptr %.val14, i64 8) ] %69 = icmp ne ptr %.val14, null tail call void @llvm.assume(i1 %69) %70 = call noundef ptr @_ZN3std2io5Write9write_all17h6ffa51b6097a75eaE(ptr noalias noundef nonnull align 8 dereferenceable(8) %.val14, ptr noalias noundef nonnull readonly align 1 %68, i64 noundef %67), !noalias !682 @@ -2001,6 +2016,7 @@ _ZN10serde_json3ser9Formatter9write_i6417h9b366e3739ad435dE.exit.i.i: ; preds = %.3.i.i.i.i = phi i64 [ %.2.i.i.i6.i, %116 ], [ %118, %117 ] %120 = sub i64 20, %.3.i.i.i.i %121 = getelementptr inbounds i8, ptr %4, i64 %.3.i.i.i.i + call void @llvm.assume(i1 true) [ "align"(ptr %.val14, i64 8) ] %122 = icmp ne ptr %.val14, null tail call void @llvm.assume(i1 %122) %123 = call noundef ptr @_ZN3std2io5Write9write_all17h6ffa51b6097a75eaE(ptr noalias noundef nonnull align 8 dereferenceable(8) %.val14, ptr noalias noundef nonnull readonly align 1 %121, i64 noundef %120), !noalias !689 @@ -2021,6 +2037,7 @@ _ZN10serde_json3ser9Formatter9write_i6417h9b366e3739ad435dE.exit.i.i: ; preds = 130: ; preds = %127 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3), !noalias !675 %131 = call noundef i64 @_ZN3ryu6pretty8format6417ha857aef885057fcfE(double noundef %128, ptr noundef nonnull %3), !noalias !675 + call void @llvm.assume(i1 true) [ "align"(ptr %.val14, i64 8) ] %132 = icmp ne ptr %.val14, null call void @llvm.assume(i1 %132) %133 = call noundef ptr @_ZN3std2io5Write9write_all17h6ffa51b6097a75eaE(ptr noalias noundef nonnull align 8 dereferenceable(8) %.val14, ptr noalias noundef nonnull readonly align 1 %3, i64 noundef %131), !noalias !692 @@ -2033,8 +2050,10 @@ _ZN10serde_json3ser9Formatter9write_i6417h9b366e3739ad435dE.exit.i.i: ; preds = br label %"_ZN95_$LT$$RF$mut$u20$serde_json..ser..Serializer$LT$W$C$F$GT$$u20$as$u20$serde..ser..Serializer$GT$14serialize_unit17h8c0cc274870a1333E.exit" select.unfold.i.i: ; preds = %127 + call void @llvm.assume(i1 true) [ "align"(ptr %.val14, i64 8) ] %137 = icmp ne ptr %.val14, null tail call void @llvm.assume(i1 %137) + call void @llvm.assume(i1 true) [ "align"(ptr %.val14, i64 8) ] %138 = tail call noundef ptr @_ZN3std2io5Write9write_all17h6ffa51b6097a75eaE(ptr noalias noundef nonnull align 8 dereferenceable(8) %.val14, ptr noalias noundef nonnull readonly align 1 @anon.7383d113eafbf7870c8f4bb85f4fa11e.8, i64 noundef 4), !noalias !695 %139 = icmp eq ptr %138, null br i1 %139, label %"_ZN95_$LT$$RF$mut$u20$serde_json..ser..Serializer$LT$W$C$F$GT$$u20$as$u20$serde..ser..Serializer$GT$14serialize_unit17h8c0cc274870a1333E.exit", label %140 @@ -2097,6 +2116,7 @@ _ZN10serde_json3ser18format_escaped_str17hc54fac0069c29f8cE.exit.thread.i: ; pre "_ZN95_$LT$$RF$mut$u20$serde_json..ser..Serializer$LT$W$C$F$GT$$u20$as$u20$serde..ser..Serializer$GT$14serialize_unit17h8c0cc274870a1333E.exit": ; preds = %176, %.loopexit, %185, %182, %180, %_ZN10serde_json3ser18format_escaped_str17hc54fac0069c29f8cE.exit.thread.i, %_ZN10serde_json3ser18format_escaped_str17hc54fac0069c29f8cE.exit.i, %140, %select.unfold.i.i, %135, %130, %125, %_ZN10serde_json3ser9Formatter9write_i6417h9b366e3739ad435dE.exit.i.i, %72, %_ZN10serde_json3ser9Formatter9write_u6417h834517c92d4fb842E.exit.i.i, %20, %_ZN10serde_json3ser9Formatter10write_bool17h7ec1e3dc0b6bf878E.exit.i, %11, %8, %156 %.0 = phi ptr [ %158, %156 ], [ %12, %11 ], [ null, %8 ], [ %21, %20 ], [ null, %_ZN10serde_json3ser9Formatter10write_bool17h7ec1e3dc0b6bf878E.exit.i ], [ %73, %72 ], [ null, %_ZN10serde_json3ser9Formatter9write_u6417h834517c92d4fb842E.exit.i.i ], [ %126, %125 ], [ null, %_ZN10serde_json3ser9Formatter9write_i6417h9b366e3739ad435dE.exit.i.i ], [ %136, %135 ], [ null, %130 ], [ %141, %140 ], [ null, %select.unfold.i.i ], [ %155, %_ZN10serde_json3ser18format_escaped_str17hc54fac0069c29f8cE.exit.thread.i ], [ null, %_ZN10serde_json3ser18format_escaped_str17hc54fac0069c29f8cE.exit.i ], [ null, %180 ], [ %186, %185 ], [ null, %182 ], [ %177, %176 ], [ %.0.i19.ph, %.loopexit ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 "_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$4iter17h155e9fd32c552b4bE.exit": ; preds = %164, %166 @@ -2150,7 +2170,7 @@ _ZN5serde3ser12SerializeMap15serialize_entry17h5980ccf8922e7ac7E.exit: ; preds = br i1 %181, label %"_ZN95_$LT$$RF$mut$u20$serde_json..ser..Serializer$LT$W$C$F$GT$$u20$as$u20$serde..ser..Serializer$GT$14serialize_unit17h8c0cc274870a1333E.exit", label %182 182: ; preds = %180 - %.val15 = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.val15 = load ptr, ptr %1, align 8, !nonnull !4, !align !5, !noundef !4 %183 = call noundef ptr @_ZN3std2io5Write9write_all17h6ffa51b6097a75eaE(ptr noalias noundef nonnull align 8 dereferenceable(8) %.val15, ptr noalias noundef nonnull readonly align 1 @anon.7383d113eafbf7870c8f4bb85f4fa11e.26, i64 noundef 1), !noalias !743 %184 = icmp eq ptr %183, null br i1 %184, label %"_ZN95_$LT$$RF$mut$u20$serde_json..ser..Serializer$LT$W$C$F$GT$$u20$as$u20$serde..ser..Serializer$GT$14serialize_unit17h8c0cc274870a1333E.exit", label %185 @@ -2161,6 +2181,8 @@ _ZN5serde3ser12SerializeMap15serialize_entry17h5980ccf8922e7ac7E.exit: ; preds = 187: ; preds = %_ZN5serde3ser12SerializeMap15serialize_entry17h5980ccf8922e7ac7E.exit %.fca.1.extract = extractvalue { ptr, ptr } %178, 1 + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.0.extract, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %.fca.1.extract, i64 8) ] %188 = icmp ne ptr %.fca.1.extract, null call void @llvm.assume(i1 %188) call void @llvm.experimental.noalias.scope.decl(metadata !746) diff --git a/bench/serde-rs-json/optimized/fa1ay6huy2tg8jn.ll b/bench/serde-rs-json/optimized/fa1ay6huy2tg8jn.ll index 6ebdf1a05ff..aca9844bf72 100644 --- a/bench/serde-rs-json/optimized/fa1ay6huy2tg8jn.ll +++ b/bench/serde-rs-json/optimized/fa1ay6huy2tg8jn.ll @@ -27,12 +27,12 @@ define hidden { ptr, ptr } @"_ZN146_$LT$alloc..boxed..Box$LT$dyn$u20$core..error call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) store ptr %0, ptr %2, align 8, !noalias !4 %3 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %4 = tail call noundef align 8 dereferenceable_or_null(8) ptr @__rust_alloc(i64 noundef 8, i64 noundef 8) #22 + %4 = tail call noundef align 8 dereferenceable_or_null(8) ptr @__rust_alloc(i64 noundef 8, i64 noundef 8) #23 %5 = icmp eq ptr %4, null br i1 %5, label %6, label %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h2f152549bf69403eE.llvm.17788874430417167.exit" 6: ; preds = %1 - invoke void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef 8, i64 noundef 8) #23 + invoke void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef 8, i64 noundef 8) #24 to label %.noexc unwind label %7 .noexc: ; preds = %6 @@ -47,7 +47,7 @@ define hidden { ptr, ptr } @"_ZN146_$LT$alloc..boxed..Box$LT$dyn$u20$core..error 9: ; preds = %7 %10 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #24 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #25 unreachable "_ZN4core3ptr45drop_in_place$LT$serde_json..error..Error$GT$17h61cd1dc1bbce44feE.exit": ; preds = %7 @@ -150,7 +150,7 @@ define hidden void @_ZN4core3fmt9Arguments6new_v117h14574ab706dc1eb0E.llvm.17788 store ptr @anon.f288aba1288e7a615443dffa1f18fa93.6.llvm.17788874430417167, ptr %18, align 8 %19 = getelementptr inbounds nuw i8, ptr %6, i64 24 store i64 0, ptr %19, align 8 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.f288aba1288e7a615443dffa1f18fa93.8.llvm.17788874430417167) #23 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.f288aba1288e7a615443dffa1f18fa93.8.llvm.17788874430417167) #24 unreachable } @@ -375,7 +375,7 @@ define hidden noundef nonnull ptr @_ZN5alloc5alloc15exchange_malloc17hbe31f20482 8: ; preds = %2 %9 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %10 = tail call noundef ptr @__rust_alloc(i64 noundef %0, i64 noundef %1) #22 + %10 = tail call noundef ptr @__rust_alloc(i64 noundef %0, i64 noundef %1) #23 br label %_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.17788874430417167.exit _ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.17788874430417167.exit: ; preds = %6, %8 @@ -387,7 +387,7 @@ _ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.17788874430417167.ex ret ptr %.sroa.05.0.i 13: ; preds = %_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.17788874430417167.exit - tail call void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef %1, i64 noundef %0) #23 + tail call void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef %1, i64 noundef %0) #24 unreachable } @@ -417,14 +417,14 @@ define hidden { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e50 %16 = add i64 %1, -1 %17 = icmp sgt i64 %16, -1 tail call void @llvm.assume(i1 %17) - %18 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #22 + %18 = tail call noundef ptr @__rust_alloc(i64 noundef %2, i64 noundef %1) #23 br label %11 19: ; preds = %10 %20 = add i64 %1, -1 %21 = icmp sgt i64 %20, -1 tail call void @llvm.assume(i1 %21) - %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #22 + %22 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %2, i64 noundef %1) #23 br label %11 } @@ -433,12 +433,12 @@ define hidden noalias noundef nonnull align 8 ptr @"_ZN5alloc5boxed12Box$LT$T$GT %2 = alloca ptr, align 8 store ptr %0, ptr %2, align 8 %3 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %4 = tail call noundef align 8 dereferenceable_or_null(8) ptr @__rust_alloc(i64 noundef 8, i64 noundef 8) #22 + %4 = tail call noundef align 8 dereferenceable_or_null(8) ptr @__rust_alloc(i64 noundef 8, i64 noundef 8) #23 %5 = icmp eq ptr %4, null br i1 %5, label %6, label %_ZN5alloc5alloc15exchange_malloc17hbe31f2048284b3faE.llvm.17788874430417167.exit 6: ; preds = %1 - invoke void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef 8, i64 noundef 8) #23 + invoke void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef 8, i64 noundef 8) #24 to label %.noexc unwind label %7 .noexc: ; preds = %6 @@ -457,7 +457,7 @@ _ZN5alloc5alloc15exchange_malloc17hbe31f2048284b3faE.llvm.17788874430417167.exit 9: ; preds = %7 %10 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #24 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #25 unreachable "_ZN4core3ptr45drop_in_place$LT$serde_json..error..Error$GT$17h61cd1dc1bbce44feE.exit": ; preds = %7 @@ -467,7 +467,7 @@ _ZN5alloc5alloc15exchange_malloc17hbe31f2048284b3faE.llvm.17788874430417167.exit ; Function Attrs: nonlazybind uwtable define hidden noalias noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h0f3b44385c1c11beE"() unnamed_addr #0 personality ptr @rust_eh_personality { %1 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %2 = tail call noalias noundef align 8 dereferenceable_or_null(728) ptr @__rust_alloc(i64 noundef 728, i64 noundef 8) #22 + %2 = tail call noalias noundef align 8 dereferenceable_or_null(728) ptr @__rust_alloc(i64 noundef 728, i64 noundef 8) #23 %3 = icmp eq ptr %2, null br i1 %3, label %5, label %4 @@ -475,14 +475,14 @@ define hidden noalias noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$ ret ptr %2 5: ; preds = %0 - tail call void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef 8, i64 noundef 728) #23 + tail call void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef 8, i64 noundef 728) #24 unreachable } ; Function Attrs: nonlazybind uwtable define hidden noalias noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17hcaf632eb610d0941E"() unnamed_addr #0 personality ptr @rust_eh_personality { %1 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %2 = tail call noalias noundef align 8 dereferenceable_or_null(632) ptr @__rust_alloc(i64 noundef 632, i64 noundef 8) #22 + %2 = tail call noalias noundef align 8 dereferenceable_or_null(632) ptr @__rust_alloc(i64 noundef 632, i64 noundef 8) #23 %3 = icmp eq ptr %2, null br i1 %3, label %5, label %4 @@ -490,21 +490,21 @@ define hidden noalias noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$ ret ptr %2 5: ; preds = %0 - tail call void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef 8, i64 noundef 632) #23 + tail call void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef 8, i64 noundef 632) #24 unreachable } ; Function Attrs: nounwind nonlazybind uwtable define hidden noalias noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h19789e535a4b2736E.llvm.17788874430417167"() unnamed_addr #7 personality ptr @rust_eh_personality { %1 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %2 = tail call noundef align 8 dereferenceable_or_null(728) ptr @__rust_alloc(i64 noundef 728, i64 noundef 8) #22 + %2 = tail call noundef align 8 dereferenceable_or_null(728) ptr @__rust_alloc(i64 noundef 728, i64 noundef 8) #23 ret ptr %2 } ; Function Attrs: nounwind nonlazybind uwtable define hidden noalias noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h4e7908bb40930746E.llvm.17788874430417167"() unnamed_addr #7 personality ptr @rust_eh_personality { %1 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %2 = tail call noundef align 8 dereferenceable_or_null(632) ptr @__rust_alloc(i64 noundef 632, i64 noundef 8) #22 + %2 = tail call noundef align 8 dereferenceable_or_null(632) ptr @__rust_alloc(i64 noundef 632, i64 noundef 8) #23 ret ptr %2 } @@ -521,8 +521,8 @@ define hidden void @"_ZN63_$LT$I$u20$as$u20$core..iter..traits..collect..IntoIte ret void } -; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable -define hidden noundef align 8 dereferenceable_or_null(32) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hb7ce701cbf54a7f6E.llvm.17788874430417167"(ptr noalias nocapture noundef align 8 dereferenceable(16) %0) unnamed_addr #8 { +; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable +define hidden noundef align 8 dereferenceable_or_null(32) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hb7ce701cbf54a7f6E.llvm.17788874430417167"(ptr noalias nocapture noundef align 8 dereferenceable(16) %0) unnamed_addr #9 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load ptr, ptr %2, align 8, !nonnull !7, !noundef !7 %4 = load ptr, ptr %0, align 8, !nonnull !7, !noundef !7 @@ -536,6 +536,7 @@ define hidden noundef align 8 dereferenceable_or_null(32) 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 } @@ -565,7 +566,7 @@ define void @"_ZN10serde_json2de83_$LT$impl$u20$core..str..traits..FromStr$u20$f 9: ; preds = %3 %10 = landingpad { ptr, i32 } cleanup - invoke void @"_ZN4core3ptr82drop_in_place$LT$serde_json..de..Deserializer$LT$serde_json..read..StrRead$GT$$GT$17hfe177f2549c28b82E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %5) #25 + invoke void @"_ZN4core3ptr82drop_in_place$LT$serde_json..de..Deserializer$LT$serde_json..read..StrRead$GT$$GT$17hfe177f2549c28b82E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %5) #26 to label %26 unwind label %24 11: ; preds = %3 @@ -616,7 +617,7 @@ switch.lookup: ; preds = %11 24: ; preds = %9 %25 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #24 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #25 unreachable 26: ; preds = %9 @@ -624,7 +625,7 @@ switch.lookup: ; preds = %11 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable -define noundef zeroext i1 @"_ZN62_$LT$serde_json..number..N$u20$as$u20$core..cmp..PartialEq$GT$2eq17hef10eed45b728fc8E"(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %1) unnamed_addr #9 { +define noundef zeroext i1 @"_ZN62_$LT$serde_json..number..N$u20$as$u20$core..cmp..PartialEq$GT$2eq17hef10eed45b728fc8E"(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %1) unnamed_addr #10 { %3 = load i64, ptr %0, align 8, !range !30, !noundef !7 %4 = load i64, ptr %1, align 8, !range !30, !noundef !7 switch i64 %3, label %default.unreachable6 [ @@ -678,7 +679,7 @@ default.unreachable6: ; preds = %2 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable -define hidden { i32, float } @_ZN10serde_json6number6Number6as_f3217h6ff4b83fc8296096E(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0) unnamed_addr #9 { +define hidden { i32, float } @_ZN10serde_json6number6Number6as_f3217h6ff4b83fc8296096E(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0) unnamed_addr #10 { %2 = load i64, ptr %0, align 8, !range !30, !noundef !7 %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 switch i64 %2, label %default.unreachable1 [ @@ -712,7 +713,7 @@ default.unreachable1: ; preds = %1 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable -define hidden void @_ZN10serde_json6number6Number8from_f3217h143197ccdb84d4c3E(ptr noalias nocapture noundef writeonly sret({ i64, [1 x i64] }) align 8 dereferenceable(16) initializes((0, 8)) %0, float noundef %1) unnamed_addr #10 { +define hidden void @_ZN10serde_json6number6Number8from_f3217h143197ccdb84d4c3E(ptr noalias nocapture noundef writeonly sret({ i64, [1 x i64] }) align 8 dereferenceable(16) initializes((0, 8)) %0, float noundef %1) unnamed_addr #11 { %3 = tail call float @llvm.fabs.f32(float %1) %4 = fcmp ueq float %3, 0x7FF0000000000000 br i1 %4, label %7, label %5 @@ -969,7 +970,7 @@ define noundef zeroext i1 @"_ZN135_$LT$$LT$serde_json..number..Number$u20$as$u20 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable -define void @"_ZN102_$LT$serde_json..number..Number$u20$as$u20$core..convert..From$LT$serde_json..de..ParserNumber$GT$$GT$4from17h9357e4d4296c269eE"(ptr noalias nocapture noundef writeonly sret({ { i64, [1 x i64] } }) align 8 dereferenceable(16) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %1) unnamed_addr #11 { +define void @"_ZN102_$LT$serde_json..number..Number$u20$as$u20$core..convert..From$LT$serde_json..de..ParserNumber$GT$$GT$4from17h9357e4d4296c269eE"(ptr noalias nocapture noundef writeonly sret({ { i64, [1 x i64] } }) align 8 dereferenceable(16) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %1) unnamed_addr #12 { switch.lookup: %2 = load i64, ptr %1, align 8, !range !30, !noundef !7 %switch.gep = getelementptr inbounds nuw [3 x i64], ptr @"switch.table._ZN102_$LT$serde_json..number..Number$u20$as$u20$core..convert..From$LT$serde_json..de..ParserNumber$GT$$GT$4from17h9357e4d4296c269eE", i64 0, i64 %2 @@ -983,7 +984,7 @@ switch.lookup: } ; Function Attrs: cold mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable -define hidden void @_ZN10serde_json6number6Number10unexpected17h170612f3574fbdceE(ptr noalias nocapture noundef writeonly sret({ i8, [23 x i8] }) align 8 dereferenceable(24) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %1) unnamed_addr #12 { +define hidden void @_ZN10serde_json6number6Number10unexpected17h170612f3574fbdceE(ptr noalias nocapture noundef writeonly sret({ i8, [23 x i8] }) align 8 dereferenceable(24) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %1) unnamed_addr #13 { %3 = load i64, ptr %1, align 8, !range !30, !noundef !7 %4 = getelementptr inbounds nuw i8, ptr %1, i64 8 %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -1036,7 +1037,7 @@ declare hidden { ptr, ptr } @_ZN4core5error5Error5cause17h34cf8ac112d8d58cE(ptr declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #0 ; 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) #13 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #14 ; Function Attrs: nonlazybind uwtable declare hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17hcbe877c1a49f8d4cE"(ptr noalias noundef readonly align 8 dereferenceable(8), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #0 @@ -1051,22 +1052,22 @@ declare noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders8DebugMap5 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 #0 ; 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 #14 +declare void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias nocapture noundef align 8 dereferenceable(48), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #15 ; 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: cold noreturn nonlazybind uwtable -declare void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef, i64 noundef) unnamed_addr #14 +declare void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef, i64 noundef) unnamed_addr #15 ; Function Attrs: nounwind nonlazybind allockind("alloc,uninitialized,aligned") allocsize(0) uwtable -declare noalias noundef ptr @__rust_alloc(i64 noundef, i64 allocalign noundef) unnamed_addr #16 +declare noalias noundef ptr @__rust_alloc(i64 noundef, i64 allocalign noundef) unnamed_addr #17 ; Function Attrs: nounwind nonlazybind allockind("alloc,zeroed,aligned") allocsize(0) uwtable -declare noalias noundef ptr @__rust_alloc_zeroed(i64 noundef, i64 allocalign noundef) unnamed_addr #17 +declare noalias noundef ptr @__rust_alloc_zeroed(i64 noundef, i64 allocalign noundef) unnamed_addr #18 ; Function Attrs: cold noreturn nounwind nonlazybind uwtable -declare void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() unnamed_addr #18 +declare void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() unnamed_addr #19 ; Function Attrs: nonlazybind uwtable declare hidden void @"_ZN10serde_json2de21Deserializer$LT$R$GT$23parse_any_signed_number17ha4ebbc76ade75c2cE"(ptr noalias nocapture noundef sret({ i64, [1 x i64] }) align 8 dereferenceable(16), ptr noalias noundef align 8 dereferenceable(56)) unnamed_addr #0 @@ -1084,10 +1085,10 @@ declare hidden noundef zeroext i1 @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Displa declare noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE(ptr noalias noundef align 8 dereferenceable(64), ptr noalias nocapture noundef align 8 dereferenceable(48)) unnamed_addr #0 ; 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 hidden void @"_ZN4core3ptr45drop_in_place$LT$serde_json..error..Error$GT$17h61cd1dc1bbce44feE"(ptr noalias noundef align 8 dereferenceable(8)) unnamed_addr #0 @@ -1108,13 +1109,13 @@ declare hidden void @"_ZN4core3ptr82drop_in_place$LT$serde_json..de..Deserialize declare hidden { ptr, ptr } @"_ZN108_$LT$alloc..collections..btree..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha5dfe3002ec99e99E"(ptr noalias noundef align 8 dereferenceable(72)) unnamed_addr #0 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare float @llvm.fabs.f32(float) #20 +declare float @llvm.fabs.f32(float) #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.abs.i64(i64, i1 immarg) #20 +declare i64 @llvm.abs.i64(i64, i1 immarg) #21 attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } @@ -1125,23 +1126,24 @@ attributes #5 = { inlinehint nounwind nonlazybind uwtable "probe-stack"="inline- attributes #6 = { alwaysinline nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #7 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #8 = { inlinehint 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) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #10 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #11 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #12 = { cold mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #13 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } -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 = { nounwind nonlazybind allockind("alloc,uninitialized,aligned") allocsize(0) uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #17 = { nounwind nonlazybind allockind("alloc,zeroed,aligned") allocsize(0) uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #18 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #19 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #20 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #21 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #22 = { nounwind } -attributes #23 = { noreturn } -attributes #24 = { cold noreturn nounwind } -attributes #25 = { cold } +attributes #9 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) 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 norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #12 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #13 = { cold mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #14 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } +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 = { nounwind nonlazybind allockind("alloc,uninitialized,aligned") allocsize(0) uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #18 = { nounwind nonlazybind allockind("alloc,zeroed,aligned") allocsize(0) uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #19 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #20 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #21 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #22 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #23 = { nounwind } +attributes #24 = { noreturn } +attributes #25 = { cold noreturn nounwind } +attributes #26 = { cold } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/serde-rs-json/optimized/mlftjs9t2bz2jrv.ll b/bench/serde-rs-json/optimized/mlftjs9t2bz2jrv.ll index 757358a0ea2..b8756d650c2 100644 --- a/bench/serde-rs-json/optimized/mlftjs9t2bz2jrv.ll +++ b/bench/serde-rs-json/optimized/mlftjs9t2bz2jrv.ll @@ -295,6 +295,7 @@ define hidden noundef align 8 dereferenceable_or_null(32) ptr @"_ZN5alloc11colle 26: ; 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_tree17h03e0c3cb68d088edE.exit", %3 %.0 = phi ptr [ null, %3 ], [ %25, %.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_tree17h03e0c3cb68d088edE.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -380,6 +381,7 @@ define hidden noundef align 8 dereferenceable_or_null(32) ptr @"_ZN5alloc11colle 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_tree17hd27bd9dc9d7508aeE.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_tree17hd27bd9dc9d7508aeE.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -715,6 +717,7 @@ define hidden noundef align 8 dereferenceable_or_null(32) ptr @"_ZN5alloc11colle 24: ; 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_tree17hb4fe33a0be88709aE.exit", %2 %.0 = phi ptr [ null, %2 ], [ %23, %.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_tree17hb4fe33a0be88709aE.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -798,6 +801,7 @@ define hidden noundef align 8 dereferenceable_or_null(32) ptr @"_ZN5alloc11colle 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_tree17h9177ba8f6866066cE.exit", %3 %.0 = phi ptr [ null, %3 ], [ %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_tree17h9177ba8f6866066cE.exit" ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -998,6 +1002,7 @@ define hidden noundef nonnull align 8 dereferenceable(24) ptr @"_ZN5alloc11colle %6 = icmp ult i64 %4, 11 tail call void @llvm.assume(i1 %6) %7 = getelementptr inbounds nuw { [3 x i64] }, ptr %5, i64 %4 + call void @llvm.assume(i1 true) [ "align"(ptr %7, i64 8) ] ret ptr %7 } diff --git a/bench/serde-rs/optimized/15c4aj0j8k4kz6cj.ll b/bench/serde-rs/optimized/15c4aj0j8k4kz6cj.ll index d4468ca27d8..bf83f6d085d 100644 --- a/bench/serde-rs/optimized/15c4aj0j8k4kz6cj.ll +++ b/bench/serde-rs/optimized/15c4aj0j8k4kz6cj.ll @@ -74,7 +74,7 @@ define hidden noundef zeroext i1 @"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..Slic 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 "_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 ] + %.lcssa.i = phi i1 [ false, %3 ], [ 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.i" ] ret i1 %.lcssa.i } @@ -137,8 +137,8 @@ define hidden noundef zeroext i1 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u2 %.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 -"_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" ] +"_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 = %13, %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit.backedge" + %.lcssa.ph = phi i1 [ false, %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hd2d0d55a194614c7E.llvm.2284647516453932833.exit.backedge" ], [ true, %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" @@ -147,7 +147,7 @@ define hidden noundef zeroext i1 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u2 ret i1 %.lcssa } -; 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 +162,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/2nf71p5qpqz0dmgo.ll b/bench/smol-rs/optimized/2nf71p5qpqz0dmgo.ll index 4666e496205..83ed1819fe1 100644 --- a/bench/smol-rs/optimized/2nf71p5qpqz0dmgo.ll +++ b/bench/smol-rs/optimized/2nf71p5qpqz0dmgo.ll @@ -647,7 +647,9 @@ thread-pre-split.i.i.i.i.i: ; preds = %.critedge br i1 %235, label %"_ZN100_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17hf7aaf9b11974c5e2E.exit.thread.i.i.i.i.i", label %thread-pre-split.i.i.i.i.i "_ZN14async_executor6Runner8runnable28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17h3be15edcaab43ff2E.exit.i.i.i.i": ; preds = %196, %"_ZN100_$LT$core..iter..adapters..take..Take$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17hf7aaf9b11974c5e2E.exit.thread.i.i.i.i.i" + call void @llvm.assume(i1 true) [ "align"(ptr %.val18.i.i, i64 8) ] call void @llvm.assume(i1 %68) + call void @llvm.assume(i1 true) [ "align"(ptr %.val132, i64 8) ] call void @llvm.assume(i1 %69) %236 = invoke noundef zeroext i1 @_ZN14async_executor6Ticker5sleep17h9f977e602e9a1dedE(ptr noundef nonnull align 8 %.val18.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %.val132) to label %.noexc25.i.i unwind label %.loopexit.i.i @@ -659,6 +661,7 @@ thread-pre-split.i.i.i.i.i: ; preds = %.critedge %.0.i.ph.i.i.i.i = phi ptr [ %229, %.loopexit ], [ %86, %153 ], [ %80, %78 ], [ %229, %233 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) store ptr %.0.i.ph.i.i.i.i, ptr %11, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %.val18.i.i, i64 8) ] call void @llvm.assume(i1 %68) invoke void @_ZN14async_executor6Ticker4wake17hfe5a611737e99e82E(ptr noundef nonnull align 8 %.val18.i.i) to label %239 unwind label %237 @@ -925,8 +928,10 @@ define internal void @"_ZN4core3ptr34drop_in_place$LT$$RF$$RF$usize$GT$17hc9eff2 ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr81drop_in_place$LT$std..sync..mutex..MutexGuard$LT$async_executor..Sleepers$GT$$GT$17heb022e5d62b48961E"(ptr %.0.val, i8 %.8.val) unnamed_addr #2 { + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %1 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %1) + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %2 = getelementptr inbounds nuw i8, ptr %.0.val, i64 4 %3 = trunc nuw i8 %.8.val to i1 br i1 %3, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i, label %4 @@ -942,10 +947,11 @@ _ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i: ; pr br i1 %8, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i, label %9 9: ; preds = %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i - store atomic i8 1, ptr %2 monotonic, align 1 + store atomic i8 1, ptr %2 monotonic, align 4 br label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i: ; preds = %9, %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i, %4, %0 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %10 = atomicrmw xchg ptr %.0.val, i32 0 release, align 4 %11 = icmp eq i32 %10, 2 br i1 %11, label %12, label %"_ZN79_$LT$std..sync..mutex..MutexGuard$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hae90c0707b63df2bE.exit" diff --git a/bench/smol-rs/optimized/3jwiggzh2qey4o2f.ll b/bench/smol-rs/optimized/3jwiggzh2qey4o2f.ll index fa3e4705776..7ad30319f7e 100644 --- a/bench/smol-rs/optimized/3jwiggzh2qey4o2f.ll +++ b/bench/smol-rs/optimized/3jwiggzh2qey4o2f.ll @@ -202,7 +202,7 @@ define hidden noundef align 8 ptr @"_ZN108_$LT$async_lock..mutex..AcquireSlow$LT .preheader: ; preds = %29 %32 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %.val = load ptr, ptr %2, align 8, !nonnull !4 + %.val = load ptr, ptr %2, align 8, !nonnull !4, !align !13 %33 = getelementptr inbounds nuw i8, ptr %26, i64 8 br label %.backedge109 @@ -213,7 +213,7 @@ define hidden noundef align 8 ptr @"_ZN108_$LT$async_lock..mutex..AcquireSlow$LT 35: ; preds = %90, %29 %36 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %.val77 = load ptr, ptr %2, align 8, !nonnull !4 + %.val77 = load ptr, ptr %2, align 8, !nonnull !4, !align !13 %37 = getelementptr inbounds nuw i8, ptr %26, i64 8 br label %.backedge @@ -293,6 +293,7 @@ default.unreachable: ; preds = %101 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) %62 = load atomic i64, ptr %33 acquire, align 8 %.0.i.i.i = inttoptr i64 %62 to ptr + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i.i.i, i64 8) ] %.not.i = icmp eq i64 %62, 0 br i1 %.not.i, label %"_ZN14event_listener14Event$LT$T$GT$6notify17h10aee82dc6d55ceaE.llvm.17208988669928403088.exit", label %63 @@ -482,6 +483,7 @@ default.unreachable: ; preds = %101 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) %135 = load atomic i64, ptr %37 acquire, align 8 %.0.i.i.i96 = inttoptr i64 %135 to ptr + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i.i.i96, i64 8) ] %.not.i97 = icmp eq i64 %135, 0 br i1 %.not.i97, label %.backedge.backedge, label %136 @@ -508,6 +510,7 @@ define hidden void @"_ZN10async_lock5mutex14Mutex$LT$T$GT$16unlock_unchecked17ha call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) %6 = load atomic i64, ptr %4 acquire, align 8 %.0.i.i.i = inttoptr i64 %6 to ptr + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i.i.i, i64 8) ] %.not.i = icmp eq i64 %6, 0 br i1 %.not.i, label %"_ZN14event_listener14Event$LT$T$GT$6notify17h10aee82dc6d55ceaE.llvm.17208988669928403088.exit", label %7 @@ -573,6 +576,7 @@ define hidden noundef i64 @"_ZN14event_listener14Event$LT$T$GT$6notify17h10aee82 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) %5 = load atomic i64, ptr %0 acquire, align 8 %.0.i.i = inttoptr i64 %5 to ptr + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i.i, i64 8) ] %.not = icmp eq i64 %5, 0 br i1 %.not, label %12, label %6 @@ -591,10 +595,11 @@ define hidden noundef i64 @"_ZN14event_listener14Event$LT$T$GT$6notify17h10aee82 ret i64 %.0 } -; Function Attrs: inlinehint mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable +; Function Attrs: inlinehint mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: readwrite, inaccessiblemem: write) uwtable define hidden noundef align 8 ptr @"_ZN14event_listener14Event$LT$T$GT$9try_inner17h048c7beff68ae7e7E.llvm.17208988669928403088"(ptr nocapture noundef nonnull readonly align 8 %0) unnamed_addr #7 { %2 = load atomic i64, ptr %0 acquire, align 8 %.0.i = inttoptr i64 %2 to ptr + call void @llvm.assume(i1 true) [ "align"(ptr %.0.i, i64 8) ] ret ptr %.0.i } @@ -1256,7 +1261,7 @@ attributes #3 = { mustprogress nofree norecurse nosync nounwind nonlazybind will attributes #4 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #5 = { mustprogress nofree norecurse nounwind nonlazybind willreturn memory(readwrite, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #7 = { inlinehint mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #7 = { inlinehint mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: readwrite, 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 nosync nounwind willreturn memory(inaccessiblemem: write) } attributes #10 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } diff --git a/bench/smol-rs/optimized/4nluctfoxjh5sc3r.ll b/bench/smol-rs/optimized/4nluctfoxjh5sc3r.ll index c6edae2bd82..7412a7e71e0 100644 --- a/bench/smol-rs/optimized/4nluctfoxjh5sc3r.ll +++ b/bench/smol-rs/optimized/4nluctfoxjh5sc3r.ll @@ -121,7 +121,7 @@ __rust_try.llvm.17470729325788562433.exit: ; preds = %.body.i.i.i.i ; Function Attrs: nounwind nonlazybind uwtable define hidden { ptr, ptr } @_ZN3std9panicking3try17h420e0c9d6d559c4bE(ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %0, ptr noalias noundef align 8 dereferenceable(8) %1) unnamed_addr #2 personality ptr @rust_eh_personality { %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %.val.i = load ptr, ptr %3, align 8, !alias.scope !25, !noalias !28, !nonnull !7, !noundef !7 + %.val.i = load ptr, ptr %3, align 8, !alias.scope !25, !noalias !28, !nonnull !7, !align !30, !noundef !7 %.val1.i = load ptr, ptr %1, align 8, !alias.scope !28, !noalias !25, !nonnull !7, !align !30, !noundef !7 %4 = load ptr, ptr %.val.i, align 8, !alias.scope !31, !noalias !36, !nonnull !7, !align !30, !noundef !7 invoke void @"_ZN14async_executor8Executor5spawn28_$u7b$$u7b$closure$u7d$$u7d$17h9c7ec84883121f49E.llvm.579135748136030738"(ptr noundef nonnull align 8 %4, ptr noalias noundef nonnull align 8 dereferenceable(8) %.val1.i) @@ -577,7 +577,7 @@ define hidden void @_ZN3std9panicking3try7do_call17h1f2475cc3b682f43E.llvm.17470 %15 = getelementptr inbounds nuw i8, ptr %0, i64 8 %16 = load ptr, ptr %15, align 8, !nonnull !7, !align !30, !noundef !7 %17 = getelementptr i8, ptr %14, i64 16 - %.val = load ptr, ptr %17, align 8, !alias.scope !141, !noalias !144, !nonnull !7, !noundef !7 + %.val = load ptr, ptr %17, align 8, !alias.scope !141, !noalias !144, !nonnull !7, !align !30, !noundef !7 %.val1 = load ptr, ptr %16, align 8, !alias.scope !144, !noalias !141, !nonnull !7, !align !30, !noundef !7 %18 = getelementptr inbounds nuw i8, ptr %.val, i64 272 %19 = load i8, ptr %18, align 8, !range !146, !noalias !147, !noundef !7 @@ -712,6 +712,7 @@ default.unreachable: ; preds = %312, %1 59: ; preds = %53 %60 = load ptr, ptr %55, align 8, !noalias !159, !nonnull !7, !align !30, !noundef !7 + call void @llvm.assume(i1 true) [ "align"(ptr %56, i64 8) ] %61 = load i64, ptr %56, align 8, !range !158, !noalias !165, !noundef !7 %62 = icmp eq i64 %61, 2 br i1 %62, label %.noexc.i.i.i.i.i.i.i, label %63 @@ -757,6 +758,7 @@ default.unreachable: ; preds = %312, %1 .thread.i.i.i.i.i.i.i: ; preds = %.noexc.i.i.i.i.i.i.i, %50 %72 = phi ptr [ %55, %.noexc.i.i.i.i.i.i.i ], [ %52, %50 ] %73 = phi ptr [ %56, %.noexc.i.i.i.i.i.i.i ], [ %.phi.trans.insert.i.i.i.i.i, %50 ] + call void @llvm.assume(i1 true) [ "align"(ptr %73, i64 8) ] %74 = invoke noundef align 8 ptr @"_ZN108_$LT$async_lock..mutex..AcquireSlow$LT$B$C$T$GT$$u20$as$u20$event_listener_strategy..EventListenerFuture$GT$18poll_with_strategy17he5858a57607b425eE"(ptr noundef nonnull align 8 %73, ptr noalias noundef nonnull align 1 %2, ptr noalias noundef nonnull align 8 dereferenceable(8) %.val1) to label %.noexc.i.i.i.i.i unwind label %78, !noalias !153 @@ -1525,6 +1527,7 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i126.i.i.i.i.i.i: ; pre call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4), !noalias !170 %349 = load atomic i64, ptr %348 acquire, align 8, !noalias !153 %350 = inttoptr i64 %349 to ptr + call void @llvm.assume(i1 true) [ "align"(ptr %350, i64 8) ] %.not.i135.i.i.i.i.i.i = icmp eq i64 %349, 0 br i1 %.not.i135.i.i.i.i.i.i, label %"_ZN14event_listener14Event$LT$T$GT$6notify17h45e8141d091a30f2E.exit.i.i.i.i.i.i", label %351 @@ -1956,7 +1959,7 @@ define hidden void @_ZN3std9panicking3try7do_call17h96b53624b58413c6E.llvm.17470 %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load ptr, ptr %3, align 8, !nonnull !7, !align !30, !noundef !7 %5 = getelementptr i8, ptr %2, i64 16 - %.val = load ptr, ptr %5, align 8, !alias.scope !365, !noalias !368, !nonnull !7, !noundef !7 + %.val = load ptr, ptr %5, align 8, !alias.scope !365, !noalias !368, !nonnull !7, !align !30, !noundef !7 %.val1 = load ptr, ptr %4, align 8, !alias.scope !368, !noalias !365, !nonnull !7, !align !30, !noundef !7 tail call void @llvm.experimental.noalias.scope.decl(metadata !370) %6 = load ptr, ptr %.val, align 8, !alias.scope !373, !noalias !376, !nonnull !7, !align !30, !noundef !7 @@ -2228,8 +2231,10 @@ define internal fastcc void @"_ZN4core3ptr125drop_in_place$LT$core..result..Resu ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr66drop_in_place$LT$async_lock..mutex..MutexGuard$LT$$LP$$RP$$GT$$GT$17h05b62416625566fbE"(ptr %.0.val) unnamed_addr #1 personality ptr @rust_eh_personality { %1 = alloca i64, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %2 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %2) + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %3 = atomicrmw sub ptr %.0.val, i64 1 release, align 8 %4 = getelementptr inbounds nuw i8, ptr %.0.val, i64 8 %5 = tail call noundef i64 @"_ZN64_$LT$i32$u20$as$u20$event_listener..notify..IntoNotification$GT$17into_notification17h1560063b65d058faE"(i32 noundef 1) @@ -2420,8 +2425,10 @@ common.ret: ; preds = %31, %27, %21, %16, ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr99drop_in_place$LT$std..sync..mutex..MutexGuard$LT$alloc..vec..Vec$LT$std..process..Child$GT$$GT$$GT$17hec0e3a7d844a1a0cE"(ptr %.0.val, i8 %.8.val) unnamed_addr #1 { + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %1 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %1) + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %2 = getelementptr inbounds nuw i8, ptr %.0.val, i64 4 %3 = trunc nuw i8 %.8.val to i1 br i1 %3, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i, label %4 @@ -2437,10 +2444,11 @@ _ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i: ; pr br i1 %8, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i, label %9 9: ; preds = %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i - store atomic i8 1, ptr %2 monotonic, align 1 + store atomic i8 1, ptr %2 monotonic, align 4 br label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i: ; preds = %9, %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i, %4, %0 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %10 = atomicrmw xchg ptr %.0.val, i32 0 release, align 4 %11 = icmp eq i32 %10, 2 br i1 %11, label %12, label %"_ZN79_$LT$std..sync..mutex..MutexGuard$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17he91d4d6c1d335843E.exit" diff --git a/bench/softposit-rs/optimized/1jooigl29qhneyer.ll b/bench/softposit-rs/optimized/1jooigl29qhneyer.ll index 2f192f8549e..02172d08cfe 100644 --- a/bench/softposit-rs/optimized/1jooigl29qhneyer.ll +++ b/bench/softposit-rs/optimized/1jooigl29qhneyer.ll @@ -1902,8 +1902,8 @@ _ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E.exit: ; preds = %2, %7, %_Z %39 = getelementptr inbounds nuw i8, ptr %1, i64 32 %.val = load ptr, ptr %39, align 8, !nonnull !4, !noundef !4 %40 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val1 = load ptr, ptr %40, align 8, !nonnull !4, !noundef !4 - call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3), !noalias !5 + %.val1 = load ptr, ptr %40, align 8, !nonnull !4, !align !5, !noundef !4 + call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3), !noalias !6 store ptr @anon.5be969b161c3ca3248ac477383ae4705.7, ptr %3, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %.sroa.5.0..sroa_idx, align 8 @@ -1913,8 +1913,8 @@ _ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E.exit: ; preds = %2, %7, %_Z store i64 1, ptr %.sroa.8.0..sroa_idx, align 8 %.sroa.10.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %.sroa.10.0..sroa_idx, align 8 - %41 = call noundef zeroext i1 @_ZN4core3fmt5write17hd9a8d7d029f9ea1aE(ptr noundef nonnull align 1 %.val, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.val1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %3), !noalias !5 - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3), !noalias !5 + %41 = call noundef zeroext i1 @_ZN4core3fmt5write17hd9a8d7d029f9ea1aE(ptr noundef nonnull align 1 %.val, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.val1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %3), !noalias !6 + call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3), !noalias !6 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) ret i1 %41 @@ -1929,11 +1929,11 @@ _ZN4core3fmt9Arguments12as_const_str17h12e0cdd0f797b759E.exit.i: store ptr %0, ptr %3, align 8 %4 = getelementptr inbounds nuw i8, ptr %3, i64 8 store ptr @"_ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h299accfbede7160dE", ptr %4, align 8 - %5 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val = load ptr, ptr %5, align 8, !nonnull !4, !noundef !4 - %6 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val1 = load ptr, ptr %6, align 8, !nonnull !4, !noundef !4 - call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %2), !noalias !8 + %5 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %.val1 = load ptr, ptr %5, align 8, !nonnull !4, !align !5, !noundef !4 + %6 = getelementptr inbounds nuw i8, ptr %1, i64 32 + %.val = load ptr, ptr %6, align 8, !nonnull !4, !noundef !4 + call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %2), !noalias !9 store ptr @anon.5be969b161c3ca3248ac477383ae4705.10, ptr %2, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 store i64 2, ptr %.sroa.5.0..sroa_idx, align 8 @@ -1943,8 +1943,8 @@ _ZN4core3fmt9Arguments12as_const_str17h12e0cdd0f797b759E.exit.i: store i64 1, ptr %.sroa.8.0..sroa_idx, align 8 %.sroa.10.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 32 store ptr null, ptr %.sroa.10.0..sroa_idx, align 8 - %7 = call noundef zeroext i1 @_ZN4core3fmt5write17hd9a8d7d029f9ea1aE(ptr noundef nonnull align 1 %.val, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.val1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %2), !noalias !8 - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %2), !noalias !8 + %7 = call noundef zeroext i1 @_ZN4core3fmt5write17hd9a8d7d029f9ea1aE(ptr noundef nonnull align 1 %.val, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.val1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %2), !noalias !9 + call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %2), !noalias !9 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) ret i1 %7 } @@ -2279,7 +2279,7 @@ define range(i64 0, -4294967294) i64 @"_ZN59_$LT$softposit..p32e2..P32E2$u20$as$ %4 = alloca { i8, [15 x i8] }, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) call void @"_ZN39_$LT$f64$u20$as$u20$num_traits..Num$GT$14from_str_radix17h0a4767a2e72cb71bE"(ptr noalias nocapture noundef nonnull sret([16 x i8]) align 8 dereferenceable(16) %4, ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1, i32 noundef %2) - %5 = load i8, ptr %4, align 8, !range !11, !noundef !4 + %5 = load i8, ptr %4, align 8, !range !12, !noundef !4 %trunc = trunc nuw i8 %5 to i1 br i1 %trunc, label %58, label %6 @@ -2370,7 +2370,7 @@ define range(i64 0, -4294967294) i64 @"_ZN59_$LT$softposit..p32e2..P32E2$u20$as$ 58: ; preds = %3 %59 = getelementptr inbounds nuw i8, ptr %4, i64 1 - %60 = load i8, ptr %59, align 1, !range !11, !noundef !4 + %60 = load i8, ptr %59, align 1, !range !12, !noundef !4 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) %61 = zext nneg i8 %60 to i64 %62 = shl nuw nsw i64 %61, 8 @@ -2746,7 +2746,7 @@ define noundef range(i32 -2147483648, 1073741825) i32 @"_ZN68_$LT$softposit..p32 ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable define noundef zeroext i1 @"_ZN68_$LT$softposit..p32e2..P32E2$u20$as$u20$num_traits..sign..Signed$GT$11is_positive17h960dcd56b146b492E"(ptr noalias nocapture noundef readonly align 4 dereferenceable(4) %0) unnamed_addr #4 { - %2 = load i32, ptr %0, align 4, !alias.scope !12, !noundef !4 + %2 = load i32, ptr %0, align 4, !alias.scope !13, !noundef !4 %3 = icmp sgt i32 %2, -1 ret i1 %3 } @@ -3828,13 +3828,14 @@ attributes #10 = { noreturn } !2 = !{i32 1, !"LTOPostLink", i32 1} !3 = !{!"rustc version 1.78.0 (9b00956e5 2024-04-29)"} !4 = !{} -!5 = !{!6} -!6 = distinct !{!6, !7, !"_ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E: argument 0"} -!7 = distinct !{!7, !"_ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E"} -!8 = !{!9} -!9 = distinct !{!9, !10, !"_ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E: argument 0"} -!10 = distinct !{!10, !"_ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E"} -!11 = !{i8 0, i8 2} -!12 = !{!13} -!13 = distinct !{!13, !14, !"_ZN68_$LT$softposit..p32e2..P32E2$u20$as$u20$num_traits..sign..Signed$GT$11is_negative17hce958243ca9c0c6fE: argument 0"} -!14 = distinct !{!14, !"_ZN68_$LT$softposit..p32e2..P32E2$u20$as$u20$num_traits..sign..Signed$GT$11is_negative17hce958243ca9c0c6fE"} +!5 = !{i64 8} +!6 = !{!7} +!7 = distinct !{!7, !8, !"_ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E: argument 0"} +!8 = distinct !{!8, !"_ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E"} +!9 = !{!10} +!10 = distinct !{!10, !11, !"_ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E: argument 0"} +!11 = distinct !{!11, !"_ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E"} +!12 = !{i8 0, i8 2} +!13 = !{!14} +!14 = distinct !{!14, !15, !"_ZN68_$LT$softposit..p32e2..P32E2$u20$as$u20$num_traits..sign..Signed$GT$11is_negative17hce958243ca9c0c6fE: argument 0"} +!15 = distinct !{!15, !"_ZN68_$LT$softposit..p32e2..P32E2$u20$as$u20$num_traits..sign..Signed$GT$11is_negative17hce958243ca9c0c6fE"} diff --git a/bench/softposit-rs/optimized/3x9ny7yhpewmwf1y.ll b/bench/softposit-rs/optimized/3x9ny7yhpewmwf1y.ll index b1ceedd4248..05c82793412 100644 --- a/bench/softposit-rs/optimized/3x9ny7yhpewmwf1y.ll +++ b/bench/softposit-rs/optimized/3x9ny7yhpewmwf1y.ll @@ -449,8 +449,8 @@ _ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E.exit: ; preds = %2, %"_ZN9s %66 = getelementptr inbounds nuw i8, ptr %1, i64 32 %.val = load ptr, ptr %66, align 8, !nonnull !4, !noundef !4 %67 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val1 = load ptr, ptr %67, align 8, !nonnull !4, !noundef !4 - call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3), !noalias !11 + %.val1 = load ptr, ptr %67, align 8, !nonnull !4, !align !11, !noundef !4 + call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3), !noalias !12 store ptr @anon.09928d69171c268581f923f40d98664b.2, ptr %3, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %.sroa.5.0..sroa_idx, align 8 @@ -460,8 +460,8 @@ _ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E.exit: ; preds = %2, %"_ZN9s store i64 1, ptr %.sroa.8.0..sroa_idx, align 8 %.sroa.10.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %.sroa.10.0..sroa_idx, align 8 - %68 = call noundef zeroext i1 @_ZN4core3fmt5write17hd9a8d7d029f9ea1aE(ptr noundef nonnull align 1 %.val, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.val1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %3), !noalias !11 - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3), !noalias !11 + %68 = call noundef zeroext i1 @_ZN4core3fmt5write17hd9a8d7d029f9ea1aE(ptr noundef nonnull align 1 %.val, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.val1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %3), !noalias !12 + call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3), !noalias !12 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) ret i1 %68 @@ -744,6 +744,7 @@ attributes #9 = { nocallback nofree nosync nounwind speculatable willreturn memo !8 = !{!9} !9 = distinct !{!9, !10, !"_ZN9softposit6quire87convert41_$LT$impl$u20$softposit..quire8..Q8E0$GT$8to_posit17h1f636be8422a0a3fE: argument 0"} !10 = distinct !{!10, !"_ZN9softposit6quire87convert41_$LT$impl$u20$softposit..quire8..Q8E0$GT$8to_posit17h1f636be8422a0a3fE"} -!11 = !{!12} -!12 = distinct !{!12, !13, !"_ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E: argument 0"} -!13 = distinct !{!13, !"_ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E"} +!11 = !{i64 8} +!12 = !{!13} +!13 = distinct !{!13, !14, !"_ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E: argument 0"} +!14 = distinct !{!14, !"_ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E"} diff --git a/bench/softposit-rs/optimized/kf9u47qfx5x7qom.ll b/bench/softposit-rs/optimized/kf9u47qfx5x7qom.ll index da092466802..3bb404793e7 100644 --- a/bench/softposit-rs/optimized/kf9u47qfx5x7qom.ll +++ b/bench/softposit-rs/optimized/kf9u47qfx5x7qom.ll @@ -89,6 +89,7 @@ _ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit.thread: ; preds = %_ 42: ; preds = %40 %43 = getelementptr inbounds i8, ptr %.sroa.5.0, i64 -8 + call void @llvm.assume(i1 true) [ "align"(ptr %43, i64 8) ] %44 = load i64, ptr %43, align 8, !noundef !7 %.not87 = icmp eq i64 %44, 0 br i1 %.not87, label %40, label %45 @@ -174,7 +175,7 @@ _ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit.thread: ; preds = %_ br i1 %76, label %77, label %78 77: ; preds = %75 - call void @_ZN4core6option13unwrap_failed17hf59153bb1e2fc334E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.4540a05e70eb433947f08bd653635aa8.3) #8 + call void @_ZN4core6option13unwrap_failed17hf59153bb1e2fc334E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.4540a05e70eb433947f08bd653635aa8.3) #9 unreachable 78: ; preds = %75 @@ -567,8 +568,8 @@ _ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E.exit: ; preds = %2, %7, %_Z %39 = getelementptr inbounds nuw i8, ptr %1, i64 32 %.val = load ptr, ptr %39, align 8, !nonnull !7, !noundef !7 %40 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val1 = load ptr, ptr %40, align 8, !nonnull !7, !noundef !7 - call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3), !noalias !14 + %.val1 = load ptr, ptr %40, align 8, !nonnull !7, !align !14, !noundef !7 + call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3), !noalias !15 store ptr @anon.4540a05e70eb433947f08bd653635aa8.5, ptr %3, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 store i64 1, ptr %.sroa.5.0..sroa_idx, align 8 @@ -578,8 +579,8 @@ _ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E.exit: ; preds = %2, %7, %_Z store i64 1, ptr %.sroa.8.0..sroa_idx, align 8 %.sroa.10.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 32 store ptr null, ptr %.sroa.10.0..sroa_idx, align 8 - %41 = call noundef zeroext i1 @_ZN4core3fmt5write17hd9a8d7d029f9ea1aE(ptr noundef nonnull align 1 %.val, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.val1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %3), !noalias !14 - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3), !noalias !14 + %41 = call noundef zeroext i1 @_ZN4core3fmt5write17hd9a8d7d029f9ea1aE(ptr noundef nonnull align 1 %.val, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.val1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %3), !noalias !15 + call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3), !noalias !15 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) ret i1 %41 @@ -609,8 +610,11 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #6 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #6 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #7 + ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #7 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8 attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } @@ -619,8 +623,9 @@ attributes #3 = { mustprogress nofree norecurse nosync nounwind nonlazybind will attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } 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 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #8 = { noreturn } +attributes #7 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #9 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} @@ -639,6 +644,7 @@ attributes #8 = { noreturn } !11 = !{!12} !12 = distinct !{!12, !13, !"_ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E: argument 0"} !13 = distinct !{!13, !"_ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E"} -!14 = !{!15} -!15 = distinct !{!15, !16, !"_ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E: argument 0"} -!16 = distinct !{!16, !"_ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E"} +!14 = !{i64 8} +!15 = !{!16} +!16 = distinct !{!16, !17, !"_ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E: argument 0"} +!17 = distinct !{!17, !"_ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E"} diff --git a/bench/stat-rs/optimized/1dt2wsqttaly1xii.ll b/bench/stat-rs/optimized/1dt2wsqttaly1xii.ll index 18f7b2959e3..dd7054bc7c9 100644 --- a/bench/stat-rs/optimized/1dt2wsqttaly1xii.ll +++ b/bench/stat-rs/optimized/1dt2wsqttaly1xii.ll @@ -243,10 +243,10 @@ define hidden noundef zeroext i1 @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display br i1 %exitcond279.not.i, label %_ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i159.i, label %"_ZN8nalgebra4base3ops134_$LT$impl$u20$core..ops..index..Index$LT$$LP$usize$C$usize$RP$$GT$$u20$for$u20$nalgebra..base..matrix..Matrix$LT$T$C$R$C$C$C$S$GT$$GT$5index17h0b90919bb44cb52bE.exit206.lr.ph.us.i" _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i.i: ; preds = %2 - %33 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val153.i = load ptr, ptr %33, align 8, !alias.scope !9, !noalias !6, !nonnull !4, !noundef !4 - %34 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val154.i = load ptr, ptr %34, align 8, !alias.scope !9, !noalias !6, !nonnull !4, !noundef !4 + %33 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %.val154.i = load ptr, ptr %33, align 8, !alias.scope !9, !noalias !6, !nonnull !4, !noundef !4 + %34 = getelementptr inbounds nuw i8, ptr %1, i64 32 + %.val153.i = load ptr, ptr %34, align 8, !alias.scope !9, !noalias !6, !nonnull !4, !noundef !4 %35 = getelementptr inbounds nuw i8, ptr %.val154.i, i64 24 %36 = load ptr, ptr %35, align 8, !invariant.load !4, !noalias !18, !nonnull !4 %37 = tail call noundef zeroext i1 %36(ptr noundef nonnull align 1 %.val153.i, ptr noalias noundef nonnull readonly align 1 @anon.c16ec26a086e09edb08393af91730684.67, i64 noundef 3), !noalias !18 @@ -288,6 +288,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit170.i: ; preds = %_ZN4c store i32 0, ptr %.sroa.9.0..sroa_idx.i, align 4, !noalias !17 %.sroa.10.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %16, i64 48 store i8 1, ptr %.sroa.10.0..sroa_idx.i, align 8, !noalias !17 + call void @llvm.assume(i1 true) [ "align"(ptr %.val152.i, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6), !noalias !24 store ptr @anon.c16ec26a086e09edb08393af91730684.73, ptr %6, align 8, !noalias !17 %.sroa.5219.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -379,6 +380,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit188.us.us.us.i: ; preds store i32 0, ptr %.sroa.9.0..sroa_idx36.i, align 4, !noalias !17 store i8 1, ptr %.sroa.10.0..sroa_idx40.i, align 8, !noalias !17 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.11.0..sroa_idx43.i, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.11.i, i64 7, i1 false), !noalias !17 + call void @llvm.assume(i1 true) [ "align"(ptr %.val152.i, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5), !noalias !30 store ptr @anon.c16ec26a086e09edb08393af91730684.87, ptr %5, align 8, !noalias !17 store i64 1, ptr %.sroa.5231.0..sroa_idx.i, align 8, !noalias !17 @@ -406,6 +408,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit204.us.us.us.i: ; preds store i32 32, ptr %.sroa.864.0..sroa_idx.i, align 8, !noalias !17 store i32 0, ptr %.sroa.965.0..sroa_idx.i, align 4, !noalias !17 store i8 3, ptr %.sroa.1066.0..sroa_idx.i, align 8, !noalias !17 + call void @llvm.assume(i1 true) [ "align"(ptr %.val152.i, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3), !noalias !33 store ptr @anon.c16ec26a086e09edb08393af91730684.74, ptr %3, align 8, !noalias !17 store i64 1, ptr %.sroa.5237.0..sroa_idx.i, align 8, !noalias !17 @@ -458,6 +461,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit188.us264.i: ; preds = store i32 0, ptr %.sroa.9.0..sroa_idx36.i, align 4, !noalias !17 store i8 1, ptr %.sroa.10.0..sroa_idx40.i, align 8, !noalias !17 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.11.0..sroa_idx43.i, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.11.i, i64 7, i1 false), !noalias !17 + call void @llvm.assume(i1 true) [ "align"(ptr %.val152.i, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5), !noalias !30 store ptr @anon.c16ec26a086e09edb08393af91730684.87, ptr %5, align 8, !noalias !17 store i64 1, ptr %.sroa.5231.0..sroa_idx.i, align 8, !noalias !17 @@ -475,6 +479,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit196.us.i: ; preds = %_Z call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11), !noalias !17 store ptr %gep.us266.i, ptr %11, align 8, !noalias !17 store ptr @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17hf1cee52ef4fcaed8E", ptr %.sroa.4109.0..sroa_idx.i, align 8, !noalias !17 + call void @llvm.assume(i1 true) [ "align"(ptr %.val152.i, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4), !noalias !39 store ptr @anon.c16ec26a086e09edb08393af91730684.74, ptr %4, align 8, !noalias !17 store i64 1, ptr %.sroa.5243.0..sroa_idx.i, align 8, !noalias !17 @@ -603,10 +608,10 @@ define hidden noundef zeroext i1 @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display br label %"_ZN8nalgebra4base3ops134_$LT$impl$u20$core..ops..index..Index$LT$$LP$usize$C$usize$RP$$GT$$u20$for$u20$nalgebra..base..matrix..Matrix$LT$T$C$R$C$C$C$S$GT$$GT$5index17h07a3c7818eef0299E.exit215.i" _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i.i: ; preds = %2 - %25 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val153.i = load ptr, ptr %25, align 8, !alias.scope !42, !nonnull !4, !noundef !4 - %26 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val154.i = load ptr, ptr %26, align 8, !alias.scope !42, !nonnull !4, !noundef !4 + %25 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %.val154.i = load ptr, ptr %25, align 8, !alias.scope !42, !nonnull !4, !noundef !4 + %26 = getelementptr inbounds nuw i8, ptr %1, i64 32 + %.val153.i = load ptr, ptr %26, align 8, !alias.scope !42, !nonnull !4, !noundef !4 %27 = getelementptr inbounds nuw i8, ptr %.val154.i, i64 24 %28 = load ptr, ptr %27, align 8, !invariant.load !4, !noalias !45, !nonnull !4 %29 = tail call noundef zeroext i1 %28(ptr noundef nonnull align 1 %.val153.i, ptr noalias noundef nonnull readonly align 1 @anon.c16ec26a086e09edb08393af91730684.67, i64 noundef 3), !noalias !45 @@ -655,6 +660,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit179.i: ; preds = %_ZN4c store i32 0, ptr %.sroa.9.0..sroa_idx.i, align 4, !noalias !42 %.sroa.10.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %16, i64 48 store i8 1, ptr %.sroa.10.0..sroa_idx.i, align 8, !noalias !42 + call void @llvm.assume(i1 true) [ "align"(ptr %.val152.i, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7), !noalias !51 store ptr @anon.c16ec26a086e09edb08393af91730684.73, ptr %7, align 8, !noalias !42 %.sroa.513.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %7, i64 8 @@ -737,6 +743,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit197.us.i: ; preds = %_Z store i32 32, ptr %.sroa.8.0..sroa_idx32.i, align 8, !noalias !42 store i32 0, ptr %.sroa.9.0..sroa_idx36.i, align 4, !noalias !42 store i8 1, ptr %.sroa.10.0..sroa_idx40.i, align 8, !noalias !42 + call void @llvm.assume(i1 true) [ "align"(ptr %.val152.i, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6), !noalias !57 store ptr @anon.c16ec26a086e09edb08393af91730684.87, ptr %6, align 8, !noalias !42 store i64 1, ptr %.sroa.525.0..sroa_idx.i, align 8, !noalias !42 @@ -764,6 +771,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit213.us.i: ; preds = %_Z store i32 32, ptr %.sroa.864.0..sroa_idx.i, align 8, !noalias !42 store i32 0, ptr %.sroa.965.0..sroa_idx.i, align 4, !noalias !42 store i8 3, ptr %.sroa.1066.0..sroa_idx.i, align 8, !noalias !42 + call void @llvm.assume(i1 true) [ "align"(ptr %.val152.i, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4), !noalias !60 store ptr @anon.c16ec26a086e09edb08393af91730684.74, ptr %4, align 8, !noalias !42 store i64 1, ptr %.sroa.531.0..sroa_idx.i, align 8, !noalias !42 @@ -809,6 +817,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit: ; preds = %.split.i, store i32 0, ptr %.sroa.9.0..sroa_idx34.i, align 4, !noalias !42 %.sroa.10.0..sroa_idx38.i = getelementptr inbounds nuw i8, ptr %9, i64 48 store i8 1, ptr %.sroa.10.0..sroa_idx38.i, align 8, !noalias !42 + call void @llvm.assume(i1 true) [ "align"(ptr %.val152.i, i64 8) ], !noalias !42 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3), !noalias !66 store ptr @anon.c16ec26a086e09edb08393af91730684.79, ptr %3, align 8, !noalias !42 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -864,6 +873,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit197.i: ; preds = %_ZN4c store i32 32, ptr %.sroa.8.0..sroa_idx32.i, align 8, !noalias !42 store i32 0, ptr %.sroa.9.0..sroa_idx36.i, align 4, !noalias !42 store i8 1, ptr %.sroa.10.0..sroa_idx40.i, align 8, !noalias !42 + call void @llvm.assume(i1 true) [ "align"(ptr %.val152.i, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6), !noalias !57 store ptr @anon.c16ec26a086e09edb08393af91730684.87, ptr %6, align 8, !noalias !42 store i64 1, ptr %.sroa.525.0..sroa_idx.i, align 8, !noalias !42 @@ -881,6 +891,7 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit205.i: ; preds = %_ZN4c call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11), !noalias !42 store ptr %61, ptr %11, align 8, !noalias !42 store ptr @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17hf1cee52ef4fcaed8E", ptr %.sroa.4109.0..sroa_idx.i, align 8, !noalias !42 + call void @llvm.assume(i1 true) [ "align"(ptr %.val152.i, i64 8) ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5), !noalias !69 store ptr @anon.c16ec26a086e09edb08393af91730684.74, ptr %5, align 8, !noalias !42 store i64 1, ptr %.sroa.537.0..sroa_idx.i, align 8, !noalias !42 @@ -956,6 +967,7 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit: %1 = alloca [48 x i8], align 8 %2 = icmp ne ptr %.32.val, null tail call void @llvm.assume(i1 %2) + call void @llvm.assume(i1 true) [ "align"(ptr %.40.val, i64 8) ] %3 = icmp ne ptr %.40.val, null tail call void @llvm.assume(i1 %3) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %1) @@ -2341,8 +2353,10 @@ define hidden void @"_ZN8nalgebra6linalg5solve69_$LT$impl$u20$nalgebra..base..ma %26 = getelementptr double, ptr %16, i64 %23 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4), !noalias !682 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5), !noalias !682 + call void @llvm.assume(i1 true) [ "align"(ptr %24, i64 8) ] %27 = icmp ne ptr %24, null tail call void @llvm.assume(i1 %27) + call void @llvm.assume(i1 true) [ "align"(ptr %26, i64 8) ] %28 = icmp ne ptr %26, null tail call void @llvm.assume(i1 %28) tail call void @_ZN8nalgebra4base11blas_uninit11array_axcpy17h21b7bcebf3990a88E(ptr noalias noundef nonnull align 8 %24, i64 noundef %25, double noundef %22, ptr noalias noundef nonnull readonly align 8 %26, i64 noundef %25, double noundef 1.000000e+00, double noundef 1.000000e+00, i64 noundef 1, i64 noundef 1, i64 noundef %25), !noalias !682 diff --git a/bench/stat-rs/optimized/20o1n4zmlkej35p7.ll b/bench/stat-rs/optimized/20o1n4zmlkej35p7.ll index bbc4bf15f69..bd678554863 100644 --- a/bench/stat-rs/optimized/20o1n4zmlkej35p7.ll +++ b/bench/stat-rs/optimized/20o1n4zmlkej35p7.ll @@ -154,6 +154,7 @@ _ZN5alloc11collections5btree3mem7replace17h0143aa89c05cdaefE.llvm.73715379650145 define hidden noundef align 8 dereferenceable_or_null(8) ptr @"_ZN108_$LT$alloc..collections..btree..map..Keys$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h85a5fb138f9ad103E"(ptr noalias nocapture noundef align 8 dereferenceable(72) %0) unnamed_addr #0 { %2 = tail call { ptr, ptr } @"_ZN108_$LT$alloc..collections..btree..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8f681cfe5c96f2ceE"(ptr noalias noundef nonnull align 8 dereferenceable(72) %0) %3 = extractvalue { ptr, ptr } %2, 0 + call void @llvm.assume(i1 true) [ "align"(ptr %3, i64 8) ] ret ptr %3 } @@ -840,6 +841,7 @@ _ZN5alloc11collections5btree3mem7replace17h1bb4c45f803c59fbE.llvm.73715379650145 define hidden noundef align 8 dereferenceable_or_null(8) ptr @"_ZN123_$LT$alloc..collections..btree..map..Keys$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hbe147977fa0745a9E"(ptr noalias nocapture noundef align 8 dereferenceable(72) %0) unnamed_addr #0 { %2 = tail call { ptr, ptr } @"_ZN123_$LT$alloc..collections..btree..map..Iter$LT$K$C$V$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb3193f7317513320E"(ptr noalias noundef nonnull align 8 dereferenceable(72) %0) %3 = extractvalue { ptr, ptr } %2, 0 + call void @llvm.assume(i1 true) [ "align"(ptr %3, i64 8) ] ret ptr %3 } @@ -1098,6 +1100,7 @@ define hidden void @"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$ br i1 %25, label %26, label %"_ZN5alloc11collections5btree3map5entry30OccupiedEntry$LT$K$C$V$C$A$GT$9remove_kv17ha29c93801fc9f68cE.exit" 26: ; preds = %16 + call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] call void @"_ZN5alloc11collections5btree4node127NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$18pop_internal_level17h6c0ee2f93a68ecaaE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %1), !noalias !210 br label %"_ZN5alloc11collections5btree3map5entry30OccupiedEntry$LT$K$C$V$C$A$GT$9remove_kv17ha29c93801fc9f68cE.exit" @@ -1332,6 +1335,7 @@ define hidden { i64, i64 } @"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V br i1 %21, label %22, label %"_ZN5alloc11collections5btree3map5entry30OccupiedEntry$LT$K$C$V$C$A$GT$9remove_kv17ha29c93801fc9f68cE.exit.i" 22: ; preds = %13 + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 8) ] call void @"_ZN5alloc11collections5btree4node127NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$18pop_internal_level17h6c0ee2f93a68ecaaE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0), !noalias !241 br label %"_ZN5alloc11collections5btree3map5entry30OccupiedEntry$LT$K$C$V$C$A$GT$9remove_kv17ha29c93801fc9f68cE.exit.i" diff --git a/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll b/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll index dff37be1d97..fbae8494d80 100644 --- a/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll +++ b/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll @@ -54,7 +54,7 @@ define hidden void @"_ZN5alloc11collections5btree4node115NodeRef$LT$alloc..colle br i1 %8, label %10, label %9 9: ; preds = %4 - tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.4.llvm.4547698320314000967, i64 noundef 32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.6.llvm.4547698320314000967) #20 + tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.4.llvm.4547698320314000967, i64 noundef 32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.6.llvm.4547698320314000967) #21 unreachable 10: ; preds = %4 @@ -106,7 +106,7 @@ define hidden void @"_ZN5alloc11collections5btree4node127NodeRef$LT$alloc..colle %.sroa.5.sroa.4.0 = phi i64 [ %11, %7 ], [ undef, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$6ascend17h4913b8091f3bc0d4E.llvm.4547698320314000967.exit.thread" ] %.not = icmp eq i64 %2, 0 %. = select i1 %.not, i64 192, i64 288 - tail call void @__rust_dealloc(ptr noundef nonnull %1, i64 noundef %., i64 noundef 8) #21 + tail call void @__rust_dealloc(ptr noundef nonnull %1, i64 noundef %., i64 noundef 8) #22 store ptr %4, ptr %0, align 8 %.sroa.5.0..sroa_idx2 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink28.i12, ptr %.sroa.5.0..sroa_idx2, align 8 @@ -123,7 +123,7 @@ define hidden void @"_ZN5alloc11collections5btree4node127NodeRef$LT$alloc..colle br i1 %.not, label %4, label %5 4: ; preds = %1 - tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.17.llvm.4547698320314000967, i64 noundef 33, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.18.llvm.4547698320314000967) #20 + tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.17.llvm.4547698320314000967, i64 noundef 33, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.18.llvm.4547698320314000967) #21 unreachable 5: ; preds = %1 @@ -134,7 +134,7 @@ define hidden void @"_ZN5alloc11collections5btree4node127NodeRef$LT$alloc..colle %9 = add i64 %3, -1 store i64 %9, ptr %2, align 8 store ptr null, ptr %8, align 8 - tail call void @__rust_dealloc(ptr noundef nonnull %6, i64 noundef 288, i64 noundef 8) #21 + tail call void @__rust_dealloc(ptr noundef nonnull %6, i64 noundef 288, i64 noundef 8) #22 ret void } @@ -247,7 +247,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node208Handle$LT$allo br i1 %4, label %5, label %"_ZN5alloc11collections5btree4node21LeafNode$LT$K$C$V$GT$3new17h5ee1dca304c25f65E.exit" 5: ; preds = %2 - tail call void @_ZN5alloc5alloc18handle_alloc_error17hc735483c05842e7cE(i64 noundef 8, i64 noundef 192) #20 + tail call void @_ZN5alloc5alloc18handle_alloc_error17hc735483c05842e7cE(i64 noundef 8, i64 noundef 192) #21 unreachable "_ZN5alloc11collections5btree4node21LeafNode$LT$K$C$V$GT$3new17h5ee1dca304c25f65E.exit": ; preds = %2 @@ -276,7 +276,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node208Handle$LT$allo br i1 %21, label %22, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h78de848a7ae7b4a3E.exit.i" 22: ; preds = %"_ZN5alloc11collections5btree4node21LeafNode$LT$K$C$V$GT$3new17h5ee1dca304c25f65E.exit" - invoke void @_ZN4core5slice5index24slice_end_index_len_fail17h70ffde91723d2a46E(i64 noundef %12, i64 noundef 11, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.21) #20 + invoke void @_ZN4core5slice5index24slice_end_index_len_fail17h70ffde91723d2a46E(i64 noundef %12, i64 noundef 11, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.21) #21 to label %.noexc unwind label %40 .noexc: ; preds = %22 @@ -288,7 +288,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node208Handle$LT$allo br i1 %24, label %26, label %25 25: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h78de848a7ae7b4a3E.exit.i" - invoke void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.19, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.20) #20 + invoke void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.19, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.20) #21 to label %.noexc5 unwind label %40 .noexc5: ; preds = %25 @@ -322,7 +322,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node208Handle$LT$allo 40: ; preds = %25, %22 %41 = landingpad { ptr, i32 } cleanup - tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef 192, i64 noundef 8) #21 + tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef 192, i64 noundef 8) #22 resume { ptr, i32 } %41 } @@ -505,7 +505,7 @@ define hidden void @"_ZN5alloc11collections5btree4node210Handle$LT$alloc..collec br i1 %84, label %86, label %85 85: ; preds = %78 - tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.24, i64 noundef 53, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.25) #20, !noalias !48 + tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.24, i64 noundef 53, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.25) #21, !noalias !48 unreachable 86: ; preds = %78 @@ -757,7 +757,7 @@ _ZN5alloc11collections5btree4node12slice_insert17hae2af9abdc4c303aE.exit.i71.i: br i1 %192, label %193, label %194 193: ; preds = %._crit_edge - tail call void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.3) #20, !noalias !107 + tail call void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.3) #21, !noalias !107 unreachable 194: ; preds = %._crit_edge @@ -773,7 +773,7 @@ _ZN5alloc11collections5btree4node12slice_insert17hae2af9abdc4c303aE.exit.i71.i: br i1 %198, label %199, label %_ZN5alloc11collections5btree3mem7replace17ha955f20bf239a92fE.exit.i 199: ; preds = %.noexc.i.i - invoke void @_ZN5alloc5alloc18handle_alloc_error17hc735483c05842e7cE(i64 noundef 8, i64 noundef 288) #20 + invoke void @_ZN5alloc5alloc18handle_alloc_error17hc735483c05842e7cE(i64 noundef 8, i64 noundef 288) #21 to label %.noexc3.i.i unwind label %200, !noalias !113 .noexc3.i.i: ; preds = %199 @@ -788,7 +788,7 @@ _ZN5alloc11collections5btree4node12slice_insert17hae2af9abdc4c303aE.exit.i71.i: 202: ; preds = %200 %203 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #22, !noalias !113 + call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #23, !noalias !113 unreachable "_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17ha13aa77feb74e769E.exit.i.i": ; preds = %200 @@ -811,7 +811,7 @@ _ZN5alloc11collections5btree3mem7replace17ha955f20bf239a92fE.exit.i: ; preds = % br i1 %208, label %210, label %209 209: ; preds = %_ZN5alloc11collections5btree3mem7replace17ha955f20bf239a92fE.exit.i - tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.7, i64 noundef 48, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.8) #20, !noalias !107 + tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.7, i64 noundef 48, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.8) #21, !noalias !107 unreachable 210: ; preds = %_ZN5alloc11collections5btree3mem7replace17ha955f20bf239a92fE.exit.i @@ -820,7 +820,7 @@ _ZN5alloc11collections5btree3mem7replace17ha955f20bf239a92fE.exit.i: ; preds = % br i1 %212, label %"_ZN5alloc11collections5btree3map5entry28VacantEntry$LT$K$C$V$C$A$GT$6insert28_$u7b$$u7b$closure$u7d$$u7d$17h2788e6f50e4a264bE.exit", label %213 213: ; preds = %210 - tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.4.llvm.4547698320314000967, i64 noundef 32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.9) #20, !noalias !107 + tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.4.llvm.4547698320314000967, i64 noundef 32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.9) #21, !noalias !107 unreachable "_ZN5alloc11collections5btree3map5entry28VacantEntry$LT$K$C$V$C$A$GT$6insert28_$u7b$$u7b$closure$u7d$$u7d$17h2788e6f50e4a264bE.exit": ; preds = %210 @@ -871,7 +871,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node212Handle$LT$allo br i1 %7, label %8, label %"_ZN5alloc11collections5btree4node25InternalNode$LT$K$C$V$GT$3new17h0be88ef804756912E.exit" 8: ; preds = %2 - tail call void @_ZN5alloc5alloc18handle_alloc_error17hc735483c05842e7cE(i64 noundef 8, i64 noundef 288) #20 + tail call void @_ZN5alloc5alloc18handle_alloc_error17hc735483c05842e7cE(i64 noundef 8, i64 noundef 288) #21 unreachable "_ZN5alloc11collections5btree4node25InternalNode$LT$K$C$V$GT$3new17h0be88ef804756912E.exit": ; preds = %2 @@ -898,7 +898,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node212Handle$LT$allo br i1 %23, label %24, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h78de848a7ae7b4a3E.exit.i" 24: ; preds = %"_ZN5alloc11collections5btree4node25InternalNode$LT$K$C$V$GT$3new17h0be88ef804756912E.exit" - invoke void @_ZN4core5slice5index24slice_end_index_len_fail17h70ffde91723d2a46E(i64 noundef %14, i64 noundef 11, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.21) #20 + invoke void @_ZN4core5slice5index24slice_end_index_len_fail17h70ffde91723d2a46E(i64 noundef %14, i64 noundef 11, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.21) #21 to label %.noexc unwind label %28 .noexc: ; preds = %24 @@ -910,7 +910,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node212Handle$LT$allo br i1 %26, label %32, label %27 27: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h78de848a7ae7b4a3E.exit.i" - invoke void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.19, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.20) #20 + invoke void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.19, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.20) #21 to label %.noexc9 unwind label %28 .noexc9: ; preds = %27 @@ -948,7 +948,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node212Handle$LT$allo br i1 %47, label %48, label %49 48: ; preds = %32 - invoke void @_ZN4core5slice5index24slice_end_index_len_fail17h70ffde91723d2a46E(i64 noundef range(i64 1, 65537) %46, i64 noundef 12, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.23) #20 + invoke void @_ZN4core5slice5index24slice_end_index_len_fail17h70ffde91723d2a46E(i64 noundef range(i64 1, 65537) %46, i64 noundef 12, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.23) #21 to label %.noexc10 unwind label %30 .noexc10: ; preds = %48 @@ -959,7 +959,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node212Handle$LT$allo br i1 %50, label %52, label %51 51: ; preds = %49 - invoke void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.19, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.20) #20 + invoke void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.19, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.20) #21 to label %.noexc11 unwind label %30 .noexc11: ; preds = %51 @@ -1006,7 +1006,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node212Handle$LT$allo 70: ; preds = %30, %28 %.pn = phi { ptr, i32 } [ %31, %30 ], [ %29, %28 ] - tail call void @__rust_dealloc(ptr noundef nonnull %6, i64 noundef 288, i64 noundef 8) #21 + tail call void @__rust_dealloc(ptr noundef nonnull %6, i64 noundef 288, i64 noundef 8) #22 resume { ptr, i32 } %.pn } @@ -1017,7 +1017,7 @@ define hidden noundef nonnull align 8 ptr @"_ZN5alloc11collections5btree4node21L br i1 %2, label %3, label %"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h54f2e51c95f6663bE.exit" 3: ; preds = %0 - tail call void @_ZN5alloc5alloc18handle_alloc_error17hc735483c05842e7cE(i64 noundef 8, i64 noundef 192) #20 + tail call void @_ZN5alloc5alloc18handle_alloc_error17hc735483c05842e7cE(i64 noundef 8, i64 noundef 192) #21 unreachable "_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h54f2e51c95f6663bE.exit": ; preds = %0 @@ -1044,7 +1044,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node29BalancingContex br i1 %14, label %16, label %15 15: ; preds = %2 - tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.28, i64 noundef 51, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.29) #20 + tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.28, i64 noundef 51, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.29) #21 unreachable 16: ; preds = %2 @@ -1052,7 +1052,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node29BalancingContex br i1 %.not, label %17, label %18 17: ; preds = %16 - tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.30, i64 noundef 39, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.31) #20 + tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.30, i64 noundef 39, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.31) #21 unreachable 18: ; preds = %16 @@ -1077,7 +1077,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node29BalancingContex br i1 %30, label %_ZN5alloc11collections5btree4node13move_to_slice17h667d6feae92a23c6E.exit, label %31 31: ; preds = %18 - tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.19, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.20) #20, !noalias !163 + tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.19, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.20) #21, !noalias !163 unreachable _ZN5alloc11collections5btree4node13move_to_slice17h667d6feae92a23c6E.exit: ; preds = %18 @@ -1125,7 +1125,7 @@ _ZN5alloc11collections5btree4node13move_to_slice17h667d6feae92a23c6E.exit: ; pre ret void 58: ; preds = %57, %56 - tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.32, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.33) #20 + tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.32, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.33) #21 unreachable _ZN5alloc11collections5btree4node13move_to_slice17h0fcabb5f1570b7c5E.exit: ; preds = %57 @@ -1171,7 +1171,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node29BalancingContex br i1 %14, label %16, label %15 15: ; preds = %2 - tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.35, i64 noundef 50, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.36) #20 + tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.35, i64 noundef 50, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.36) #21 unreachable 16: ; preds = %2 @@ -1179,7 +1179,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node29BalancingContex br i1 %.not, label %17, label %_ZN5alloc11collections5btree4node13move_to_slice17h667d6feae92a23c6E.exit 17: ; preds = %16 - tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.37, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.38) #20 + tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.37, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.38) #21 unreachable _ZN5alloc11collections5btree4node13move_to_slice17h667d6feae92a23c6E.exit: ; preds = %16 @@ -1241,7 +1241,7 @@ _ZN5alloc11collections5btree4node13move_to_slice17h667d6feae92a23c6E.exit: ; pre ret void 54: ; preds = %53, %52 - tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.32, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.39) #20 + tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.32, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.39) #21 unreachable _ZN5alloc11collections5btree4node13move_to_slice17h0fcabb5f1570b7c5E.exit: ; preds = %53 @@ -1310,7 +1310,7 @@ define internal fastcc { ptr, i64 } @"_ZN5alloc11collections5btree4node29Balanci br i1 %22, label %_ZN5alloc11collections5btree4node13move_to_slice17h667d6feae92a23c6E.exit, label %23 23: ; preds = %1 - tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.42, i64 noundef 42, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.43) #20 + tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.42, i64 noundef 42, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.43) #21 unreachable _ZN5alloc11collections5btree4node13move_to_slice17h667d6feae92a23c6E.exit: ; preds = %1 @@ -1383,7 +1383,7 @@ _ZN5alloc11collections5btree4node13move_to_slice17h667d6feae92a23c6E.exit: ; pre br i1 %65, label %_ZN5alloc11collections5btree4node13move_to_slice17h0fcabb5f1570b7c5E.exit, label %66 66: ; preds = %61 - tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.19, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.20) #20, !noalias !242 + tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.19, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.20) #21, !noalias !242 unreachable _ZN5alloc11collections5btree4node13move_to_slice17h0fcabb5f1570b7c5E.exit: ; preds = %61 @@ -1409,7 +1409,7 @@ _ZN5alloc11collections5btree4node13move_to_slice17h0fcabb5f1570b7c5E.exit: ; pre "_ZN5alloc11collections5btree4node119NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$30correct_childrens_parent_links17h52c2c32abc8293faE.exit49": ; preds = %.lr.ph.i46, %"_ZN5alloc11collections5btree4node119NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$30correct_childrens_parent_links17h52c2c32abc8293faE.exit" %.sink = phi i64 [ 192, %"_ZN5alloc11collections5btree4node119NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$30correct_childrens_parent_links17h52c2c32abc8293faE.exit" ], [ 288, %.lr.ph.i46 ] - tail call void @__rust_dealloc(ptr noundef nonnull %16, i64 noundef %.sink, i64 noundef 8) #21 + tail call void @__rust_dealloc(ptr noundef nonnull %16, i64 noundef %.sink, i64 noundef 8) #22 %76 = insertvalue { ptr, i64 } poison, ptr %9, 0 %77 = insertvalue { ptr, i64 } %76, i64 %11, 1 ret { ptr, i64 } %77 @@ -1535,7 +1535,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree6remove259_$LT$impl$u2 store ptr %4, ptr %47, align 8, !noalias !266 %48 = getelementptr inbounds nuw i8, ptr %8, i64 24 store i64 0, ptr %48, align 8, !noalias !266 - call void @_ZN4core9panicking9panic_fmt17hdc63834ffaaefae5E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.12) #20, !noalias !266 + call void @_ZN4core9panicking9panic_fmt17hdc63834ffaaefae5E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.12) #21, !noalias !266 unreachable 49: ; preds = %37 @@ -1608,7 +1608,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree6remove259_$LT$impl$u2 br i1 %.not.i92, label %76, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$25merge_tracking_child_edge17h6c7968d683a59322E.exit" 76: ; preds = %75 - tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.40, i64 noundef 142, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.41) #20, !noalias !273 + tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.40, i64 noundef 142, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.41) #21, !noalias !273 unreachable "_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$25merge_tracking_child_edge17h6c7968d683a59322E.exit": ; preds = %75 @@ -1670,7 +1670,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree6remove259_$LT$impl$u2 br i1 %.not10.i, label %84, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$25merge_tracking_child_edge17h6c7968d683a59322E.exit95" 84: ; preds = %83 - tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.40, i64 noundef 142, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.41) #20, !noalias !281 + tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.40, i64 noundef 142, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.41) #21, !noalias !281 unreachable "_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$25merge_tracking_child_edge17h6c7968d683a59322E.exit95": ; preds = %83 @@ -1730,7 +1730,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree6remove259_$LT$impl$u2 store ptr %4, ptr %104, align 8, !noalias !294 %105 = getelementptr inbounds nuw i8, ptr %5, i64 24 store i64 0, ptr %105, align 8, !noalias !294 - call void @_ZN4core9panicking9panic_fmt17hdc63834ffaaefae5E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.12) #20, !noalias !294 + call void @_ZN4core9panicking9panic_fmt17hdc63834ffaaefae5E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.12) #21, !noalias !294 unreachable 106: ; preds = %.lr.ph @@ -1800,7 +1800,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree6remove259_$LT$impl$u2 br i1 %133, label %_ZN5alloc11collections5btree4node13move_to_slice17h667d6feae92a23c6E.exit.i, label %134 134: ; preds = %._crit_edge200 - tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.42, i64 noundef 42, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.43) #20, !noalias !301 + tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.42, i64 noundef 42, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.43) #21, !noalias !301 unreachable _ZN5alloc11collections5btree4node13move_to_slice17h667d6feae92a23c6E.exit.i: ; preds = %120, %._crit_edge200 @@ -1882,7 +1882,7 @@ _ZN5alloc11collections5btree4node13move_to_slice17h667d6feae92a23c6E.exit.i: ; p br i1 %180, label %_ZN5alloc11collections5btree4node13move_to_slice17h0fcabb5f1570b7c5E.exit.i, label %181 181: ; preds = %176 - tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.19, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.20) #20, !noalias !332 + tail call void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.19, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.20) #21, !noalias !332 unreachable _ZN5alloc11collections5btree4node13move_to_slice17h0fcabb5f1570b7c5E.exit.i: ; preds = %176 @@ -1908,7 +1908,7 @@ _ZN5alloc11collections5btree4node13move_to_slice17h0fcabb5f1570b7c5E.exit.i: ; p "_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$8do_merge17h0cc79190767af87aE.exit": ; preds = %.lr.ph.i46.i, %"_ZN5alloc11collections5btree4node119NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$30correct_childrens_parent_links17h52c2c32abc8293faE.exit.i" %.sink.i97 = phi i64 [ 192, %"_ZN5alloc11collections5btree4node119NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$30correct_childrens_parent_links17h52c2c32abc8293faE.exit.i" ], [ 288, %.lr.ph.i46.i ] - tail call void @__rust_dealloc(ptr noundef nonnull %136, i64 noundef %.sink.i97, i64 noundef 8) #21, !noalias !301 + tail call void @__rust_dealloc(ptr noundef nonnull %136, i64 noundef %.sink.i97, i64 noundef 8) #22, !noalias !301 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %7) call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %6) @@ -2123,7 +2123,7 @@ default.unreachable.i.i: ; preds = %"_ZN83_$LT$statrs.. br i1 %15, label %16, label %"_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i" 16: ; preds = %13 - tail call void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.2e0ec6afcc8886635c093ddcdbf46286.10.llvm.9554138872291501309) #20, !noalias !390 + tail call void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.2e0ec6afcc8886635c093ddcdbf46286.10.llvm.9554138872291501309) #21, !noalias !390 unreachable "_ZN83_$LT$statrs..distribution..empirical..NonNan$LT$T$GT$$u20$as$u20$core..cmp..Ord$GT$3cmp17hdd5fa4e5cc0ee790E.exit.i.i": ; preds = %13 @@ -2393,7 +2393,7 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc %8 = add i64 %.sroa.5.010, 1 %.not.i = icmp eq i64 %.sroa.5.010, 0 %..i = select i1 %.not.i, i64 192, i64 288 - tail call void @__rust_dealloc(ptr noundef nonnull %.sroa.02.09, i64 noundef %..i, i64 noundef 8) #21, !noalias !423 + tail call void @__rust_dealloc(ptr noundef nonnull %.sroa.02.09, i64 noundef %..i, i64 noundef 8) #22, !noalias !423 %9 = load ptr, ptr %7, align 8, !noalias !418, !noundef !4 %10 = icmp eq ptr %9, null br i1 %10, label %._crit_edge, label %.lr.ph @@ -2403,7 +2403,7 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc %.sroa.5.0.lcssa = phi i64 [ %3, %1 ], [ %8, %.lr.ph ] %.not.i7 = icmp eq i64 %.sroa.5.0.lcssa, 0 %..i8 = select i1 %.not.i7, i64 192, i64 288 - tail call void @__rust_dealloc(ptr noundef nonnull %.sroa.02.0.lcssa, i64 noundef %..i8, i64 noundef 8) #21, !noalias !423 + tail call void @__rust_dealloc(ptr noundef nonnull %.sroa.02.0.lcssa, i64 noundef %..i8, i64 noundef 8) #22, !noalias !423 ret void } @@ -2475,7 +2475,7 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc 27: ; preds = %.lr.ph %.not.i60 = icmp eq i64 %.sroa.5.065, 0 %..i61 = select i1 %.not.i60, i64 192, i64 288 - tail call void @__rust_dealloc(ptr noundef nonnull %.sroa.0.066, i64 noundef %..i61, i64 noundef 8) #21, !noalias !440 + tail call void @__rust_dealloc(ptr noundef nonnull %.sroa.0.066, i64 noundef %..i61, i64 noundef 8) #22, !noalias !440 store ptr null, ptr %0, align 8 br label %35 @@ -2485,7 +2485,7 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc %31 = load i16, ptr %30, align 8, !noalias !424 %.not.i = icmp eq i64 %.sroa.5.065, 0 %..i = select i1 %.not.i, i64 192, i64 288 - tail call void @__rust_dealloc(ptr noundef nonnull %.sroa.0.066, i64 noundef %..i, i64 noundef 8) #21, !noalias !440 + tail call void @__rust_dealloc(ptr noundef nonnull %.sroa.0.066, i64 noundef %..i, i64 noundef 8) #22, !noalias !440 %32 = getelementptr inbounds nuw i8, ptr %12, i64 186 %33 = load i16, ptr %32, align 2, !noundef !4 %34 = icmp ult i16 %31, %33 @@ -2495,13 +2495,14 @@ define hidden void @"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc ret void } -; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable -define hidden noundef nonnull align 8 ptr @"_ZN5alloc5boxed60Box$LT$core..mem..maybe_uninit..MaybeUninit$LT$T$GT$$C$A$GT$11assume_init17hf59c4dd4be8abaf6E.llvm.4547698320314000967"(ptr noalias noundef nonnull readnone returned align 8 %0) unnamed_addr #0 { +; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(inaccessiblemem: write) uwtable +define hidden noundef nonnull align 8 ptr @"_ZN5alloc5boxed60Box$LT$core..mem..maybe_uninit..MaybeUninit$LT$T$GT$$C$A$GT$11assume_init17hf59c4dd4be8abaf6E.llvm.4547698320314000967"(ptr noalias noundef nonnull returned align 8 %0) unnamed_addr #11 { + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 8) ] ret ptr %0 } ; Function Attrs: inlinehint nounwind nonlazybind uwtable -define hidden void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0315fd2d83659e8fE.llvm.4547698320314000967"(ptr noalias nocapture noundef nonnull readonly align 1 %0, ptr noundef nonnull %1, i64 noundef %2, i64 noundef %3) unnamed_addr #11 { +define hidden void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h0315fd2d83659e8fE.llvm.4547698320314000967"(ptr noalias nocapture noundef nonnull readonly align 1 %0, ptr noundef nonnull %1, i64 noundef %2, i64 noundef %3) unnamed_addr #12 { %5 = icmp eq i64 %3, 0 br i1 %5, label %9, label %6 @@ -2509,7 +2510,7 @@ define hidden void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allo %7 = add i64 %2, -1 %8 = icmp sgt i64 %7, -1 tail call void @llvm.assume(i1 %8) - tail call void @__rust_dealloc(ptr noundef nonnull %1, i64 noundef %3, i64 noundef %2) #21 + tail call void @__rust_dealloc(ptr noundef nonnull %1, i64 noundef %3, i64 noundef %2) #22 br label %9 9: ; preds = %4, %6 @@ -2529,12 +2530,12 @@ define hidden noundef ptr @"_ZN75_$LT$usize$u20$as$u20$core..slice..index..Slice } ; Function Attrs: inlinehint nounwind nonlazybind uwtable -define hidden void @"_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$17get_unchecked_mut18precondition_check17h4d8bb3cc09b636d4E.llvm.4547698320314000967"(i64 noundef %0, i64 noundef %1) unnamed_addr #11 { +define hidden void @"_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$17get_unchecked_mut18precondition_check17h4d8bb3cc09b636d4E.llvm.4547698320314000967"(i64 noundef %0, i64 noundef %1) unnamed_addr #12 { %3 = icmp ult i64 %0, %1 br i1 %3, label %5, label %4 4: ; preds = %2 - tail call void @_ZN4core9panicking14panic_nounwind17h23e6f792ad66b857E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.45.llvm.4547698320314000967, i64 noundef 101) #23 + tail call void @_ZN4core9panicking14panic_nounwind17h23e6f792ad66b857E(ptr noalias noundef nonnull readonly align 1 @anon.a535fe7ef364fcb4762aa7ab38aa75fd.45.llvm.4547698320314000967, i64 noundef 101) #24 unreachable 5: ; preds = %2 @@ -2542,43 +2543,43 @@ define hidden void @"_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$L } ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core5slice5index24slice_end_index_len_fail17h70ffde91723d2a46E(i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #12 +declare void @_ZN4core5slice5index24slice_end_index_len_fail17h70ffde91723d2a46E(i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #13 ; 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: cold noreturn nounwind nonlazybind uwtable -declare void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() unnamed_addr #13 +declare void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() unnamed_addr #14 ; Function Attrs: cold noreturn nounwind nonlazybind uwtable -declare void @_ZN4core9panicking14panic_nounwind17h23e6f792ad66b857E(ptr noalias noundef nonnull readonly align 1, i64 noundef) unnamed_addr #13 +declare void @_ZN4core9panicking14panic_nounwind17h23e6f792ad66b857E(ptr noalias noundef nonnull readonly align 1, i64 noundef) unnamed_addr #14 ; 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) #14 +declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #15 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #12 +declare void @_ZN4core6option13unwrap_failed17h4b4353bf890a85dfE(ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #13 ; 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 #12 +declare void @_ZN4core9panicking5panic17h75b3c9209f97d725E(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #13 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN4core9panicking9panic_fmt17hdc63834ffaaefae5E(ptr noalias nocapture noundef align 8 dereferenceable(48), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #12 +declare void @_ZN4core9panicking9panic_fmt17hdc63834ffaaefae5E(ptr noalias nocapture noundef align 8 dereferenceable(48), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #13 ; 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.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #14 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #15 ; Function Attrs: nounwind nonlazybind allockind("free") uwtable -declare void @__rust_dealloc(ptr allocptr noundef, i64 noundef, i64 noundef) unnamed_addr #16 +declare void @__rust_dealloc(ptr allocptr noundef, i64 noundef, i64 noundef) unnamed_addr #17 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #17 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #18 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #17 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #18 ; Function Attrs: nonlazybind uwtable declare void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf998d56754bc4ea7E"(ptr noalias noundef nonnull align 1) unnamed_addr #1 @@ -2587,16 +2588,16 @@ declare void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20 declare hidden noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hb739fef19c5bff8aE.llvm.12303340874314762014"() unnamed_addr #1 ; Function Attrs: cold noreturn nonlazybind uwtable -declare void @_ZN5alloc5alloc18handle_alloc_error17hc735483c05842e7cE(i64 noundef, i64 noundef) unnamed_addr #12 +declare void @_ZN5alloc5alloc18handle_alloc_error17hc735483c05842e7cE(i64 noundef, i64 noundef) unnamed_addr #13 ; Function Attrs: nonlazybind uwtable declare hidden noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h5ef964de9c8ff062E.llvm.12303340874314762014"() unnamed_addr #1 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #18 +declare void @llvm.experimental.noalias.scope.decl(metadata) #19 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) -declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #19 +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #20 attributes #0 = { inlinehint 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" } @@ -2609,19 +2610,20 @@ attributes #7 = { mustprogress nofree norecurse nosync nounwind nonlazybind will attributes #8 = { nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #9 = { nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #10 = { nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #11 = { inlinehint nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #12 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #13 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #14 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #15 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #16 = { nounwind nonlazybind allockind("free") uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #17 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #18 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #19 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #20 = { noreturn } -attributes #21 = { nounwind } -attributes #22 = { cold noreturn nounwind } -attributes #23 = { noreturn nounwind } +attributes #11 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #12 = { inlinehint nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #13 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #14 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #15 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #16 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #17 = { nounwind nonlazybind allockind("free") uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #18 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #19 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #20 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #21 = { noreturn } +attributes #22 = { nounwind } +attributes #23 = { cold noreturn nounwind } +attributes #24 = { noreturn nounwind } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} 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/2tga7oe2tfdpj05w.ll b/bench/syn/optimized/2tga7oe2tfdpj05w.ll index 26f4f65534d..fdbc014f11d 100644 --- a/bench/syn/optimized/2tga7oe2tfdpj05w.ll +++ b/bench/syn/optimized/2tga7oe2tfdpj05w.ll @@ -1923,12 +1923,14 @@ define hidden void @_ZN3syn4path8printing10print_path17h3f3d7e99b2afb1d3E(ptr no br i1 %16, label %17, label %19 17: ; preds = %"_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17h2f65737e4172ea54E.exit.i" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.638.0, i64 8) ] %18 = icmp eq ptr %.sroa.638.0, null br i1 %18, label %"_ZN71_$LT$proc_macro2..TokenStream$u20$as$u20$quote..ext..TokenStreamExt$GT$10append_all17h09d17c6e2a5dc992E.exit", label %36 19: ; preds = %"_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17h2f65737e4172ea54E.exit.i" %20 = getelementptr inbounds nuw i8, ptr %.sroa.036.0.ph, i64 104 %21 = getelementptr inbounds nuw i8, ptr %.sroa.036.0.ph, i64 96 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.036.0.ph, i64 8) ] tail call void @"_ZN65_$LT$proc_macro2..Ident$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17h629b5813b48ddffcE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(96) %.sroa.036.0.ph, ptr noalias noundef nonnull align 8 dereferenceable(32) %0), !noalias !384 %22 = getelementptr inbounds nuw i8, ptr %.sroa.036.0.ph, i64 32 %23 = load i64, ptr %22, align 8, !range !77, !alias.scope !388, !noalias !391, !noundef !7 @@ -1967,10 +1969,12 @@ default.unreachable: ; preds = %165, %150, %135, %1 br label %"_ZN52_$LT$$RF$T$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17hb7b85498f870a015E.exit13" "_ZN52_$LT$$RF$T$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17hb7b85498f870a015E.exit13": ; preds = %19, %33, %28, %26 + call void @llvm.assume(i1 true) [ "align"(ptr %21, i64 4) ] tail call void @_ZN3syn5token8printing5punct17h32409e3f9cc0b330E(ptr noalias noundef nonnull readonly align 1 @anon.e4fd49bda13fc8b05702603de3f8b493.170.llvm.15435319159651575738, i64 noundef 2, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %21, i64 noundef 2, ptr noalias noundef nonnull align 8 dereferenceable(32) %0), !noalias !398 br label %"_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17h2f65737e4172ea54E.exit.i.outer" 36: ; preds = %17 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.638.0, i64 8) ] tail call void @"_ZN65_$LT$proc_macro2..Ident$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17h629b5813b48ddffcE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(96) %.sroa.638.0, ptr noalias noundef nonnull align 8 dereferenceable(32) %0), !noalias !401 %37 = getelementptr inbounds nuw i8, ptr %.sroa.638.0, i64 32 %38 = load i64, ptr %37, align 8, !range !77, !alias.scope !404, !noalias !407, !noundef !7 @@ -2136,6 +2140,7 @@ default.unreachable: ; preds = %165, %150, %135, %1 br i1 %99, label %100, label %103 100: ; preds = %"_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17h2f65737e4172ea54E.exit" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.6.0.ph, i64 8) ] %101 = icmp eq ptr %.sroa.6.0.ph, null br i1 %101, label %102, label %120 @@ -2146,6 +2151,7 @@ default.unreachable: ; preds = %165, %150, %135, %1 103: ; preds = %"_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17h2f65737e4172ea54E.exit" %104 = getelementptr inbounds nuw i8, ptr %.sroa.026.0, i64 104 %105 = getelementptr inbounds nuw i8, ptr %.sroa.026.0, i64 96 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.026.0, i64 8) ] tail call void @"_ZN65_$LT$proc_macro2..Ident$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17h629b5813b48ddffcE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(96) %.sroa.026.0, ptr noalias noundef nonnull align 8 dereferenceable(32) %0), !noalias !472 %106 = getelementptr inbounds nuw i8, ptr %.sroa.026.0, i64 32 %107 = load i64, ptr %106, align 8, !range !77, !alias.scope !475, !noalias !478, !noundef !7 @@ -2178,10 +2184,12 @@ default.unreachable: ; preds = %165, %150, %135, %1 br label %"_ZN3syn4path8printing81_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..path..PathArguments$GT$9to_tokens17h9597255c2fe3aa38E.exit16" "_ZN3syn4path8printing81_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..path..PathArguments$GT$9to_tokens17h9597255c2fe3aa38E.exit16": ; preds = %112, %117, %103, %110 + call void @llvm.assume(i1 true) [ "align"(ptr %105, i64 4) ] tail call void @_ZN3syn5token8printing5punct17h32409e3f9cc0b330E(ptr noalias noundef nonnull readonly align 1 @anon.e4fd49bda13fc8b05702603de3f8b493.170.llvm.15435319159651575738, i64 noundef 2, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %105, i64 noundef 2, ptr noalias noundef nonnull align 8 dereferenceable(32) %0), !noalias !485 br label %"_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17h2f65737e4172ea54E.exit" 120: ; preds = %100 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.6.0.ph, i64 8) ] tail call void @"_ZN65_$LT$proc_macro2..Ident$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17h629b5813b48ddffcE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(96) %.sroa.6.0.ph, ptr noalias noundef nonnull align 8 dereferenceable(32) %0), !noalias !488 %121 = getelementptr inbounds nuw i8, ptr %.sroa.6.0.ph, i64 32 %122 = load i64, ptr %121, align 8, !range !77, !alias.scope !491, !noalias !494, !noundef !7 @@ -2222,6 +2230,7 @@ default.unreachable: ; preds = %165, %150, %135, %1 br label %"_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17h2f65737e4172ea54E.exit.outer.backedge" 135: ; preds = %91 + call void @llvm.assume(i1 true) [ "align"(ptr %86, i64 8) ] tail call void @"_ZN65_$LT$proc_macro2..Ident$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17h629b5813b48ddffcE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(96) %86, ptr noalias noundef nonnull align 8 dereferenceable(32) %0), !noalias !501 %136 = getelementptr inbounds nuw i8, ptr %86, i64 32 %137 = load i64, ptr %136, align 8, !range !77, !alias.scope !504, !noalias !507, !noundef !7 @@ -2254,6 +2263,7 @@ default.unreachable: ; preds = %165, %150, %135, %1 br label %"_ZN3syn4path8printing81_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..path..PathArguments$GT$9to_tokens17h9597255c2fe3aa38E.exit20" "_ZN3syn4path8printing81_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..path..PathArguments$GT$9to_tokens17h9597255c2fe3aa38E.exit20": ; preds = %135, %142, %147, %140 + call void @llvm.assume(i1 true) [ "align"(ptr %93, i64 4) ] tail call void @_ZN3syn5token8printing5punct17h32409e3f9cc0b330E(ptr noalias noundef nonnull readonly align 1 @anon.e4fd49bda13fc8b05702603de3f8b493.170.llvm.15435319159651575738, i64 noundef 2, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %93, i64 noundef 2, ptr noalias noundef nonnull align 8 dereferenceable(32) %0), !noalias !514 br label %"_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17h2f65737e4172ea54E.exit8" @@ -2294,6 +2304,7 @@ default.unreachable: ; preds = %165, %150, %135, %1 %166 = phi ptr [ null, %.thread104 ], [ %85, %91 ] %167 = phi ptr [ %86, %.thread104 ], [ %92, %91 ] %.sroa.65.1.i111 = phi ptr [ %85, %.thread104 ], [ %86, %91 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.65.1.i111, i64 8) ] tail call void @"_ZN65_$LT$proc_macro2..Ident$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17h629b5813b48ddffcE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(96) %.sroa.65.1.i111, ptr noalias noundef nonnull align 8 dereferenceable(32) %0) %168 = getelementptr inbounds nuw i8, ptr %.sroa.65.1.i111, i64 32 %169 = load i64, ptr %168, align 8, !range !77, !alias.scope !530, !noalias !533, !noundef !7 @@ -2331,6 +2342,7 @@ default.unreachable: ; preds = %165, %150, %135, %1 br i1 %182, label %"_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17h2f65737e4172ea54E.exit8", label %183 183: ; preds = %"_ZN3syn4path8printing81_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..path..PathArguments$GT$9to_tokens17h9597255c2fe3aa38E.exit" + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.5.0, i64 4) ] tail call void @_ZN3syn5token8printing5punct17h32409e3f9cc0b330E(ptr noalias noundef nonnull readonly align 1 @anon.e4fd49bda13fc8b05702603de3f8b493.170.llvm.15435319159651575738, i64 noundef 2, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %.sroa.5.0, i64 noundef 2, ptr noalias noundef nonnull align 8 dereferenceable(32) %0), !noalias !540 br label %"_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17h2f65737e4172ea54E.exit8" @@ -7083,6 +7095,7 @@ define void @"_ZN3syn2ty8printing76_$LT$impl$u20$quote..to_tokens..ToTokens$u20$ br i1 %.not.i.i.i, label %"_ZN76_$LT$core..option..Option$LT$T$GT$$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17h7f8d690da69f98e1E.exit", label %18 18: ; preds = %13 + call void @llvm.assume(i1 true) [ "align"(ptr %17, i64 8) ] tail call void @"_ZN67_$LT$proc_macro2..Literal$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17h7c70447656a4ea74E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %17, ptr noalias noundef nonnull align 8 dereferenceable(32) %1), !noalias !1434 br label %"_ZN76_$LT$core..option..Option$LT$T$GT$$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17h7f8d690da69f98e1E.exit" @@ -7104,6 +7117,7 @@ define void @"_ZN3syn2ty8printing76_$LT$impl$u20$quote..to_tokens..ToTokens$u20$ 25: ; preds = %"_ZN76_$LT$core..option..Option$LT$T$GT$$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17h7f8d690da69f98e1E.exit" %26 = getelementptr inbounds nuw i8, ptr %0, i64 208 tail call void @_ZN3syn5token8printing5punct17h32409e3f9cc0b330E(ptr noalias noundef nonnull readonly align 1 @anon.e4fd49bda13fc8b05702603de3f8b493.184.llvm.15435319159651575738, i64 noundef 2, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %26, i64 noundef 2, ptr noalias noundef nonnull align 8 dereferenceable(32) %1) + call void @llvm.assume(i1 true) [ "align"(ptr %23, i64 8) ] tail call void @"_ZN60_$LT$syn..ty..Type$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17hfe21a6835586d0a0E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(232) %23, ptr noalias noundef nonnull align 8 dereferenceable(32) %1) br label %"_ZN3syn2ty8printing76_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..ty..ReturnType$GT$9to_tokens17hb84ba198f484be70E.exit" @@ -7295,6 +7309,7 @@ define void @"_ZN3syn2ty8printing76_$LT$impl$u20$quote..to_tokens..ToTokens$u20$ 6: ; preds = %2 %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 tail call void @_ZN3syn5token8printing5punct17h32409e3f9cc0b330E(ptr noalias noundef nonnull readonly align 1 @anon.e4fd49bda13fc8b05702603de3f8b493.184.llvm.15435319159651575738, i64 noundef 2, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %7, i64 noundef 2, ptr noalias noundef nonnull align 8 dereferenceable(32) %1) + call void @llvm.assume(i1 true) [ "align"(ptr %3, i64 8) ] tail call void @"_ZN60_$LT$syn..ty..Type$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17hfe21a6835586d0a0E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(232) %3, ptr noalias noundef nonnull align 8 dereferenceable(32) %1) br label %5 } @@ -7441,6 +7456,7 @@ define void @"_ZN3syn2ty8printing69_$LT$impl$u20$quote..to_tokens..ToTokens$u20$ br i1 %.not.i, label %"_ZN76_$LT$core..option..Option$LT$T$GT$$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17hac216d7632330744E.exit", label %7 7: ; preds = %2 + call void @llvm.assume(i1 true) [ "align"(ptr %6, i64 8) ] tail call void @"_ZN67_$LT$proc_macro2..Literal$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17h7c70447656a4ea74E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %6, ptr noalias noundef nonnull align 8 dereferenceable(32) %1), !noalias !1593 br label %"_ZN76_$LT$core..option..Option$LT$T$GT$$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17hac216d7632330744E.exit" @@ -7753,6 +7769,7 @@ tailrecurse: ; preds = %tailrecurse.backedg br i1 %.not.i.i.i, label %"_ZN76_$LT$core..option..Option$LT$T$GT$$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17h7f8d690da69f98e1E.exit", label %34 34: ; preds = %29 + call void @llvm.assume(i1 true) [ "align"(ptr %33, i64 8) ] tail call void @"_ZN67_$LT$proc_macro2..Literal$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17h7c70447656a4ea74E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %33, ptr noalias noundef nonnull align 8 dereferenceable(32) %1), !noalias !1676 br label %"_ZN76_$LT$core..option..Option$LT$T$GT$$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17h7f8d690da69f98e1E.exit" @@ -7966,6 +7983,7 @@ define { ptr, i32 } @"_ZN3syn3gen5clone61_$LT$impl$u20$core..clone..Clone$u20$fo "_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h526d38d5390f744fE.exit.i.i": ; preds = %8 store ptr %9, ptr %3, align 8, !noalias !1809 + call void @llvm.assume(i1 true) [ "align"(ptr %6, i64 8) ] call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %2), !noalias !1814 invoke void @"_ZN56_$LT$syn..lit..LitRepr$u20$as$u20$core..clone..Clone$GT$5clone17h163acc8b1bff4017E"(ptr noalias nocapture noundef nonnull sret({ { { i64, [2 x i64] }, { {} } }, { ptr, i64 } }) align 8 dereferenceable(40) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(40) %6) to label %"_ZN55_$LT$syn..lit..LitStr$u20$as$u20$core..clone..Clone$GT$5clone17hbdf03887992dcb1fE.exit" unwind label %12, !noalias !1809 @@ -8259,6 +8277,7 @@ define void @"_ZN3syn3gen5clone68_$LT$impl$u20$core..clone..Clone$u20$for$u20$sy unreachable "_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h0f51f5435f5c3356E.exit.i": ; preds = %6 + call void @llvm.assume(i1 true) [ "align"(ptr %4, i64 8) ] call void @llvm.lifetime.start.p0(i64 232, ptr nonnull %3), !noalias !1895 invoke void @"_ZN3syn3gen5clone62_$LT$impl$u20$core..clone..Clone$u20$for$u20$syn..ty..Type$GT$5clone17hf076099abd821f63E"(ptr noalias nocapture noundef nonnull sret({ i64, [28 x i64] }) align 8 dereferenceable(232) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(232) %4) to label %"_ZN69_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h092bf025986c184eE.llvm.6869783157916488305.exit" unwind label %11, !noalias !1892 @@ -9215,6 +9234,7 @@ common.resume: ; preds = %45, %.body, %32 "_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h526d38d5390f744fE.exit.i.i.i": ; preds = %.noexc8 store ptr %55, ptr %8, align 8, !noalias !2146 + call void @llvm.assume(i1 true) [ "align"(ptr %52, i64 8) ] call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7), !noalias !2151 invoke void @"_ZN56_$LT$syn..lit..LitRepr$u20$as$u20$core..clone..Clone$GT$5clone17h163acc8b1bff4017E"(ptr noalias nocapture noundef nonnull sret({ { { i64, [2 x i64] }, { {} } }, { ptr, i64 } }) align 8 dereferenceable(40) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(40) %52) to label %"_ZN55_$LT$syn..lit..LitStr$u20$as$u20$core..clone..Clone$GT$5clone17hbdf03887992dcb1fE.exit.i" unwind label %58, !noalias !2146 @@ -9295,6 +9315,7 @@ common.resume: ; preds = %45, %.body, %32 "_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h56f052787d7cbac5E.exit.i": ; preds = %.noexc17 store ptr %78, ptr %5, align 8, !noalias !2168 + call void @llvm.assume(i1 true) [ "align"(ptr %75, i64 8) ] call void @llvm.lifetime.start.p0(i64 296, ptr nonnull %4), !noalias !2171 invoke void @"_ZN3syn3gen5clone67_$LT$impl$u20$core..clone..Clone$u20$for$u20$syn..ty..BareFnArg$GT$5clone17he4b48144158e5d68E"(ptr noalias nocapture noundef nonnull sret({ { i64, [28 x i64] }, { { i64, ptr }, i64 }, { i64, [4 x i64] } }) align 8 dereferenceable(296) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(296) %75) to label %"_ZN69_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h0b0585b3cddb032aE.llvm.14145919710250835280.exit" unwind label %81, !noalias !2168 @@ -9378,6 +9399,7 @@ common.resume: ; preds = %45, %.body, %32 unreachable "_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h0f51f5435f5c3356E.exit.i": ; preds = %.noexc22 + call void @llvm.assume(i1 true) [ "align"(ptr %98, i64 8) ] call void @llvm.lifetime.start.p0(i64 232, ptr nonnull %3), !noalias !2182 invoke void @"_ZN3syn3gen5clone62_$LT$impl$u20$core..clone..Clone$u20$for$u20$syn..ty..Type$GT$5clone17hf076099abd821f63E"(ptr noalias nocapture noundef nonnull sret({ i64, [28 x i64] }) align 8 dereferenceable(232) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(232) %98) to label %.noexc15 unwind label %104, !noalias !2187 diff --git a/bench/syn/optimized/akcjbpenbinfer0.ll b/bench/syn/optimized/akcjbpenbinfer0.ll index e35d8465584..850fc1e90cd 100644 --- a/bench/syn/optimized/akcjbpenbinfer0.ll +++ b/bench/syn/optimized/akcjbpenbinfer0.ll @@ -223,7 +223,7 @@ _ZN4core4iter6traits8iterator8Iterator4fold17hd27f8abe80c8d768E.llvm.17896666486 define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h3b43c342d9a15178E"(ptr noalias nocapture noundef readonly align 8 dereferenceable(48) %0, ptr noalias noundef align 8 dereferenceable(24) %1) unnamed_addr #1 personality ptr @rust_eh_personality { %3 = alloca { { i64, [4 x i64] }, { {} } }, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 40 - %.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 !40, !noundef !4 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %3), !noalias !66 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 8 dereferenceable(40) %0, i64 40, i1 false), !noalias !70 call void @_ZN4core4iter6traits8iterator8Iterator4fold17h7b413074c53da909E.llvm.17896666486873179654(ptr noalias nocapture noundef nonnull align 8 dereferenceable(40) %3, ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias noundef nonnull readonly align 4 dereferenceable(4) %.sroa.4.0.copyload), !noalias !71 @@ -448,6 +448,7 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ 13: ; preds = %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h596213f57c7a3bf7E.exit.i", %8 %.0.i = phi i64 [ 0, %8 ], [ %24, %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h596213f57c7a3bf7E.exit.i" ] %14 = getelementptr inbounds { { { { i64, ptr }, i64 } }, { i64, { i32, i32 } } }, ptr %0, i64 %.0.i + call void @llvm.assume(i1 true) [ "align"(ptr %14, i64 8) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %.sroa.0.i.i), !noalias !172 call void @_ZN3syn5error12ErrorMessage16to_compile_error17h419302d4f4714544E(ptr noalias nocapture noundef nonnull sret({ { i64, [3 x i64] }, { {} } }) align 8 dereferenceable(32) %.sroa.0.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(40) %14) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !177 @@ -485,6 +486,9 @@ common.resume.i.i.i.i.i: ; preds = %19 %23 = call noundef i32 @_ZN11proc_macro23imp19DeferredTokenStream17into_token_stream17h48bc2da7588143a3E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %4), !noalias !186 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4), !noalias !177 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !177 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] tail call void @_ZN10proc_macro19ConcatStreamsHelper4push17hec86a0005d9d5b64E(ptr noalias noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %23), !noalias !187 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.0.i.i), !noalias !172 %24 = add nuw i64 %.0.i, 1 @@ -1911,6 +1915,9 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator4fold17h7b413074c53da9 .noexc2: ; preds = %.noexc call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !536 + call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] invoke void @_ZN10proc_macro17ConcatTreesHelper4push17h4e5efa0006ba00e5E(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, ptr noalias nocapture noundef nonnull align 4 dereferenceable(20) %4) to label %15 unwind label %10 @@ -2665,7 +2672,7 @@ define hidden noundef zeroext i1 @"_ZN60_$LT$alloc..string..String$u20$as$u20$co ; Function Attrs: inlinehint nonlazybind uwtable define hidden void @"_ZN64_$LT$core..fmt..Arguments$u20$as$u20$alloc..string..ToString$GT$9to_string17h562b7f62fc3b256cE.llvm.17896666486873179654"(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 #4 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 !81, !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 @@ -3080,6 +3087,7 @@ define hidden void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core. 13: ; preds = %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h596213f57c7a3bf7E.exit", %8 %.0 = phi i64 [ 0, %8 ], [ %24, %"_ZN4core4iter8adapters3map8map_fold28_$u7b$$u7b$closure$u7d$$u7d$17h596213f57c7a3bf7E.exit" ] %14 = getelementptr inbounds { { { { i64, ptr }, i64 } }, { i64, { i32, i32 } } }, ptr %0, i64 %.0 + call void @llvm.assume(i1 true) [ "align"(ptr %14, i64 8) ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %.sroa.0.i), !noalias !870 call void @_ZN3syn5error12ErrorMessage16to_compile_error17h419302d4f4714544E(ptr noalias nocapture noundef nonnull sret({ { i64, [3 x i64] }, { {} } }) align 8 dereferenceable(32) %.sroa.0.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(40) %14) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !873 @@ -3117,6 +3125,9 @@ common.resume.i.i.i.i: ; preds = %19 %23 = call noundef i32 @_ZN11proc_macro23imp19DeferredTokenStream17into_token_stream17h48bc2da7588143a3E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %4), !noalias !881 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4), !noalias !873 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !873 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] tail call void @_ZN10proc_macro19ConcatStreamsHelper4push17hec86a0005d9d5b64E(ptr noalias noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %23), !noalias !882 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.0.i), !noalias !870 %24 = add nuw i64 %.0, 1 @@ -3859,7 +3870,7 @@ define hidden void @_ZN3syn5error5Error3new17hb06561b4d7735d66E.llvm.17896666486 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) tail call void @llvm.experimental.noalias.scope.decl(metadata !997) tail call void @llvm.experimental.noalias.scope.decl(metadata !1000) - %.sroa.0.0.copyload.i = load ptr, ptr %2, align 8, !alias.scope !1000, !noalias !997, !nonnull !4, !noundef !4 + %.sroa.0.0.copyload.i = load ptr, ptr %2, align 8, !alias.scope !1000, !noalias !997, !nonnull !4, !align !81, !noundef !4 %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %2, i64 8 %.sroa.5.0.copyload.i = load i64, ptr %.sroa.5.0..sroa_idx.i, align 8, !alias.scope !1000, !noalias !997 %.sroa.6.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %2, i64 16 @@ -4143,7 +4154,7 @@ define hidden void @_ZN3syn5error6new_at17h65fa782fc0e1d257E(ptr noalias nocaptu _ZN3syn6buffer18open_span_of_group17h1ccaea0f87130d8fE.exit: ; preds = %17, %22 %.0.i = phi i32 [ %.03.i, %17 ], [ %23, %22 ] - %.sroa.03.0.copyload = load ptr, ptr %4, align 8, !nonnull !4, !noundef !4 + %.sroa.03.0.copyload = load ptr, ptr %4, align 8, !nonnull !4, !align !81, !noundef !4 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 %.sroa.4.0.copyload = load i64, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.54.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 16 diff --git a/bench/tls-rs/optimized/1edtspt3qu76t3sp.ll b/bench/tls-rs/optimized/1edtspt3qu76t3sp.ll index df0331f3a48..713f1bddbcd 100644 --- a/bench/tls-rs/optimized/1edtspt3qu76t3sp.ll +++ b/bench/tls-rs/optimized/1edtspt3qu76t3sp.ll @@ -459,6 +459,7 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i: ; preds = %14, %_ZN3 br i1 %.not.i, label %"_ZN4core3ptr94drop_in_place$LT$std..sync..mutex..MutexGuard$LT$rustls..key_log_file..KeyLogFileInner$GT$$GT$17he11d5345cec3d6bdE.exit", label %18 18: ; preds = %17 + call void @llvm.assume(i1 true) [ "align"(ptr %.val, i64 8) ] %19 = icmp ne ptr %.val, null tail call void @llvm.assume(i1 %19) %20 = getelementptr inbounds nuw i8, ptr %.val, i64 4 @@ -549,8 +550,10 @@ define internal fastcc void @"_ZN4core3ptr75drop_in_place$LT$core..option..Optio ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr94drop_in_place$LT$std..sync..mutex..MutexGuard$LT$rustls..key_log_file..KeyLogFileInner$GT$$GT$17he11d5345cec3d6bdE"(ptr %.0.val, i8 %.8.val) unnamed_addr #0 { + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %1 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %1) + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %2 = getelementptr inbounds nuw i8, ptr %.0.val, i64 4 %3 = trunc nuw i8 %.8.val to i1 br i1 %3, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i, label %4 @@ -566,10 +569,11 @@ _ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i: ; pr br i1 %8, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i, label %9 9: ; preds = %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i - store atomic i8 1, ptr %2 monotonic, align 1 + store atomic i8 1, ptr %2 monotonic, align 4 br label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i: ; preds = %9, %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i, %4, %0 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %10 = atomicrmw xchg ptr %.0.val, i32 0 release, align 4 %11 = icmp eq i32 %10, 2 br i1 %11, label %12, label %"_ZN79_$LT$std..sync..mutex..MutexGuard$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h142f230b86198cb1E.exit" @@ -4641,10 +4645,12 @@ define hidden void @"_ZN78_$LT$rustls_pki_types..server_name..ServerName$u20$as$ "_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.thread.i.i.i": ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.i.i.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93b41e20ba2d2ab6E.exit15.i.i.i.i.i", %26, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93b41e20ba2d2ab6E.exit13.i.i.i.i.i" %48 = phi i32 [ %47, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.i.i.i" ], [ %27, %26 ], [ %36, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93b41e20ba2d2ab6E.exit15.i.i.i.i.i" ], [ %24, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93b41e20ba2d2ab6E.exit13.i.i.i.i.i" ] %.sroa.0.16.i.i.i = phi ptr [ %39, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.i.i.i" ], [ %13, %26 ], [ %29, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93b41e20ba2d2ab6E.exit15.i.i.i.i.i" ], [ %19, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93b41e20ba2d2ab6E.exit13.i.i.i.i.i" ] + call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] %49 = add nsw i32 %48, -65 %.0.i.i.i.i.i = icmp ult i32 %49, 26 %50 = xor i32 %48, 32 %.07.i.i.i.i.i = select i1 %.0.i.i.i.i.i, i32 %50, i32 %48 + call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6), !noalias !651 store i32 %.07.i.i.i.i.i, ptr %6, align 4, !noalias !651 call void @"_ZN71_$LT$core..hash..sip..Hasher$LT$S$GT$$u20$as$u20$core..hash..Hasher$GT$5write17h7925d4ba07e1b311E.llvm.13587593001660552149"(ptr noalias noundef nonnull align 8 dereferenceable(72) %1, ptr noalias noundef nonnull readonly align 1 %6, i64 noundef 4), !noalias !637 @@ -4706,7 +4712,7 @@ define hidden void @_ZN7zeroize12volatile_set17h0a807955659c12ebE.llvm.135875930 } ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: write) uwtable -define hidden void @"_ZN80_$LT$rustls_pki_types..server_name..DnsNameInner$u20$as$u20$core..hash..Hash$GT$4hash17hdd36404d733a0b26E.llvm.13587593001660552149"(ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %0, ptr noalias nocapture noundef align 8 dereferenceable(72) %1) unnamed_addr #18 personality ptr @rust_eh_personality { +define hidden void @"_ZN80_$LT$rustls_pki_types..server_name..DnsNameInner$u20$as$u20$core..hash..Hash$GT$4hash17hdd36404d733a0b26E.llvm.13587593001660552149"(ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %0, ptr noalias noundef align 8 dereferenceable(72) %1) unnamed_addr #18 personality ptr @rust_eh_personality { %3 = alloca [4 x i8], align 4 %.sroa.3.0.in = getelementptr inbounds nuw i8, ptr %0, i64 16 %.sroa.3.0 = load i64, ptr %.sroa.3.0.in, align 8, !noundef !4 @@ -4773,10 +4779,12 @@ define hidden void @"_ZN80_$LT$rustls_pki_types..server_name..DnsNameInner$u20$a "_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.thread.i.i": ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.i.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93b41e20ba2d2ab6E.exit15.i.i.i.i", %19, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93b41e20ba2d2ab6E.exit13.i.i.i.i" %41 = phi i32 [ %40, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.i.i" ], [ %20, %19 ], [ %29, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93b41e20ba2d2ab6E.exit15.i.i.i.i" ], [ %17, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93b41e20ba2d2ab6E.exit13.i.i.i.i" ] %.sroa.0.16.i.i = phi ptr [ %32, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E.exit.i.i" ], [ %6, %19 ], [ %22, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93b41e20ba2d2ab6E.exit15.i.i.i.i" ], [ %12, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h93b41e20ba2d2ab6E.exit13.i.i.i.i" ] + call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] %42 = add nsw i32 %41, -65 %.0.i.i.i.i = icmp ult i32 %42, 26 %43 = xor i32 %41, 32 %.07.i.i.i.i = select i1 %.0.i.i.i.i, i32 %43, i32 %41 + call void @llvm.assume(i1 true) [ "align"(ptr %1, i64 8) ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3), !noalias !691 store i32 %.07.i.i.i.i, ptr %3, align 4, !noalias !691 call void @"_ZN71_$LT$core..hash..sip..Hasher$LT$S$GT$$u20$as$u20$core..hash..Hasher$GT$5write17h7925d4ba07e1b311E.llvm.13587593001660552149"(ptr noalias noundef nonnull align 8 dereferenceable(72) %1, ptr noalias noundef nonnull readonly align 1 %3, i64 noundef 4) @@ -6234,6 +6242,7 @@ _ZN3std2io5error5Error14is_interrupted17h943f3f95534b9a0eE.exit.i: ; preds = %17 .body: ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %155, %141, %114, %100, %72, %200, %208, %226 %.pn = phi { ptr, i32 } [ %227, %226 ], [ %73, %72 ], [ %101, %100 ], [ %115, %114 ], [ %142, %141 ], [ %156, %155 ], [ %201, %208 ], [ %201, %200 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit60, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit63, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 8) ] invoke fastcc void @"_ZN4core3ptr94drop_in_place$LT$std..sync..mutex..MutexGuard$LT$rustls..key_log_file..KeyLogFileInner$GT$$GT$17he11d5345cec3d6bdE"(ptr nonnull %0, i8 %.0.i.i.i) #38 to label %common.resume unwind label %243 @@ -6263,6 +6272,9 @@ _ZN3std2io5error5Error14is_interrupted17h943f3f95534b9a0eE.exit.i: ; preds = %17 br label %215 215: ; preds = %.loopexit59, %242 + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 8) ] %216 = trunc nuw i8 %.0.i.i.i to i1 br i1 %216, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i, label %217 @@ -6281,6 +6293,7 @@ _ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i.i: ; br label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i: ; preds = %222, %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i.i, %217, %215 + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 8) ] %223 = atomicrmw xchg ptr %0, i32 0 release, align 4 %224 = icmp eq i32 %223, 2 br i1 %224, label %225, label %"_ZN4core3ptr94drop_in_place$LT$std..sync..mutex..MutexGuard$LT$rustls..key_log_file..KeyLogFileInner$GT$$GT$17he11d5345cec3d6bdE.exit" @@ -7393,7 +7406,7 @@ attributes #38 = { cold } !639 = distinct !{!639, !"_ZN80_$LT$rustls_pki_types..server_name..DnsNameInner$u20$as$u20$core..hash..Hash$GT$4hash17hdd36404d733a0b26E.llvm.13587593001660552149"} !640 = !{!641} !641 = distinct !{!641, !639, !"_ZN80_$LT$rustls_pki_types..server_name..DnsNameInner$u20$as$u20$core..hash..Hash$GT$4hash17hdd36404d733a0b26E.llvm.13587593001660552149: argument 1"} -!642 = !{!643, !645, !647, !649, !638, !641} +!642 = !{!643, !645, !647, !649, !638} !643 = distinct !{!643, !644, !"_ZN4core3str11validations15next_code_point17h0b0f88f47f396365E: argument 0"} !644 = distinct !{!644, !"_ZN4core3str11validations15next_code_point17h0b0f88f47f396365E"} !645 = distinct !{!645, !646, !"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he0b58399accd0681E: argument 0"} diff --git a/bench/tls-rs/optimized/z2cy5bf5cayilz9.ll b/bench/tls-rs/optimized/z2cy5bf5cayilz9.ll index b6155d35950..c1f6b594739 100644 --- a/bench/tls-rs/optimized/z2cy5bf5cayilz9.ll +++ b/bench/tls-rs/optimized/z2cy5bf5cayilz9.ll @@ -4971,9 +4971,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 @@ -5493,9 +5495,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 @@ -6277,6 +6281,7 @@ define hidden void @"_ZN6rustls4conn28ConnectionCommon$LT$Data$GT$25dangerous_ex call void @llvm.lifetime.start.p0(i64 39, ptr nonnull %.sroa.728) call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %.sroa.931) call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %11) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.6.0.copyload, i64 8) ] %23 = icmp ne ptr %.sroa.6.0.copyload, null tail call void @llvm.assume(i1 %23) %24 = getelementptr inbounds nuw i8, ptr %.sroa.6.0.copyload, i64 40 @@ -6347,6 +6352,7 @@ define hidden void @"_ZN6rustls4conn28ConnectionCommon$LT$Data$GT$25dangerous_ex 40: ; preds = %41, %26 %.pn86 = phi { ptr, i32 } [ %42, %41 ], [ %27, %26 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.6.0.copyload, i64 8) ] invoke fastcc void @"_ZN4core3ptr138drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$rustls..common_state..State$LT$rustls..client..client_conn..ClientConnectionData$GT$$GT$$GT$17h10058c092a43a95aE"(ptr nonnull %.sroa.515.0.copyload, ptr nonnull %.sroa.6.0.copyload) #27 to label %.critedge unwind label %151 @@ -6357,6 +6363,7 @@ define hidden void @"_ZN6rustls4conn28ConnectionCommon$LT$Data$GT$25dangerous_ex 43: ; preds = %35 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %12) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.6.0.copyload, i64 8) ] %44 = load ptr, ptr %.sroa.6.0.copyload, align 8, !invariant.load !4, !nonnull !4 invoke void %44(ptr noundef nonnull align 1 %.sroa.515.0.copyload) to label %54 unwind label %45 @@ -6657,6 +6664,7 @@ define hidden void @"_ZN6rustls4conn28ConnectionCommon$LT$Data$GT$25dangerous_ex 153: ; preds = %31 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %12) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.6.0.copyload, i64 8) ] %154 = load ptr, ptr %.sroa.6.0.copyload, align 8, !invariant.load !4, !nonnull !4 invoke void %154(ptr noundef nonnull align 1 %.sroa.515.0.copyload) to label %164 unwind label %155 @@ -7196,6 +7204,7 @@ define hidden void @"_ZN6rustls4conn28ConnectionCommon$LT$Data$GT$25dangerous_ex call void @llvm.lifetime.start.p0(i64 39, ptr nonnull %.sroa.728) call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %.sroa.931) call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %11) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.6.0.copyload, i64 8) ] %26 = getelementptr inbounds nuw i8, ptr %.sroa.6.0.copyload, i64 40 %27 = load ptr, ptr %26, align 8, !invariant.load !4, !nonnull !4 invoke void %27(ptr noalias nocapture noundef nonnull sret({ i8, [111 x i8] }) align 8 dereferenceable(112) %11, ptr noundef nonnull align 1 %.sroa.515.0.copyload) @@ -7292,6 +7301,7 @@ define hidden void @"_ZN6rustls4conn28ConnectionCommon$LT$Data$GT$25dangerous_ex 48: ; preds = %40 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %12) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.6.0.copyload, i64 8) ] %49 = load ptr, ptr %.sroa.6.0.copyload, align 8, !invariant.load !4, !noalias !1271, !nonnull !4 invoke void %49(ptr noundef nonnull align 1 %.sroa.515.0.copyload) to label %59 unwind label %50, !noalias !1271 @@ -7630,6 +7640,7 @@ define hidden void @"_ZN6rustls4conn28ConnectionCommon$LT$Data$GT$25dangerous_ex 171: ; preds = %36 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %12) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.6.0.copyload, i64 8) ] %172 = load ptr, ptr %.sroa.6.0.copyload, align 8, !invariant.load !4, !noalias !1337, !nonnull !4 invoke void %172(ptr noundef nonnull align 1 %.sroa.515.0.copyload) to label %182 unwind label %173, !noalias !1337 @@ -8686,6 +8697,7 @@ define hidden void @"_ZN6rustls4conn26ConnectionCore$LT$Data$GT$19process_new_pa store i64 0, ptr %36, align 8 store i64 %.040154, ptr %32, align 8, !alias.scope !1577 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.10.0152, i64 8) ] invoke fastcc void @"_ZN6rustls4conn26ConnectionCore$LT$Data$GT$7deframe17h021a4528e6af09c6E"(ptr noalias nocapture noundef align 8 dereferenceable(32) %14, ptr noalias noundef align 8 dereferenceable(928) %1, ptr noundef nonnull align 1 %.sroa.0.0153, ptr nonnull %.sroa.10.0152, ptr noalias noundef align 8 dereferenceable(32) %15) to label %40 unwind label %.thread91.thread105.loopexit.split @@ -8743,6 +8755,7 @@ define hidden void @"_ZN6rustls4conn26ConnectionCore$LT$Data$GT$19process_new_pa store i16 %.sroa.2.0.copyload, ptr %.sroa.2.0..sroa_idx16, align 2 store i32 %.sroa.3.0.copyload, ptr %.sroa.3.0..sroa_idx18, align 4 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.10.0152, i64 8) ] call fastcc void @"_ZN6rustls4conn26ConnectionCore$LT$Data$GT$11process_msg17h6678cabd3c15330dE"(ptr noalias nocapture noundef align 8 dereferenceable(32) %9, ptr noalias noundef align 8 dereferenceable(928) %1, ptr noalias nocapture noundef align 8 dereferenceable(24) %10, ptr noundef nonnull align 1 %.sroa.0.0153, ptr noalias noundef readonly align 8 dereferenceable(24) %.sroa.10.0152, ptr noalias noundef nonnull align 8 dereferenceable_or_null(48) %3) %56 = load i8, ptr %9, align 8, !range !45, !noundef !4 %57 = icmp eq i8 %56, 20 @@ -9108,6 +9121,7 @@ common.resume: ; preds = %189, %.thread91.thr %.sroa.10.0139 = phi ptr [ %.sroa.10.0152, %130 ], [ %.sroa.10.0152, %.thread91.thread105.loopexit.split ], [ %.sroa.10.0142, %.thread91.thread105.loopexit.split-lp ] %.sroa.0.0130 = phi ptr [ %.sroa.0.0153, %130 ], [ %.sroa.0.0153, %.thread91.thread105.loopexit.split ], [ %.sroa.0.0133, %.thread91.thread105.loopexit.split-lp ] %.pn48103 = phi { ptr, i32 } [ %.pn42, %130 ], [ %lpad.loopexit, %.thread91.thread105.loopexit.split ], [ %lpad.loopexit.split-lp, %.thread91.thread105.loopexit.split-lp ] + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.10.0139, i64 8) ] invoke fastcc void @"_ZN4core3ptr138drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$rustls..common_state..State$LT$rustls..client..client_conn..ClientConnectionData$GT$$GT$$GT$17h10058c092a43a95aE"(ptr nonnull %.sroa.0.0130, ptr nonnull %.sroa.10.0139) #27 to label %common.resume unwind label %128 @@ -14552,6 +14566,7 @@ define void @"_ZN142_$LT$rustls..client..tls12..ExpectServerKx$u20$as$u20$rustls %.sroa.610.0192.ph = phi ptr [ %.sroa.610.0.copyload, %._crit_edge ], [ %26, %.thread ] call void @llvm.lifetime.end.p0(i64 7, ptr nonnull %.sroa.6) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.8) + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.610.0192.ph, i64 8) ] %33 = icmp ne ptr %.sroa.610.0192.ph, null tail call void @llvm.assume(i1 %33) %34 = getelementptr inbounds nuw i8, ptr %1, i64 192 @@ -16601,7 +16616,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 @@ -17233,6 +17248,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) @@ -20146,6 +20163,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 @@ -20862,6 +20880,7 @@ define { ptr, i64 } @_ZN6rustls6server11server_conn10connection16ServerConnectio br i1 %4, label %"_ZN6rustls6server11server_conn103_$LT$impl$u20$rustls..conn..ConnectionCore$LT$rustls..server..server_conn..ServerConnectionData$GT$$GT$11get_sni_str17h88c39624a14f0a50E.exit", label %5 5: ; preds = %1 + call void @llvm.assume(i1 true) [ "align"(ptr %2, i64 8) ] %6 = tail call { ptr, i64 } @"_ZN90_$LT$rustls_pki_types..server_name..DnsName$u20$as$u20$core..convert..AsRef$LT$str$GT$$GT$6as_ref17hcf43575eb6ca19bdE.llvm.5361720058829915877"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) %7 = extractvalue { ptr, i64 } %6, 0 %8 = extractvalue { ptr, i64 } %6, 1 diff --git a/bench/tokio-rs/optimized/3k1p5lcuq1gqdulf.ll b/bench/tokio-rs/optimized/3k1p5lcuq1gqdulf.ll index b5189d79a3e..7be6a784dc1 100644 --- a/bench/tokio-rs/optimized/3k1p5lcuq1gqdulf.ll +++ b/bench/tokio-rs/optimized/3k1p5lcuq1gqdulf.ll @@ -54,6 +54,7 @@ define hidden void @"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter$LT$T$G %20 = phi i64 [ %.promoted.i, %7 ], [ %28, %19 ] %.0.i = phi i64 [ 0, %7 ], [ %29, %19 ] %21 = getelementptr inbounds { i64, [3 x i64] }, ptr %3, i64 %.0.i + call void @llvm.assume(i1 true) [ "align"(ptr %21, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !9) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %.sroa.0.i.i.i), !noalias !12 call void @"_ZN61_$LT$tokio_test..io..Action$u20$as$u20$core..clone..Clone$GT$5clone17h8d18f1e445e56009E.llvm.14770070883568428368"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %.sroa.0.i.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %21), !noalias !17 @@ -101,6 +102,7 @@ define hidden void @"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter$LT$T$G %49 = phi i64 [ %.promoted.i2, %36 ], [ %57, %48 ] %.0.i3 = phi i64 [ 0, %36 ], [ %58, %48 ] %50 = getelementptr inbounds { i64, [3 x i64] }, ptr %32, i64 %.0.i3 + call void @llvm.assume(i1 true) [ "align"(ptr %50, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !35) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %.sroa.0.i.i.i1), !noalias !38 call void @"_ZN61_$LT$tokio_test..io..Action$u20$as$u20$core..clone..Clone$GT$5clone17h8d18f1e445e56009E.llvm.14770070883568428368"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %.sroa.0.i.i.i1, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %50), !noalias !43 @@ -143,6 +145,7 @@ define hidden void @"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter$LT$T$G 12: ; preds = %12, %7 %.0.i = phi i64 [ 0, %7 ], [ %14, %12 ] %13 = getelementptr inbounds { i64, [3 x i64] }, ptr %3, i64 %.0.i + call void @llvm.assume(i1 true) [ "align"(ptr %13, i64 8) ] call void @"_ZN62_$LT$tokio_test..io..Mock$u20$as$u20$core..ops..drop..Drop$GT$4drop28_$u7b$$u7b$closure$u7d$$u7d$17h09040ef8bdad6bd1E.llvm.17397669140946824374"(ptr noalias noundef nonnull align 1 %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %13), !noalias !58 %14 = add nuw i64 %.0.i, 1 %15 = icmp eq i64 %14, %11 @@ -166,6 +169,7 @@ define hidden void @"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter$LT$T$G 26: ; preds = %26, %21 %.0.i1 = phi i64 [ 0, %21 ], [ %28, %26 ] %27 = getelementptr inbounds { i64, [3 x i64] }, ptr %17, i64 %.0.i1 + call void @llvm.assume(i1 true) [ "align"(ptr %27, i64 8) ] call void @"_ZN62_$LT$tokio_test..io..Mock$u20$as$u20$core..ops..drop..Drop$GT$4drop28_$u7b$$u7b$closure$u7d$$u7d$17h09040ef8bdad6bd1E.llvm.17397669140946824374"(ptr noalias noundef nonnull align 1 %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %27), !noalias !61 %28 = add nuw i64 %.0.i1, 1 %29 = icmp eq i64 %28, %25 @@ -195,6 +199,7 @@ define hidden noundef zeroext i1 @"_ZN109_$LT$alloc..collections..vec_deque..ite 10: ; preds = %8 %11 = getelementptr inbounds nuw i8, ptr %9, i64 32 store ptr %11, ptr %0, align 8, !alias.scope !69, !noalias !67 + call void @llvm.assume(i1 true) [ "align"(ptr %9, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !72) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4), !noalias !75 call void @"_ZN61_$LT$tokio_test..io..Action$u20$as$u20$core..clone..Clone$GT$5clone17h8d18f1e445e56009E.llvm.14770070883568428368"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %9), !noalias !86 @@ -227,6 +232,7 @@ define hidden noundef zeroext i1 @"_ZN109_$LT$alloc..collections..vec_deque..ite 23: ; preds = %21 %24 = getelementptr inbounds nuw i8, ptr %22, i64 32 store ptr %24, ptr %18, align 8, !alias.scope !98, !noalias !96 + call void @llvm.assume(i1 true) [ "align"(ptr %22, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !101) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3), !noalias !104 call void @"_ZN61_$LT$tokio_test..io..Action$u20$as$u20$core..clone..Clone$GT$5clone17h8d18f1e445e56009E.llvm.14770070883568428368"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %22), !noalias !115 @@ -292,11 +298,12 @@ define hidden noundef zeroext i1 @_ZN4core4iter6traits8iterator8Iterator8try_fol 7: ; preds = %9, %2 %8 = phi ptr [ %10, %9 ], [ %.promoted, %2 ] %.not9.not.not.not.not = icmp ne ptr %8, %5 - br i1 %.not9.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$4next17hcae8f711b7ba2bc8E.exit" + br i1 %.not9.not.not.not.not, label %9, label %16 9: ; preds = %7 %10 = getelementptr inbounds nuw i8, ptr %8, i64 32 store ptr %10, ptr %0, align 8, !alias.scope !131 + call void @llvm.assume(i1 true) [ "align"(ptr %8, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !134) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3), !noalias !137 call void @"_ZN61_$LT$tokio_test..io..Action$u20$as$u20$core..clone..Clone$GT$5clone17h8d18f1e445e56009E.llvm.14770070883568428368"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %8), !noalias !148 @@ -310,9 +317,9 @@ define hidden noundef zeroext i1 @_ZN4core4iter6traits8iterator8Iterator8try_fol %14 = load ptr, ptr %1, align 8, !alias.scope !150, !noalias !151, !nonnull !4, !align !8, !noundef !4 %15 = load i64, ptr %14, align 8, !noalias !154, !noundef !4 %.not = icmp eq i64 %15, 0 - br i1 %.not, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcae8f711b7ba2bc8E.exit", label %7 + br i1 %.not, label %16, label %7 -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcae8f711b7ba2bc8E.exit": ; preds = %7, %9 +16: ; preds = %7, %9 ret i1 %.not9.not.not.not.not } @@ -385,6 +392,7 @@ define hidden void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core. 11: ; preds = %11, %6 %.0 = phi i64 [ 0, %6 ], [ %13, %11 ] %12 = getelementptr inbounds { i64, [3 x i64] }, ptr %0, i64 %.0 + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] tail call void @"_ZN62_$LT$tokio_test..io..Mock$u20$as$u20$core..ops..drop..Drop$GT$4drop28_$u7b$$u7b$closure$u7d$$u7d$17h09040ef8bdad6bd1E.llvm.17397669140946824374"(ptr noalias noundef nonnull align 1 %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %12), !noalias !169 %13 = add nuw i64 %.0, 1 %14 = icmp eq i64 %13, %10 @@ -421,6 +429,7 @@ define hidden void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core. %19 = phi i64 [ %.promoted, %6 ], [ %27, %18 ] %.0 = phi i64 [ 0, %6 ], [ %28, %18 ] %20 = getelementptr inbounds { i64, [3 x i64] }, ptr %0, i64 %.0 + call void @llvm.assume(i1 true) [ "align"(ptr %20, i64 8) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !172) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %.sroa.0.i.i), !noalias !175 call void @"_ZN61_$LT$tokio_test..io..Action$u20$as$u20$core..clone..Clone$GT$5clone17h8d18f1e445e56009E.llvm.14770070883568428368"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %.sroa.0.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %20), !noalias !180 diff --git a/bench/tokio-rs/optimized/4gjrbuf5539hrqh6.ll b/bench/tokio-rs/optimized/4gjrbuf5539hrqh6.ll index c3497316ef9..f067c70e2e5 100644 --- a/bench/tokio-rs/optimized/4gjrbuf5539hrqh6.ll +++ b/bench/tokio-rs/optimized/4gjrbuf5539hrqh6.ll @@ -611,8 +611,10 @@ _ZN3std3sys4unix5locks11futex_mutex5Mutex4lock17h2824c483f8557e8fE.llvm.17688124 resume { ptr, i32 } %19 "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17haf7b4937874f1c35E.llvm.17688124612483408026.exit": ; preds = %"_ZN3std4sync5mutex19MutexGuard$LT$T$GT$3new17h159af7b8ff4aa1d8E.exit" + call void @llvm.assume(i1 true) [ "align"(ptr %4, i64 8) ] %24 = getelementptr inbounds nuw i8, ptr %3, i64 72 %25 = load i8, ptr %24, align 8, !range !4, !noundef !5 + call void @llvm.assume(i1 true) [ "align"(ptr %4, i64 8) ] %26 = trunc nuw i8 %.0.i.i.i to i1 br i1 %26, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.17688124612483408026.exit.i.i, label %27 @@ -716,6 +718,7 @@ common.resume: ; preds = %.body, %29 resume { ptr, i32 } %common.resume.op "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17haf7b4937874f1c35E.llvm.17688124612483408026.exit": ; preds = %"_ZN3std4sync5mutex19MutexGuard$LT$T$GT$3new17h159af7b8ff4aa1d8E.exit" + call void @llvm.assume(i1 true) [ "align"(ptr %15, i64 8) ] store ptr %15, ptr %13, align 8 %.fca.1.gep = getelementptr inbounds nuw i8, ptr %13, i64 8 store i8 %.0.i.i.i, ptr %.fca.1.gep, align 8 @@ -1677,8 +1680,10 @@ _ZN3std4sync6poison4Flag5guard17h47496af5b61686c3E.llvm.9498742039818982133.exit unreachable 68: ; preds = %60 + call void @llvm.assume(i1 true) [ "align"(ptr %46, i64 8) ] %69 = getelementptr inbounds nuw i8, ptr %45, i64 56 store i64 %12, ptr %69, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %46, i64 8) ] %70 = trunc nuw i8 %.0.i.i.i to i1 br i1 %70, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.17688124612483408026.exit.i.i24, label %71 @@ -1922,6 +1927,7 @@ common.resume: ; preds = %39, %19 resume { ptr, i32 } %common.resume.op "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17haf7b4937874f1c35E.llvm.17688124612483408026.exit": ; preds = %"_ZN3std4sync5mutex19MutexGuard$LT$T$GT$3new17h159af7b8ff4aa1d8E.exit" + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] store ptr %5, ptr %3, align 8 %.fca.1.gep = getelementptr inbounds nuw i8, ptr %3, i64 8 store i8 %.0.i.i.i, ptr %.fca.1.gep, align 8 @@ -1937,6 +1943,7 @@ common.resume: ; preds = %39, %19 27: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17haf7b4937874f1c35E.llvm.17688124612483408026.exit" %28 = add i64 %25, 1 store i64 %28, ptr %24, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %5, i64 8) ] %29 = trunc nuw i8 %.0.i.i.i to i1 br i1 %29, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.17688124612483408026.exit.i.i, label %30 @@ -2042,10 +2049,13 @@ _ZN3std3sys4unix5locks11futex_mutex5Mutex4lock17h2824c483f8557e8fE.llvm.17688124 resume { ptr, i32 } %19 "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17haf7b4937874f1c35E.llvm.17688124612483408026.exit": ; preds = %"_ZN3std4sync5mutex19MutexGuard$LT$T$GT$3new17h159af7b8ff4aa1d8E.exit" + call void @llvm.assume(i1 true) [ "align"(ptr %4, i64 8) ] %24 = getelementptr inbounds nuw i8, ptr %3, i64 64 %25 = load i64, ptr %24, align 8, !noundef !5 %26 = add i64 %25, -1 store i64 %26, ptr %24, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %4, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %4, i64 8) ] %27 = trunc nuw i8 %.0.i.i.i to i1 br i1 %27, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.17688124612483408026.exit.i.i, label %28 @@ -2153,6 +2163,7 @@ common.resume: ; preds = %.thread, %26 resume { ptr, i32 } %common.resume.op "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17haf7b4937874f1c35E.llvm.17688124612483408026.exit": ; preds = %"_ZN3std4sync5mutex19MutexGuard$LT$T$GT$3new17h159af7b8ff4aa1d8E.exit" + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] store ptr %12, ptr %10, align 8 %.fca.1.gep = getelementptr inbounds nuw i8, ptr %10, i64 8 store i8 %.0.i.i.i, ptr %.fca.1.gep, align 8 @@ -2173,6 +2184,7 @@ common.resume: ; preds = %.thread, %26 br label %48 37: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17haf7b4937874f1c35E.llvm.17688124612483408026.exit" + call void @llvm.assume(i1 true) [ "align"(ptr %12, i64 8) ] %38 = trunc nuw i8 %.0.i.i.i to i1 br i1 %38, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.17688124612483408026.exit.i.i, label %39 diff --git a/bench/tokio-rs/optimized/4mr1mvhll2ekuv31.ll b/bench/tokio-rs/optimized/4mr1mvhll2ekuv31.ll index 4dbf031daa1..6d0a74d58f4 100644 --- a/bench/tokio-rs/optimized/4mr1mvhll2ekuv31.ll +++ b/bench/tokio-rs/optimized/4mr1mvhll2ekuv31.ll @@ -571,7 +571,7 @@ define hidden void @"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4ite %.sroa.5.0.i = phi i64 [ %14, %17 ], [ %20, %19 ], [ 0, %2 ] %.sroa.11.0.i = phi i64 [ %18, %17 ], [ 0, %19 ], [ 0, %2 ] %21 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %22 = load ptr, ptr %21, align 8, !alias.scope !139, !noalias !142, !nonnull !16, !noundef !16 + %22 = load ptr, ptr %21, align 8, !alias.scope !139, !noalias !142, !nonnull !16, !align !92, !noundef !16 %23 = getelementptr inbounds { i64, [3 x i64] }, ptr %22, i64 %.sroa.0.0.i %24 = getelementptr inbounds { i64, [3 x i64] }, ptr %22, i64 %.sroa.5.0.i %25 = getelementptr inbounds { i64, [3 x i64] }, ptr %22, i64 %.sroa.11.0.i @@ -585,7 +585,7 @@ define hidden void @"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4ite 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 hidden noundef align 8 dereferenceable_or_null(32) ptr @"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$7get_mut17h7cdc54fcecb0a861E"(ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %0, i64 noundef %1) unnamed_addr #3 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 24 %4 = load i64, ptr %3, align 8, !noundef !16 @@ -607,6 +607,7 @@ define hidden noundef align 8 dereferenceable_or_null(32) ptr @"_ZN5alloc11colle 15: ; preds = %2, %6 %.0 = phi ptr [ %14, %6 ], [ null, %2 ] + call void @llvm.assume(i1 true) [ "align"(ptr %.0, i64 8) ] ret ptr %.0 } @@ -848,7 +849,7 @@ define hidden void @"_ZN91_$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A$ %.sroa.5.0.i.i = phi i64 [ %21, %24 ], [ %27, %26 ], [ 0, %.noexc ] %.sroa.11.0.i.i = phi i64 [ %25, %24 ], [ 0, %26 ], [ 0, %.noexc ] %31 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %32 = load ptr, ptr %31, align 8, !alias.scope !190, !noalias !191, !nonnull !16, !noundef !16 + %32 = load ptr, ptr %31, align 8, !alias.scope !190, !noalias !191, !nonnull !16, !align !92, !noundef !16 %33 = getelementptr inbounds { i64, [3 x i64] }, ptr %32, i64 %.sroa.0.0.i.i %34 = getelementptr inbounds { i64, [3 x i64] }, ptr %32, i64 %.sroa.5.0.i.i %35 = getelementptr inbounds { i64, [3 x i64] }, ptr %32, i64 %.sroa.11.0.i.i @@ -931,11 +932,11 @@ declare hidden void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..All ; Function Attrs: nonlazybind uwtable declare hidden void @"_ZN4core3ptr90drop_in_place$LT$alloc..collections..vec_deque..VecDeque$LT$tokio_test..io..Action$GT$$GT$17h95837f0a2b10e223E"(ptr noalias noundef align 8 dereferenceable(32)) unnamed_addr #0 -; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) -declare void @llvm.experimental.noalias.scope.decl(metadata) #12 - ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) -declare void @llvm.assume(i1 noundef) #13 +declare void @llvm.assume(i1 noundef) #12 + +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) +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) #14 @@ -943,7 +944,7 @@ declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 attributes #0 = { 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 = { inlinehint mustprogress nofree norecurse nosync 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(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #3 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { inlinehint nonlazybind 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 #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } @@ -952,8 +953,8 @@ attributes #8 = { mustprogress nocallback nofree nosync nounwind speculatable wi attributes #9 = { cold noreturn 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 willreturn memory(inaccessiblemem: write) } +attributes #12 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #13 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } attributes #14 = { nocallback nofree nounwind willreturn memory(argmem: write) } attributes #15 = { noreturn } attributes #16 = { cold } diff --git a/bench/tokio-rs/optimized/4zaq7yghb5wawieu.ll b/bench/tokio-rs/optimized/4zaq7yghb5wawieu.ll index 306ee02db20..dfa5c0f5175 100644 --- a/bench/tokio-rs/optimized/4zaq7yghb5wawieu.ll +++ b/bench/tokio-rs/optimized/4zaq7yghb5wawieu.ll @@ -19,8 +19,10 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr62drop_in_place$LT$std..sync..mutex..MutexGuard$LT$usize$GT$$GT$17hf0e5300e01df7278E"(ptr %.0.val, i8 %.8.val) unnamed_addr #0 { + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %1 = icmp ne ptr %.0.val, null tail call void @llvm.assume(i1 %1) + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %2 = getelementptr inbounds nuw i8, ptr %.0.val, i64 4 %3 = trunc nuw i8 %.8.val to i1 br i1 %3, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i, label %4 @@ -36,10 +38,11 @@ _ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i: ; pr br i1 %8, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i, label %9 9: ; preds = %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i - store atomic i8 1, ptr %2 monotonic, align 1 + store atomic i8 1, ptr %2 monotonic, align 4 br label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i: ; preds = %9, %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i, %4, %0 + call void @llvm.assume(i1 true) [ "align"(ptr %.0.val, i64 8) ] %10 = atomicrmw xchg ptr %.0.val, i32 0 release, align 4 %11 = icmp eq i32 %10, 2 br i1 %11, label %12, label %"_ZN79_$LT$std..sync..mutex..MutexGuard$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h56da3eae09bc7ca9E.exit" @@ -154,6 +157,9 @@ common.resume.i: ; preds = %39, %19 28: ; preds = %27, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17he5b3009b7675717dE.exit.i" %.0.i = phi i1 [ true, %27 ], [ false, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17he5b3009b7675717dE.exit.i" ] + call void @llvm.assume(i1 true) [ "align"(ptr %4, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %4, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %4, i64 8) ] %29 = trunc nuw i8 %.0.i.i.i.i to i1 br i1 %29, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i.i, label %30 @@ -172,6 +178,7 @@ _ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i.i.i: br label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i.i _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i.i: ; preds = %35, %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i.i.i, %30, %28 + call void @llvm.assume(i1 true) [ "align"(ptr %4, i64 8) ] %36 = atomicrmw xchg ptr %4, i32 0 release, align 4 %37 = icmp eq i32 %36, 2 br i1 %37, label %38, label %_ZN10tokio_test4task11ThreadWaker8is_woken17h6ac0e4f758829393E.exit @@ -183,6 +190,7 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i.i: ; preds = %35, %_Z 39: ; preds = %26 %40 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "align"(ptr %4, i64 8) ] invoke fastcc void @"_ZN4core3ptr62drop_in_place$LT$std..sync..mutex..MutexGuard$LT$usize$GT$$GT$17hf0e5300e01df7278E"(ptr nonnull align 8 %4, i8 %.0.i.i.i.i) #14 to label %common.resume.i unwind label %42 @@ -308,6 +316,9 @@ _ZN3std3sys4unix5locks11futex_mutex5Mutex4lock17h2824c483f8557e8fE.exit: ; preds "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17he5b3009b7675717dE.exit": ; preds = %"_ZN3std4sync5mutex19MutexGuard$LT$T$GT$3new17h7657b45618dbb8a1E.exit" %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 0, ptr %23, align 8 + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 8) ] + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 8) ] %24 = trunc nuw i8 %.0.i.i.i to i1 br i1 %24, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i, label %25 @@ -326,6 +337,7 @@ _ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i.i: ; br label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i: ; preds = %30, %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i.i, %25, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17he5b3009b7675717dE.exit" + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 8) ] %31 = atomicrmw xchg ptr %0, i32 0 release, align 4 %32 = icmp eq i32 %31, 2 br i1 %32, label %33, label %"_ZN4core3ptr62drop_in_place$LT$std..sync..mutex..MutexGuard$LT$usize$GT$$GT$17hf0e5300e01df7278E.exit" @@ -406,6 +418,7 @@ common.resume: ; preds = %31, %19 br i1 %26, label %46, label %27 27: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17he5b3009b7675717dE.exit" + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 8) ] store i64 1, ptr %24, align 8 switch i64 %25, label %30 [ i64 0, label %46 @@ -426,6 +439,7 @@ common.resume: ; preds = %31, %19 31: ; preds = %30, %28 %32 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "align"(ptr %0, i64 8) ] invoke fastcc void @"_ZN4core3ptr62drop_in_place$LT$std..sync..mutex..MutexGuard$LT$usize$GT$$GT$17hf0e5300e01df7278E"(ptr nonnull %0, i8 %.0.i.i.i) #14 to label %common.resume unwind label %44 diff --git a/bench/turborepo-rs/optimized/5oyfkcp83qeshlhfpeq645wiv.ll b/bench/turborepo-rs/optimized/5oyfkcp83qeshlhfpeq645wiv.ll index b099ab73c51..ac8b3ad29f0 100644 --- a/bench/turborepo-rs/optimized/5oyfkcp83qeshlhfpeq645wiv.ll +++ b/bench/turborepo-rs/optimized/5oyfkcp83qeshlhfpeq645wiv.ll @@ -643,7 +643,7 @@ _RNvXs7_NtCslyFhtC9DD08_9itertools11groupbylazyINtB5_5GroupNtNtCseG2FYMysgNb_3wa 21: ; preds = %_RNvXs7_NtCslyFhtC9DD08_9itertools11groupbylazyINtB5_5GroupNtNtCseG2FYMysgNb_3wax5token8PositionINtBW_4WalkTjjEENCNvNtBY_4rule8boundary0ENtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator4nextBY_.llvm.8413233830278194149.exit.thread.i, %.noexc %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %3, i64 24 - %.sroa.4.0.copyload.i = load ptr, ptr %.sroa.4.0..sroa_idx.i, align 8, !noalias !140, !nonnull !4, !noundef !4 + %.sroa.4.0.copyload.i = load ptr, ptr %.sroa.4.0..sroa_idx.i, align 8, !noalias !140, !nonnull !4, !align !149, !noundef !4 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3), !noalias !140 tail call void @llvm.experimental.noalias.scope.decl(metadata !157) store i64 1, ptr %4, align 8, !alias.scope !160, !noalias !162 @@ -1170,6 +1170,7 @@ define noundef zeroext i1 @_RINvXs_NtNtNtCs1LoaDTb72WA_4core4iter8adapters6clone 8: ; preds = %6 %9 = getelementptr inbounds nuw i8, ptr %7, i64 32 store ptr %9, ptr %0, align 8, !alias.scope !235, !noalias !238 + call void @llvm.assume(i1 true) [ "align"(ptr %7, i64 8) ] %10 = call noundef zeroext i1 @_RNCINvNtNtNtCs1LoaDTb72WA_4core4iter8adapters6cloned14clone_try_foldNtNtNtCseG2FYMysgNb_3wax5token8variance17InvariantFragmentuINtNtNtBa_3ops12control_flow11ControlFlowINtNtB26_9try_trait17NeverShortCircuituEENCINvNvXs_NtB6_4takeINtB3v_4TakepENtNtNtB8_6traits8iterator8Iterator8try_fold5checkB14_uB2G_NCINvMB2J_B2G_10wrap_mut_2uB14_NCINvNvXs_NtB6_9enumerateINtB5u_9EnumeratepEB3T_4fold9enumerateB14_uNCINvNvB3T_8for_each4callTjB14_ENCINvMs1_NtNtCs68wO5nsWeTG_5alloc11collections9vec_dequeINtB75_8VecDequeB14_E10write_iterIB3G_INtNtB6_12by_ref_sized10ByRefSizedINtB4_6ClonedINtNtB75_4iter4IterB14_EEEEE0E0E0E0E0E0B1a_.llvm.8413233830278194149(ptr noalias noundef nonnull align 8 dereferenceable(40) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %7), !noalias !241 br i1 %10, label %_RINvXs1_NtNtNtCs68wO5nsWeTG_5alloc11collections9vec_deque4iterINtB6_4IterNtNtNtCseG2FYMysgNb_3wax5token8variance17InvariantFragmentENtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator8try_folduNCINvNtNtB2c_8adapters6cloned14clone_try_foldB19_uINtNtNtB2e_3ops12control_flow11ControlFlowINtNtB44_9try_trait17NeverShortCircuituEENCINvNvXs_NtB3i_4takeINtB5u_4TakepEB26_8try_fold5checkB19_uB4F_NCINvMB4I_B4F_10wrap_mut_2uB19_NCINvNvXs_NtB3i_9enumerateINtB70_9EnumeratepEB26_4fold9enumerateB19_uNCINvNvB26_8for_each4callTjB19_ENCINvMs1_B8_INtB8_8VecDequeB19_E10write_iterIB5G_INtNtB3i_12by_ref_sized10ByRefSizedINtB3g_6ClonedBY_EEEE0E0E0E0E0E0B3Z_EB1f_.exit, label %6 @@ -1189,6 +1190,7 @@ define noundef zeroext i1 @_RINvXs_NtNtNtCs1LoaDTb72WA_4core4iter8adapters6clone 17: ; preds = %15 %18 = getelementptr inbounds nuw i8, ptr %16, i64 32 store ptr %18, ptr %12, align 8, !alias.scope !247, !noalias !250 + call void @llvm.assume(i1 true) [ "align"(ptr %16, i64 8) ] %19 = call noundef zeroext i1 @_RNCINvNtNtNtCs1LoaDTb72WA_4core4iter8adapters6cloned14clone_try_foldNtNtNtCseG2FYMysgNb_3wax5token8variance17InvariantFragmentuINtNtNtBa_3ops12control_flow11ControlFlowINtNtB26_9try_trait17NeverShortCircuituEENCINvNvXs_NtB6_4takeINtB3v_4TakepENtNtNtB8_6traits8iterator8Iterator8try_fold5checkB14_uB2G_NCINvMB2J_B2G_10wrap_mut_2uB14_NCINvNvXs_NtB6_9enumerateINtB5u_9EnumeratepEB3T_4fold9enumerateB14_uNCINvNvB3T_8for_each4callTjB14_ENCINvMs1_NtNtCs68wO5nsWeTG_5alloc11collections9vec_dequeINtB75_8VecDequeB14_E10write_iterIB3G_INtNtB6_12by_ref_sized10ByRefSizedINtB4_6ClonedINtNtB75_4iter4IterB14_EEEEE0E0E0E0E0E0B1a_.llvm.8413233830278194149(ptr noalias noundef nonnull align 8 dereferenceable(40) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %16), !noalias !252 br i1 %19, label %_RINvXs1_NtNtNtCs68wO5nsWeTG_5alloc11collections9vec_deque4iterINtB6_4IterNtNtNtCseG2FYMysgNb_3wax5token8variance17InvariantFragmentENtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator8try_folduNCINvNtNtB2c_8adapters6cloned14clone_try_foldB19_uINtNtNtB2e_3ops12control_flow11ControlFlowINtNtB44_9try_trait17NeverShortCircuituEENCINvNvXs_NtB3i_4takeINtB5u_4TakepEB26_8try_fold5checkB19_uB4F_NCINvMB4I_B4F_10wrap_mut_2uB19_NCINvNvXs_NtB3i_9enumerateINtB70_9EnumeratepEB26_4fold9enumerateB19_uNCINvNvB26_8for_each4callTjB19_ENCINvMs1_B8_INtB8_8VecDequeB19_E10write_iterIB5G_INtNtB3i_12by_ref_sized10ByRefSizedINtB3g_6ClonedBY_EEEE0E0E0E0E0E0B3Z_EB1f_.exit, label %15 @@ -2707,7 +2709,7 @@ _RNvXs7_NtCslyFhtC9DD08_9itertools11groupbylazyINtB5_5GroupNtNtCseG2FYMysgNb_3wa 9: ; preds = %_RNvXs7_NtCslyFhtC9DD08_9itertools11groupbylazyINtB5_5GroupNtNtCseG2FYMysgNb_3wax5token8PositionINtBW_4WalkTjjEENCNvNtBY_4rule8boundary0ENtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator4nextBY_.llvm.8413233830278194149.exit.thread, %_RNvXs7_NtCslyFhtC9DD08_9itertools11groupbylazyINtB5_5GroupNtNtCseG2FYMysgNb_3wax5token8PositionINtBW_4WalkTjjEENCNvNtBY_4rule8boundary0ENtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator4nextBY_.llvm.8413233830278194149.exit %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 24 - %.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 !149, !noundef !4 br label %10 10: ; preds = %_RNvXs7_NtCslyFhtC9DD08_9itertools11groupbylazyINtB5_5GroupNtNtCseG2FYMysgNb_3wax5token8PositionINtBW_4WalkTjjEENCNvNtBY_4rule8boundary0ENtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator4nextBY_.llvm.8413233830278194149.exit, %9 @@ -2956,7 +2958,7 @@ _RNvXs0_NtNtNtCs1LoaDTb72WA_4core4iter8adapters3mapINtB5_3MapINtNtCslyFhtC9DD08_ 16: ; preds = %_RNvXs7_NtCslyFhtC9DD08_9itertools11groupbylazyINtB5_5GroupNtNtCseG2FYMysgNb_3wax5token8PositionINtBW_4WalkTjjEENCNvNtBY_4rule8boundary0ENtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator4nextBY_.llvm.8413233830278194149.exit.i, %_RNvXs7_NtCslyFhtC9DD08_9itertools11groupbylazyINtB5_5GroupNtNtCseG2FYMysgNb_3wax5token8PositionINtBW_4WalkTjjEENCNvNtBY_4rule8boundary0ENtNtNtNtCs1LoaDTb72WA_4core4iter6traits8iterator8Iterator4nextBY_.llvm.8413233830278194149.exit.thread.i %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %2, i64 24 - %.sroa.4.0.copyload.i = load ptr, ptr %.sroa.4.0..sroa_idx.i, align 8, !noalias !671, !nonnull !4, !noundef !4 + %.sroa.4.0.copyload.i = load ptr, ptr %.sroa.4.0..sroa_idx.i, align 8, !noalias !671, !nonnull !4, !align !149, !noundef !4 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2), !noalias !671 %17 = getelementptr inbounds nuw i8, ptr %0, i64 56 %18 = load ptr, ptr %17, align 8, !alias.scope !681, !noalias !684, !nonnull !4, !align !149, !noundef !4 diff --git a/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll b/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll index de426edc64c..d07cdfab178 100644 --- a/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll +++ b/bench/turborepo-rs/optimized/68uz0ms18epwru7402hblucwm.ll @@ -1001,6 +1001,7 @@ define hidden void @_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtNtNtCsgrIn 14: ; preds = %8 %15 = getelementptr inbounds nuw i8, ptr %0, i64 16 %16 = load ptr, ptr %15, align 8, !alias.scope !127, !nonnull !8, !align !70, !noundef !8 + call void @llvm.assume(i1 true) [ "align"(ptr %6, i64 8) ] invoke void @_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE9put_valueCsff1zCjKRl2o_13turborepo_env.llvm.5800649057538698079(ptr noundef nonnull align 8 %16, ptr noalias noundef nonnull align 8 %6) to label %_RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtB4_6result6ResultINtNtCs68wO5nsWeTG_5alloc5boxed3BoxNtNtNtCsgrIngBG6lgl_14regex_automata4meta5regex5CacheEjEECsff1zCjKRl2o_13turborepo_env.llvm.5800649057538698079.exit unwind label %25 @@ -2996,6 +2997,7 @@ _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtNtCsapf13pIxsjn_3std4sync5mute br i1 %.not.i.i20, label %.noexc27, label %70 70: ; preds = %69 + call void @llvm.assume(i1 true) [ "align"(ptr %.val.i18, i64 8) ] %71 = icmp ne ptr %.val.i18, null tail call void @llvm.assume(i1 %71) %72 = getelementptr inbounds nuw i8, ptr %.val.i18, i64 4 @@ -3016,7 +3018,7 @@ _RINvNtCs1LoaDTb72WA_4core3ptr13drop_in_placeINtNtNtCsapf13pIxsjn_3std4sync5mute br i1 %79, label %_ZN3std4sync6poison4Flag4done17he5a058c907639c42E.llvm.5800649057538698079.exit.i.i.i.i.i21, label %80 80: ; preds = %.noexc26 - store atomic i8 1, ptr %72 monotonic, align 1, !noalias !403 + store atomic i8 1, ptr %72 monotonic, align 4, !noalias !403 br label %_ZN3std4sync6poison4Flag4done17he5a058c907639c42E.llvm.5800649057538698079.exit.i.i.i.i.i21 _ZN3std4sync6poison4Flag4done17he5a058c907639c42E.llvm.5800649057538698079.exit.i.i.i.i.i21: ; preds = %80, %.noexc26, %74, %70 @@ -3071,6 +3073,7 @@ define hidden void @_RNvMs4_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner 14: ; preds = %8 %15 = getelementptr inbounds nuw i8, ptr %0, i64 16 %16 = load ptr, ptr %15, align 8, !nonnull !8, !align !70, !noundef !8 + call void @llvm.assume(i1 true) [ "align"(ptr %6, i64 8) ] tail call void @_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE9put_valueCsff1zCjKRl2o_13turborepo_env.llvm.5800649057538698079(ptr noundef nonnull align 8 %16, ptr noalias noundef nonnull align 8 %6) br label %20 @@ -3212,6 +3215,7 @@ define hidden void @_RNvXs5_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5inner 14: ; preds = %8 %15 = getelementptr inbounds nuw i8, ptr %0, i64 16 %16 = load ptr, ptr %15, align 8, !alias.scope !432, !nonnull !8, !align !70, !noundef !8 + call void @llvm.assume(i1 true) [ "align"(ptr %6, i64 8) ] tail call void @_RNvMs2_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_4PoolNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB16_NtNtNtB2d_5panic11unwind_safe13RefUnwindSafeNtNtB2d_6marker4SyncNtB32_10UnwindSafeNtB3K_4SendEL_EE9put_valueCsff1zCjKRl2o_13turborepo_env.llvm.5800649057538698079(ptr noundef nonnull align 8 %16, ptr noalias noundef nonnull align 8 %6), !noalias !432 br label %_RNvMs4_NtNtNtCsgrIngBG6lgl_14regex_automata4util4pool5innerINtB5_9PoolGuardNtNtNtBb_4meta5regex5CacheINtNtCs68wO5nsWeTG_5alloc5boxed3BoxDINtNtNtCs1LoaDTb72WA_4core3ops8function2FnuEp6OutputB1b_NtNtNtB2i_5panic11unwind_safe13RefUnwindSafeNtNtB2i_6marker4SyncNtB37_10UnwindSafeNtB3P_4SendEL_EE7put_impCsff1zCjKRl2o_13turborepo_env.llvm.5800649057538698079.exit diff --git a/bench/typst-rs/optimized/3qf2nl8hrxy8k0hz.ll b/bench/typst-rs/optimized/3qf2nl8hrxy8k0hz.ll index 7f917e6ca10..40d21049b27 100644 --- a/bench/typst-rs/optimized/3qf2nl8hrxy8k0hz.ll +++ b/bench/typst-rs/optimized/3qf2nl8hrxy8k0hz.ll @@ -1005,9 +1005,10 @@ _ZN4core4hash6Hasher19write_length_prefix17ha778925aa4df1c9fE.exit.i: ; preds = .lr.ph.i.i: ; preds = %_ZN4core4hash6Hasher19write_length_prefix17ha778925aa4df1c9fE.exit.i, %.lr.ph.i.i %.sroa.0.06.i.i = phi ptr [ %198, %.lr.ph.i.i ], [ %157, %_ZN4core4hash6Hasher19write_length_prefix17ha778925aa4df1c9fE.exit.i ] %198 = getelementptr inbounds nuw i8, ptr %.sroa.0.06.i.i, i64 192 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.06.i.i, i64 16) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !230) tail call void @llvm.experimental.noalias.scope.decl(metadata !233) - %199 = load i64, ptr %.sroa.0.06.i.i, align 8, !alias.scope !236, !noalias !239, !noundef !4 + %199 = load i64, ptr %.sroa.0.06.i.i, align 16, !alias.scope !236, !noalias !239, !noundef !4 tail call void @"_ZN9siphasher6sip12815Hasher$LT$S$GT$11short_write17h8c7479c728e882c9E.llvm.4929685277518489967"(ptr noalias noundef nonnull align 8 dereferenceable(72) %1, i64 noundef %199, i64 noundef %199), !noalias !243 %200 = getelementptr inbounds nuw i8, ptr %.sroa.0.06.i.i, i64 8 %201 = load i64, ptr %200, align 8, !alias.scope !236, !noalias !239, !noundef !4 @@ -1209,6 +1210,7 @@ _ZN4core4hash6Hasher19write_length_prefix17ha778925aa4df1c9fE.exit: ; preds = %2 .lr.ph.i: ; preds = %_ZN4core4hash6Hasher19write_length_prefix17ha778925aa4df1c9fE.exit, %.lr.ph.i %.sroa.0.06.i = phi ptr [ %329, %.lr.ph.i ], [ %290, %_ZN4core4hash6Hasher19write_length_prefix17ha778925aa4df1c9fE.exit ] %329 = getelementptr inbounds nuw i8, ptr %.sroa.0.06.i, i64 56 + call void @llvm.assume(i1 true) [ "align"(ptr %.sroa.0.06.i, i64 8) ] tail call void @"_ZN69_$LT$typst..visualize..path..PathItem$u20$as$u20$core..hash..Hash$GT$4hash17he9406bb918be5982E.llvm.2546880118954093015"(ptr noalias noundef nonnull readonly align 8 dereferenceable(56) %.sroa.0.06.i, ptr noalias noundef nonnull align 8 dereferenceable(72) %1) %330 = icmp eq ptr %329, %327 br i1 %330, label %_ZN4core4hash4Hash10hash_slice17h486159383c444ab0E.exit, label %.lr.ph.i 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/wireshark/optimized/funnel_statistics.cpp.ll b/bench/wireshark/optimized/funnel_statistics.cpp.ll index 19fe91dc30b..ec2a5b4a1be 100644 --- a/bench/wireshark/optimized/funnel_statistics.cpp.ll +++ b/bench/wireshark/optimized/funnel_statistics.cpp.ll @@ -2051,7 +2051,6 @@ define linkonce_odr void @_ZNK5QListI7QStringE3midExx(ptr dead_on_unwind noalias 32: ; preds = %21 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %33 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 24, i64 noundef 8, i64 noundef %.138, i32 noundef 1) #25 - call void @llvm.assume(i1 true) [ "align"(ptr %33, i64 8) ] %34 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %35 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -5221,7 +5220,6 @@ _ZNK17QArrayDataPointerIP12FunnelActionE22constAllocatedCapacityEv.exit31.i: ; p %164 = zext i1 %163 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3), !noalias !29 %165 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %3, i64 noundef 8, i64 noundef 8, i64 noundef %161, i32 noundef %164) #25, !noalias !29 - call void @llvm.assume(i1 true) [ "align"(ptr %165, i64 8) ] %166 = load ptr, ptr %3, align 8, !noalias !29 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3), !noalias !29 %.not.i99 = icmp ne ptr %166, null @@ -5620,7 +5618,6 @@ _ZNK17QArrayDataPointerIP12FunnelActionE22constAllocatedCapacityEv.exit31.i106: %340 = zext i1 %339 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2), !noalias !35 %341 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %2, i64 noundef 8, i64 noundef 8, i64 noundef %337, i32 noundef %340) #25, !noalias !35 - call void @llvm.assume(i1 true) [ "align"(ptr %341, i64 8) ] %342 = load ptr, ptr %2, align 8, !noalias !35 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2), !noalias !35 %.not.i107 = icmp ne ptr %342, null @@ -7256,7 +7253,6 @@ _ZNK17QArrayDataPointerISt4pairI7QStringS1_EE22constAllocatedCapacityEv.exit31: %30 = zext i1 %29 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %31 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 48, i64 noundef 8, i64 noundef %27, i32 noundef %30) #25 - call void @llvm.assume(i1 true) [ "align"(ptr %31, i64 8) ] %32 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %32, null @@ -9121,7 +9117,6 @@ _ZNK17QArrayDataPointerIP12FunnelActionE22constAllocatedCapacityEv.exit31: ; pre %32 = zext i1 %31 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %33 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 8, i64 noundef 8, i64 noundef %29, i32 noundef %32) #25 - call void @llvm.assume(i1 true) [ "align"(ptr %33, i64 8) ] %34 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %34, null @@ -9239,7 +9234,6 @@ _ZSt8distanceIN5QHashIi5QListIP12FunnelActionEE12key_iteratorEENSt15iterator_tra 26: ; preds = %_ZSt8distanceIN5QHashIi5QListIP12FunnelActionEE12key_iteratorEENSt15iterator_traitsIT_E15difference_typeES8_S8_.exit call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) %27 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %6, i64 noundef 4, i64 noundef 8, i64 noundef %23, i32 noundef 1) #25 - call void @llvm.assume(i1 true) [ "align"(ptr %27, i64 8) ] %28 = load ptr, ptr %6, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) %29 = load ptr, ptr %0, align 8 @@ -9637,7 +9631,6 @@ _ZNK17QArrayDataPointerI7QStringE22constAllocatedCapacityEv.exit31: ; preds = %_ %30 = zext i1 %29 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %31 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 24, i64 noundef 8, i64 noundef %27, i32 noundef %30) #25 - call void @llvm.assume(i1 true) [ "align"(ptr %31, i64 8) ] %32 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %32, null diff --git a/bench/wireshark/optimized/io_graph_dialog.cpp.ll b/bench/wireshark/optimized/io_graph_dialog.cpp.ll index e965d197849..109872a934a 100644 --- a/bench/wireshark/optimized/io_graph_dialog.cpp.ll +++ b/bench/wireshark/optimized/io_graph_dialog.cpp.ll @@ -16745,7 +16745,6 @@ _ZN17QArrayDataPointerIP7IOGraphE17allocatedCapacityEv.exit.i: ; preds = %22, %1 %25 = phi i64 [ %24, %22 ], [ 0, %18 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) %26 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %2, i64 noundef 8, i64 noundef 8, i64 noundef %25, i32 noundef 1) #27 - call void @llvm.assume(i1 true) [ "align"(ptr %26, i64 8) ] %27 = load ptr, ptr %2, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) %28 = load ptr, ptr %6, align 8 @@ -20801,7 +20800,6 @@ _ZN17QArrayDataPointerI12QCPGraphDataE17allocatedCapacityEv.exit.i.i: ; preds = %38 = phi i64 [ %37, %35 ], [ 0, %31 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) %39 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %3, i64 noundef 16, i64 noundef 8, i64 noundef %38, i32 noundef 1) #27 - call void @llvm.assume(i1 true) [ "align"(ptr %39, i64 8) ] %40 = load ptr, ptr %3, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) %41 = load ptr, ptr %28, align 8 @@ -20906,7 +20904,6 @@ _ZN17QArrayDataPointerI11QCPBarsDataE17allocatedCapacityEv.exit.i.i: ; preds = % %81 = phi i64 [ %80, %78 ], [ 0, %74 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) %82 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %2, i64 noundef 16, i64 noundef 8, i64 noundef %81, i32 noundef 1) #27 - call void @llvm.assume(i1 true) [ "align"(ptr %82, i64 8) ] %83 = load ptr, ptr %2, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) %84 = load ptr, ptr %71, align 8 @@ -21021,7 +21018,6 @@ _ZN17QArrayDataPointerI12QCPGraphDataE17allocatedCapacityEv.exit.i.i: ; preds = %28 = phi i64 [ %27, %25 ], [ 0, %21 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) %29 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %6, i64 noundef 16, i64 noundef 8, i64 noundef %28, i32 noundef 1) #27 - call void @llvm.assume(i1 true) [ "align"(ptr %29, i64 8) ] %30 = load ptr, ptr %6, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) %31 = load ptr, ptr %18, align 8 @@ -21145,7 +21141,6 @@ _ZN17QArrayDataPointerI11QCPBarsDataE17allocatedCapacityEv.exit.i.i: ; preds = % %82 = phi i64 [ %81, %79 ], [ 0, %75 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %83 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 16, i64 noundef 8, i64 noundef %82, i32 noundef 1) #27 - call void @llvm.assume(i1 true) [ "align"(ptr %83, i64 8) ] %84 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %85 = load ptr, ptr %72, align 8 @@ -27150,7 +27145,6 @@ _ZNK17QArrayDataPointerI7QStringE22constAllocatedCapacityEv.exit31: ; preds = %_ %30 = zext i1 %29 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %31 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 24, i64 noundef 8, i64 noundef %27, i32 noundef %30) #27 - call void @llvm.assume(i1 true) [ "align"(ptr %31, i64 8) ] %32 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %32, null @@ -28174,7 +28168,6 @@ _ZNK17QArrayDataPointerI8QVariantE22constAllocatedCapacityEv.exit31: ; preds = % %32 = zext i1 %31 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %33 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 32, i64 noundef 8, i64 noundef %29, i32 noundef %32) #27 - call void @llvm.assume(i1 true) [ "align"(ptr %33, i64 8) ] %34 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %34, null @@ -28767,7 +28760,6 @@ _ZNK17QArrayDataPointerIP7IOGraphE22constAllocatedCapacityEv.exit31: ; preds = % %32 = zext i1 %31 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %33 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 8, i64 noundef 8, i64 noundef %29, i32 noundef %32) #27 - call void @llvm.assume(i1 true) [ "align"(ptr %33, i64 8) ] %34 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %34, null @@ -30360,7 +30352,6 @@ _ZNK17QArrayDataPointerI7QStringE8isSharedEv.exit.thread: ; preds = %2, %_ZNK17Q %.sroa.speculated = tail call i64 @llvm.smax.i64(i64 %1, i64 %22) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) %23 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %3, i64 noundef 24, i64 noundef 8, i64 noundef %.sroa.speculated, i32 noundef 1) #27 - call void @llvm.assume(i1 true) [ "align"(ptr %23, i64 8) ] %24 = load ptr, ptr %3, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) %25 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -30695,7 +30686,6 @@ _ZNK17QArrayDataPointerI12QCPGraphDataE22constAllocatedCapacityEv.exit31: ; pred %32 = zext i1 %31 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %33 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 16, i64 noundef 8, i64 noundef %29, i32 noundef %32) #27 - call void @llvm.assume(i1 true) [ "align"(ptr %33, i64 8) ] %34 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %34, null @@ -30986,7 +30976,6 @@ _ZNK17QArrayDataPointerI11QCPBarsDataE22constAllocatedCapacityEv.exit31: ; preds %32 = zext i1 %31 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %33 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 16, i64 noundef 8, i64 noundef %29, i32 noundef %32) #27 - call void @llvm.assume(i1 true) [ "align"(ptr %33, i64 8) ] %34 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %34, null diff --git a/bench/wireshark/optimized/tcp_stream_dialog.cpp.ll b/bench/wireshark/optimized/tcp_stream_dialog.cpp.ll index d69744b117b..e2b568f67ba 100644 --- a/bench/wireshark/optimized/tcp_stream_dialog.cpp.ll +++ b/bench/wireshark/optimized/tcp_stream_dialog.cpp.ll @@ -6044,7 +6044,6 @@ _ZN17QArrayDataPointerI12QCPGraphDataE17allocatedCapacityEv.exit.i.i: ; preds = %65 = phi i64 [ %64, %62 ], [ 0, %58 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) %66 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %13, i64 noundef 16, i64 noundef 8, i64 noundef %65, i32 noundef 1) #25 - call void @llvm.assume(i1 true) [ "align"(ptr %66, i64 8) ] %67 = load ptr, ptr %13, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) %68 = load ptr, ptr %55, align 8 @@ -6155,7 +6154,6 @@ _ZN17QArrayDataPointerI16QCPErrorBarsDataE17allocatedCapacityEv.exit.i: ; preds %112 = phi i64 [ %111, %109 ], [ 0, %105 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) %113 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %12, i64 noundef 16, i64 noundef 8, i64 noundef %112, i32 noundef 1) #25 - call void @llvm.assume(i1 true) [ "align"(ptr %113, i64 8) ] %114 = load ptr, ptr %12, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) %115 = load ptr, ptr %96, align 8 @@ -6253,7 +6251,6 @@ _ZN17QArrayDataPointerI16QCPErrorBarsDataE17allocatedCapacityEv.exit.i94: ; pred %151 = phi i64 [ %150, %148 ], [ 0, %144 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) %152 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %11, i64 noundef 16, i64 noundef 8, i64 noundef %151, i32 noundef 1) #25 - call void @llvm.assume(i1 true) [ "align"(ptr %152, i64 8) ] %153 = load ptr, ptr %11, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) %154 = load ptr, ptr %135, align 8 @@ -6351,7 +6348,6 @@ _ZN17QArrayDataPointerI16QCPErrorBarsDataE17allocatedCapacityEv.exit.i109: ; pre %190 = phi i64 [ %189, %187 ], [ 0, %183 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) %191 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %10, i64 noundef 16, i64 noundef 8, i64 noundef %190, i32 noundef 1) #25 - call void @llvm.assume(i1 true) [ "align"(ptr %191, i64 8) ] %192 = load ptr, ptr %10, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) %193 = load ptr, ptr %174, align 8 @@ -12871,7 +12867,6 @@ _ZNK17QArrayDataPointerIdE22constAllocatedCapacityEv.exit31.i426: ; preds = %_ZN %586 = zext i1 %585 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6), !noalias !64 %587 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %6, i64 noundef 8, i64 noundef 8, i64 noundef %583, i32 noundef %586) #25, !noalias !64 - call void @llvm.assume(i1 true) [ "align"(ptr %587, i64 8) ] %588 = load ptr, ptr %6, align 8, !noalias !64 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6), !noalias !64 %.not.i427 = icmp ne ptr %588, null @@ -13013,7 +13008,6 @@ _ZNK17QArrayDataPointerIdE22constAllocatedCapacityEv.exit31.i: ; preds = %_ZNK17 %640 = zext i1 %639 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7), !noalias !67 %641 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %7, i64 noundef 8, i64 noundef 8, i64 noundef %637, i32 noundef %640) #25, !noalias !67 - call void @llvm.assume(i1 true) [ "align"(ptr %641, i64 8) ] %642 = load ptr, ptr %7, align 8, !noalias !67 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7), !noalias !67 %.not.i419 = icmp ne ptr %642, null @@ -13159,7 +13153,6 @@ _ZNK17QArrayDataPointerIdE22constAllocatedCapacityEv.exit31.i456: ; preds = %_ZN %703 = zext i1 %702 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4), !noalias !70 %704 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %4, i64 noundef 8, i64 noundef 8, i64 noundef %700, i32 noundef %703) #25, !noalias !70 - call void @llvm.assume(i1 true) [ "align"(ptr %704, i64 8) ] %705 = load ptr, ptr %4, align 8, !noalias !70 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4), !noalias !70 %.not.i457 = icmp ne ptr %705, null @@ -13301,7 +13294,6 @@ _ZNK17QArrayDataPointerIdE22constAllocatedCapacityEv.exit31.i441: ; preds = %_ZN %757 = zext i1 %756 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5), !noalias !73 %758 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 8, i64 noundef 8, i64 noundef %754, i32 noundef %757) #25, !noalias !73 - call void @llvm.assume(i1 true) [ "align"(ptr %758, i64 8) ] %759 = load ptr, ptr %5, align 8, !noalias !73 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5), !noalias !73 %.not.i442 = icmp ne ptr %759, null @@ -13582,7 +13574,6 @@ _ZNK17QArrayDataPointerIdE22constAllocatedCapacityEv.exit31.i494: ; preds = %_ZN %885 = zext i1 %884 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2), !noalias !76 %886 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %2, i64 noundef 8, i64 noundef 8, i64 noundef %882, i32 noundef %885) #25, !noalias !76 - call void @llvm.assume(i1 true) [ "align"(ptr %886, i64 8) ] %887 = load ptr, ptr %2, align 8, !noalias !76 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2), !noalias !76 %.not.i495 = icmp ne ptr %887, null @@ -13724,7 +13715,6 @@ _ZNK17QArrayDataPointerIdE22constAllocatedCapacityEv.exit31.i479: ; preds = %_ZN %940 = zext i1 %939 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3), !noalias !79 %941 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %3, i64 noundef 8, i64 noundef 8, i64 noundef %937, i32 noundef %940) #25, !noalias !79 - call void @llvm.assume(i1 true) [ "align"(ptr %941, i64 8) ] %942 = load ptr, ptr %3, align 8, !noalias !79 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3), !noalias !79 %.not.i480 = icmp ne ptr %942, null @@ -27382,7 +27372,6 @@ _ZNK17QArrayDataPointerI7QStringE22constAllocatedCapacityEv.exit31: ; preds = %_ %30 = zext i1 %29 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %31 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 24, i64 noundef 8, i64 noundef %27, i32 noundef %30) #25 - call void @llvm.assume(i1 true) [ "align"(ptr %31, i64 8) ] %32 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %32, null @@ -28480,7 +28469,6 @@ _ZNK17QArrayDataPointerIdE22constAllocatedCapacityEv.exit31: ; preds = %_ZNK17QA %32 = zext i1 %31 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %33 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 8, i64 noundef 8, i64 noundef %29, i32 noundef %32) #25 - call void @llvm.assume(i1 true) [ "align"(ptr %33, i64 8) ] %34 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %34, null diff --git a/bench/wireshark/optimized/traffic_tree.cpp.ll b/bench/wireshark/optimized/traffic_tree.cpp.ll index a8643d906f4..11dfd7a0914 100644 --- a/bench/wireshark/optimized/traffic_tree.cpp.ll +++ b/bench/wireshark/optimized/traffic_tree.cpp.ll @@ -10229,7 +10229,6 @@ _ZN17QArrayDataPointerI7QStringE17allocatedCapacityEv.exit: ; preds = %5, %9 %12 = phi i64 [ %11, %9 ], [ 0, %5 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) %13 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %2, i64 noundef 24, i64 noundef 8, i64 noundef %12, i32 noundef 1) #25 - call void @llvm.assume(i1 true) [ "align"(ptr %13, i64 8) ] %14 = load ptr, ptr %2, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) %15 = load ptr, ptr %0, align 8 @@ -11967,7 +11966,6 @@ _ZNK17QArrayDataPointerIiE22constAllocatedCapacityEv.exit31: ; preds = %_ZNK17QA %32 = zext i1 %31 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %33 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 4, i64 noundef 8, i64 noundef %29, i32 noundef %32) #25 - call void @llvm.assume(i1 true) [ "align"(ptr %33, i64 8) ] %34 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %34, null @@ -12396,7 +12394,6 @@ _ZNK17QArrayDataPointerIiE8isSharedEv.exit.thread: ; preds = %2, %_ZNK17QArrayDa %.sroa.speculated = tail call i64 @llvm.smax.i64(i64 %1, i64 %23) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) %24 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %3, i64 noundef 4, i64 noundef 8, i64 noundef %.sroa.speculated, i32 noundef 1) #25 - call void @llvm.assume(i1 true) [ "align"(ptr %24, i64 8) ] %25 = load ptr, ptr %3, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) %26 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -12409,7 +12406,7 @@ _ZNK17QArrayDataPointerIiE8isSharedEv.exit.thread: ; preds = %2, %_ZNK17QArrayDa %30 = load ptr, ptr %26, align 8 %.idx = shl i64 %27, 2 %31 = ashr exact i64 %.idx, 2 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %24, ptr align 1 %30, i64 %.idx, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %24, ptr align 1 %30, i64 %.idx, i1 false) br label %_ZN9QtPrivate12QPodArrayOpsIiE10copyAppendEPKiS3_.exit _ZN9QtPrivate12QPodArrayOpsIiE10copyAppendEPKiS3_.exit: ; preds = %_ZNK17QArrayDataPointerIiE8isSharedEv.exit.thread, %29 @@ -13789,7 +13786,6 @@ _ZNK17QArrayDataPointerI7QStringE22constAllocatedCapacityEv.exit31: ; preds = %_ %30 = zext i1 %29 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %31 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 24, i64 noundef 8, i64 noundef %27, i32 noundef %30) #25 - call void @llvm.assume(i1 true) [ "align"(ptr %31, i64 8) ] %32 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %32, null diff --git a/bench/wireshark/optimized/wireshark_main_window.cpp.ll b/bench/wireshark/optimized/wireshark_main_window.cpp.ll index b9980e0b5e5..f49842a6f3a 100644 --- a/bench/wireshark/optimized/wireshark_main_window.cpp.ll +++ b/bench/wireshark/optimized/wireshark_main_window.cpp.ll @@ -71796,7 +71796,6 @@ _ZNK17QArrayDataPointerI7QStringE22constAllocatedCapacityEv.exit31: ; preds = %_ %30 = zext i1 %29 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %31 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 24, i64 noundef 8, i64 noundef %27, i32 noundef %30) #26 - call void @llvm.assume(i1 true) [ "align"(ptr %31, i64 8) ] %32 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %32, null @@ -72407,7 +72406,6 @@ _ZNK17QArrayDataPointerI21register_stat_group_eE22constAllocatedCapacityEv.exit3 %32 = zext i1 %31 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %33 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 4, i64 noundef 8, i64 noundef %29, i32 noundef %32) #26 - call void @llvm.assume(i1 true) [ "align"(ptr %33, i64 8) ] %34 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %34, null @@ -75327,7 +75325,6 @@ _ZNK17QArrayDataPointerI10QByteArrayE22constAllocatedCapacityEv.exit31: ; preds %30 = zext i1 %29 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %31 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 24, i64 noundef 8, i64 noundef %27, i32 noundef %30) #26 - call void @llvm.assume(i1 true) [ "align"(ptr %31, i64 8) ] %32 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %32, null @@ -75618,7 +75615,6 @@ _ZNK17QArrayDataPointerIiE22constAllocatedCapacityEv.exit31: ; preds = %_ZNK17QA %32 = zext i1 %31 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %33 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 4, i64 noundef 8, i64 noundef %29, i32 noundef %32) #26 - call void @llvm.assume(i1 true) [ "align"(ptr %33, i64 8) ] %34 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %34, null @@ -75909,7 +75905,6 @@ _ZNK17QArrayDataPointerISt4pairIP7QActionbEE22constAllocatedCapacityEv.exit31: ; %32 = zext i1 %31 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %33 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 16, i64 noundef 8, i64 noundef %29, i32 noundef %32) #26 - call void @llvm.assume(i1 true) [ "align"(ptr %33, i64 8) ] %34 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %34, null @@ -77435,7 +77430,6 @@ _ZNK17QArrayDataPointerI12QKeySequenceE22constAllocatedCapacityEv.exit31: ; pred %32 = zext i1 %31 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %33 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 8, i64 noundef 8, i64 noundef %29, i32 noundef %32) #26 - call void @llvm.assume(i1 true) [ "align"(ptr %33, i64 8) ] %34 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %34, null @@ -77781,7 +77775,6 @@ _ZNK17QArrayDataPointerIP7QActionE8isSharedEv.exit.thread: ; preds = %2, %_ZNK17 %.sroa.speculated = tail call i64 @llvm.smax.i64(i64 %1, i64 %23) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) %24 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %3, i64 noundef 8, i64 noundef 8, i64 noundef %.sroa.speculated, i32 noundef 1) #26 - call void @llvm.assume(i1 true) [ "align"(ptr %24, i64 8) ] %25 = load ptr, ptr %3, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) %26 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -77794,7 +77787,7 @@ _ZNK17QArrayDataPointerIP7QActionE8isSharedEv.exit.thread: ; preds = %2, %_ZNK17 %30 = load ptr, ptr %26, align 8 %.idx = shl i64 %27, 3 %31 = ashr exact i64 %.idx, 3 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %24, ptr align 1 %30, i64 %.idx, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %24, ptr align 1 %30, i64 %.idx, i1 false) br label %_ZN9QtPrivate12QPodArrayOpsIP7QActionE10copyAppendEPKS2_S5_.exit _ZN9QtPrivate12QPodArrayOpsIP7QActionE10copyAppendEPKS2_S5_.exit: ; preds = %_ZNK17QArrayDataPointerIP7QActionE8isSharedEv.exit.thread, %29 @@ -78355,7 +78348,6 @@ _ZNK17QArrayDataPointerIP7QActionE22constAllocatedCapacityEv.exit31: ; preds = % %32 = zext i1 %31 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %33 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 8, i64 noundef 8, i64 noundef %29, i32 noundef %32) #26 - call void @llvm.assume(i1 true) [ "align"(ptr %33, i64 8) ] %34 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %34, null @@ -80675,7 +80667,6 @@ _ZNK17QArrayDataPointerIP13_rtpstream_idE22constAllocatedCapacityEv.exit31: ; pr %32 = zext i1 %31 to i32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) %33 = call noalias noundef ptr @_ZN10QArrayData8allocateEPPS_xxxNS_16AllocationOptionE(ptr noundef nonnull %5, i64 noundef 8, i64 noundef 8, i64 noundef %29, i32 noundef %32) #26 - call void @llvm.assume(i1 true) [ "align"(ptr %33, i64 8) ] %34 = load ptr, ptr %5, align 8 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) %.not = icmp ne ptr %34, null 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