diff --git a/bench/abc/optimized/abcDfs.ll b/bench/abc/optimized/abcDfs.ll index e2a6f3fc5c0..0d8ffbbd605 100644 --- a/bench/abc/optimized/abcDfs.ll +++ b/bench/abc/optimized/abcDfs.ll @@ -12073,8 +12073,7 @@ Abc_NtkIncrementTravId.exit: ; preds = %Vec_IntGrow.exit.i. %26 = load i32, ptr %25, align 8, !tbaa !14 %27 = add nsw i32 %26, 1 store i32 %27, ptr %25, align 8, !tbaa !14 - %.not.i20 = icmp ne ptr %.pr43, null - tail call void @llvm.assume(i1 %.not.i20) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.pr43) ] br label %Abc_NtkIncrementTravId.exit27 Abc_NtkIncrementTravId.exit.thread40: ; preds = %Vec_IntGrow.exit.i.i diff --git a/bench/abseil-cpp/optimized/cordz_info_test.ll b/bench/abseil-cpp/optimized/cordz_info_test.ll index 2e878bea1a4..bf9e2deadd8 100644 --- a/bench/abseil-cpp/optimized/cordz_info_test.ll +++ b/bench/abseil-cpp/optimized/cordz_info_test.ll @@ -16852,6 +16852,7 @@ define internal void @_ZN4absl13cord_internal12_GLOBAL__N_129CordzInfoTest_RefCo br i1 %.not.i, label %34, label %31 31: ; preds = %.noexc + call void @llvm.assume(i1 true) [ "nonnull"(ptr %30) ] %32 = getelementptr inbounds nuw i8, ptr %30, i64 8 %33 = atomicrmw add ptr %32, i32 2 monotonic, align 4 br label %34 diff --git a/bench/actix-rs/optimized/48duj8tg7v09rmpe.ll b/bench/actix-rs/optimized/48duj8tg7v09rmpe.ll index 74b0186383e..8d8e7feda47 100644 --- a/bench/actix-rs/optimized/48duj8tg7v09rmpe.ll +++ b/bench/actix-rs/optimized/48duj8tg7v09rmpe.ll @@ -736,19 +736,18 @@ define hidden void @_ZN9rand_core11SeedableRng8from_rng17hf872c3ee3795dc0dE(ptr %10 = getelementptr inbounds nuw i8, ptr %0, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %10, ptr noundef nonnull align 16 dereferenceable(48) %.sroa.0, i64 48, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.0) - br label %16 + br label %15 11: ; preds = %2 %12 = extractvalue { ptr, ptr } %5, 1 - %13 = icmp ne ptr %12, null - call void @llvm.assume(i1 %13) - %14 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %6, ptr %14, align 8 - %15 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %12, ptr %15, align 16 - br label %16 - -16: ; preds = %11, %8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %12) ] + %13 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %6, ptr %13, align 8 + %14 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %12, ptr %14, align 16 + br label %15 + +15: ; preds = %11, %8 %.sink = phi i64 [ 0, %8 ], [ 1, %11 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) store i64 %.sink, ptr %0, align 16 diff --git a/bench/actix-rs/optimized/4pry3bojy1efv3uz.ll b/bench/actix-rs/optimized/4pry3bojy1efv3uz.ll index efdbc49f37e..371e43eb12e 100644 --- a/bench/actix-rs/optimized/4pry3bojy1efv3uz.ll +++ b/bench/actix-rs/optimized/4pry3bojy1efv3uz.ll @@ -209,6 +209,7 @@ define hidden noundef ptr @"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u2 %.val911.i = phi ptr [ %.promoted.i, %.lr.ph.i ], [ %13, %9 ] %11 = load <16 x i8>, ptr %10, align 16, !noalias !31 %12 = icmp sgt <16 x i8> %11, splat (i8 -1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val911.i) ] %13 = getelementptr inbounds i8, ptr %.val911.i, i64 -384 %14 = getelementptr inbounds nuw i8, ptr %10, i64 16 %.cast.i = bitcast <16 x i1> %12 to i16 @@ -223,6 +224,7 @@ define hidden noundef ptr @"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u2 %17 = add i16 %.lcssa.i, -1 %18 = and i16 %17, %.lcssa.i store i16 %18, ptr %6, align 8, !alias.scope !28 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3.i) ] %19 = sub nsw i64 0, %16 %20 = getelementptr inbounds { { { { { ptr, i64 } }, {}, {} } }, i32, [1 x i32] }, ptr %.val3.i, i64 %19 %21 = add i64 %3, -1 @@ -264,6 +266,7 @@ define hidden noundef ptr @"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u2 %.val911.i = phi ptr [ %.promoted.i, %.lr.ph.i ], [ %13, %9 ] %11 = load <16 x i8>, ptr %10, align 16, !noalias !40 %12 = icmp sgt <16 x i8> %11, splat (i8 -1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val911.i) ] %13 = getelementptr inbounds i8, ptr %.val911.i, i64 -384 %14 = getelementptr inbounds nuw i8, ptr %10, i64 16 %.cast.i = bitcast <16 x i1> %12 to i16 @@ -278,6 +281,7 @@ define hidden noundef ptr @"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u2 %17 = add i16 %.lcssa.i, -1 %18 = and i16 %17, %.lcssa.i store i16 %18, ptr %6, align 8, !alias.scope !37 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3.i) ] %19 = sub nsw i64 0, %16 %20 = getelementptr inbounds { { { { ptr, i64 } }, {}, {} }, i32, [1 x i32] }, ptr %.val3.i, i64 %19 %21 = add i64 %3, -1 @@ -410,6 +414,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner13drop_elements17h9fe04f5422 %.val911.i.i = phi ptr [ %15, %.lr.ph.i.i ], [ %.sroa.03.018, %11 ] %13 = load <16 x i8>, ptr %12, align 16, !noalias !48 %14 = icmp sgt <16 x i8> %13, splat (i8 -1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val911.i.i) ] %15 = getelementptr inbounds i8, ptr %.val911.i.i, i64 -384 %16 = getelementptr inbounds nuw i8, ptr %12, i64 16 %.cast.i.i = bitcast <16 x i1> %14 to i16 @@ -422,6 +427,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner13drop_elements17h9fe04f5422 %.lcssa.i.i = phi i16 [ %.sroa.84.015, %11 ], [ %.cast.i.i, %.lr.ph.i.i ] %17 = add i16 %.lcssa.i.i, -1 %18 = and i16 %17, %.lcssa.i.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.03.1) ] %19 = add i64 %.sroa.105.016, -1 %20 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true) %21 = zext nneg i16 %20 to i64 @@ -478,6 +484,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner13drop_elements17hd32faf45f1 %.val911.i.i = phi ptr [ %15, %.lr.ph.i.i ], [ %.sroa.03.018, %11 ] %13 = load <16 x i8>, ptr %12, align 16, !noalias !77 %14 = icmp sgt <16 x i8> %13, splat (i8 -1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val911.i.i) ] %15 = getelementptr inbounds i8, ptr %.val911.i.i, i64 -384 %16 = getelementptr inbounds nuw i8, ptr %12, i64 16 %.cast.i.i = bitcast <16 x i1> %14 to i16 @@ -490,6 +497,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner13drop_elements17hd32faf45f1 %.lcssa.i.i = phi i16 [ %.sroa.84.015, %11 ], [ %.cast.i.i, %.lr.ph.i.i ] %17 = add i16 %.lcssa.i.i, -1 %18 = and i16 %17, %.lcssa.i.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.03.1) ] %19 = add i64 %.sroa.105.016, -1 %20 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true) %21 = zext nneg i16 %20 to i64 @@ -549,6 +557,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h783e215 %.val911.i.i.i = phi ptr [ %22, %.lr.ph.i.i.i ], [ %.sroa.03.018.i, %18 ] %20 = load <16 x i8>, ptr %19, align 16, !noalias !106 %21 = icmp sgt <16 x i8> %20, splat (i8 -1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val911.i.i.i) ] %22 = getelementptr inbounds i8, ptr %.val911.i.i.i, i64 -384 %23 = getelementptr inbounds nuw i8, ptr %19, i64 16 %.cast.i.i.i = bitcast <16 x i1> %21 to i16 @@ -561,6 +570,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h783e215 %.lcssa.i.i.i = phi i16 [ %.sroa.84.015.i, %18 ], [ %.cast.i.i.i, %.lr.ph.i.i.i ] %24 = add i16 %.lcssa.i.i.i, -1 %25 = and i16 %24, %.lcssa.i.i.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.03.1.i) ] %26 = add i64 %.sroa.105.016.i, -1 %27 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.lcssa.i.i.i, i1 true) %28 = zext nneg i16 %27 to i64 @@ -650,6 +660,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17ha9ab62d %.val911.i.i.i = phi ptr [ %22, %.lr.ph.i.i.i ], [ %.sroa.03.018.i, %18 ] %20 = load <16 x i8>, ptr %19, align 16, !noalias !138 %21 = icmp sgt <16 x i8> %20, splat (i8 -1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val911.i.i.i) ] %22 = getelementptr inbounds i8, ptr %.val911.i.i.i, i64 -384 %23 = getelementptr inbounds nuw i8, ptr %19, i64 16 %.cast.i.i.i = bitcast <16 x i1> %21 to i16 @@ -662,6 +673,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17ha9ab62d %.lcssa.i.i.i = phi i16 [ %.sroa.84.015.i, %18 ], [ %.cast.i.i.i, %.lr.ph.i.i.i ] %24 = add i16 %.lcssa.i.i.i, -1 %25 = and i16 %24, %.lcssa.i.i.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.03.1.i) ] %26 = add i64 %.sroa.105.016.i, -1 %27 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.lcssa.i.i.i, i1 true) %28 = zext nneg i16 %27 to i64 @@ -806,7 +818,7 @@ define hidden void @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$3new17ha6e269db982b ret void } -; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable +; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: write, target_mem0: none, target_mem1: none) uwtable define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9next_impl17h36e548844c8f16f9E.llvm.8051598444039092977"(ptr noalias noundef align 8 captures(none) dereferenceable(32) %0) unnamed_addr #11 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 24 %3 = load i16, ptr %2, align 8, !alias.scope !194, !noundef !11 @@ -832,6 +844,7 @@ define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9nex %7 = add i16 %.lcssa, -1 %8 = and i16 %7, %.lcssa store i16 %8, ptr %2, align 8, !alias.scope !194 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3) ] %9 = sub nsw i64 0, %6 %10 = getelementptr inbounds { { { { { ptr, i64 } }, {}, {} } }, i32, [1 x i32] }, ptr %.val3, i64 %9 ret ptr %10 @@ -841,6 +854,7 @@ define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9nex %.val911 = phi ptr [ %.promoted, %.lr.ph ], [ %15, %11 ] %13 = load <16 x i8>, ptr %12, align 16, !noalias !197 %14 = icmp sgt <16 x i8> %13, splat (i8 -1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val911) ] %15 = getelementptr inbounds i8, ptr %.val911, i64 -384 %16 = getelementptr inbounds nuw i8, ptr %12, i64 16 %.cast = bitcast <16 x i1> %14 to i16 @@ -848,7 +862,7 @@ define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9nex br i1 %.not.i, label %11, label %._crit_edge } -; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable +; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: write, target_mem0: none, target_mem1: none) uwtable define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9next_impl17hd4f32f52198b99c9E.llvm.8051598444039092977"(ptr noalias noundef align 8 captures(none) dereferenceable(32) %0) unnamed_addr #11 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 24 %3 = load i16, ptr %2, align 8, !alias.scope !200, !noundef !11 @@ -874,6 +888,7 @@ define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9nex %7 = add i16 %.lcssa, -1 %8 = and i16 %7, %.lcssa store i16 %8, ptr %2, align 8, !alias.scope !200 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3) ] %9 = sub nsw i64 0, %6 %10 = getelementptr inbounds { { { { ptr, i64 } }, {}, {} }, i32, [1 x i32] }, ptr %.val3, i64 %9 ret ptr %10 @@ -883,6 +898,7 @@ define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9nex %.val911 = phi ptr [ %.promoted, %.lr.ph ], [ %15, %11 ] %13 = load <16 x i8>, ptr %12, align 16, !noalias !203 %14 = icmp sgt <16 x i8> %13, splat (i8 -1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val911) ] %15 = getelementptr inbounds i8, ptr %.val911, i64 -384 %16 = getelementptr inbounds nuw i8, ptr %12, i64 16 %.cast = bitcast <16 x i1> %14 to i16 @@ -937,7 +953,7 @@ attributes #7 = { nofree norecurse nosync nounwind nonlazybind memory(read, argm attributes #8 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #9 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #10 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #11 = { nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #11 = { nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: write, target_mem0: none, target_mem1: none) 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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } attributes #14 = { nounwind nonlazybind allockind("free") uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" } diff --git a/bench/actix-rs/optimized/5a33a9xfp20c1mrr.ll b/bench/actix-rs/optimized/5a33a9xfp20c1mrr.ll index bd39560b506..f899aa5bc39 100644 --- a/bench/actix-rs/optimized/5a33a9xfp20c1mrr.ll +++ b/bench/actix-rs/optimized/5a33a9xfp20c1mrr.ll @@ -898,12 +898,14 @@ define hidden void @"_ZN4core3ptr87drop_in_place$LT$alloc..boxed..Box$LT$actix_h br label %"_ZN4core3ptr62drop_in_place$LT$actix_http..responses..head..ResponseHead$GT$17hb692267e8bc8925aE.exit" "_ZN4core3ptr62drop_in_place$LT$actix_http..responses..head..ResponseHead$GT$17hb692267e8bc8925aE.exit": ; preds = %17, %.noexc2, %1 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %3) ] tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef 88, i64 noundef 8) #15 ret void 21: ; preds = %7, %.noexc %22 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %3) ] tail call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef 88, i64 noundef 8) #15 resume { ptr, i32 } %22 } @@ -1119,6 +1121,7 @@ common.resume: ; preds = %"_ZN4core3ptr53drop %36 = load ptr, ptr %35, align 8, !nonnull !12, !noundef !12 %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 %38 = load i64, ptr %37, align 8, !noundef !12 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %36) ] br label %"_ZN4core3ptr53drop_in_place$LT$http..header..value..HeaderValue$GT$17h4e02beeeadfaa177E.exit.i.i.i" "_ZN4core3ptr53drop_in_place$LT$http..header..value..HeaderValue$GT$17h4e02beeeadfaa177E.exit.i.i.i": ; preds = %40, %34 @@ -1178,11 +1181,13 @@ common.resume: ; preds = %"_ZN4core3ptr53drop "_ZN4core3ptr83drop_in_place$LT$alloc..raw_vec..RawVec$LT$http..header..value..HeaderValue$GT$$GT$17h8502e2220a3850a7E.exit.i": ; preds = %"_ZN4core3ptr53drop_in_place$LT$http..header..value..HeaderValue$GT$17h4e02beeeadfaa177E.exit7.i.i.i" %67 = mul nuw i64 %3, 40 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %36) ] tail call void @__rust_dealloc(ptr noundef nonnull %36, i64 noundef %67, i64 noundef 8) #15, !noalias !323 br label %common.resume "_ZN4core3ptr76drop_in_place$LT$alloc..vec..Vec$LT$http..header..value..HeaderValue$GT$$GT$17hf2cc884ef86a95e8E.exit": ; preds = %"_ZN4core3ptr53drop_in_place$LT$http..header..value..HeaderValue$GT$17h4e02beeeadfaa177E.exit.i.i.i" %68 = mul nuw i64 %3, 40 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %36) ] tail call void @__rust_dealloc(ptr noundef nonnull %36, i64 noundef %68, i64 noundef 8) #15, !noalias !323 br label %"_ZN4core3ptr63drop_in_place$LT$$u5b$http..header..value..HeaderValue$u5d$$GT$17h3bb6985a81f3dda2E.exit" diff --git a/bench/actix-rs/optimized/83dw2wnqoscdmtc.ll b/bench/actix-rs/optimized/83dw2wnqoscdmtc.ll index e39785b0a8a..e797c5f7bde 100644 --- a/bench/actix-rs/optimized/83dw2wnqoscdmtc.ll +++ b/bench/actix-rs/optimized/83dw2wnqoscdmtc.ll @@ -161,8 +161,7 @@ define hidden void @"_ZN5alloc3str56_$LT$impl$u20$alloc..borrow..ToOwned$u20$for %4 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h7aa9cb48765920a8E"(i64 noundef %2, i1 noundef zeroext false) %5 = extractvalue { i64, ptr } %4, 0 %6 = extractvalue { i64, ptr } %4, 1 - %7 = icmp ne ptr %6, null - tail call void @llvm.assume(i1 %7) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %6) ] tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %6, ptr nonnull align 1 %1, i64 %2, i1 false) store i64 %5, ptr %0, align 8 %.sroa.42.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -187,8 +186,7 @@ define hidden void @"_ZN5alloc6borrow12Cow$LT$B$GT$10into_owned17h84efa79208c010 %10 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h7aa9cb48765920a8E"(i64 noundef %9, i1 noundef zeroext false), !noalias !29 %11 = extractvalue { i64, ptr } %10, 0 %12 = extractvalue { i64, ptr } %10, 1 - %13 = icmp ne ptr %12, null - tail call void @llvm.assume(i1 %13) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %12) ] tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %12, ptr nonnull readonly align 1 %7, i64 %9, i1 false), !noalias !26 store i64 %11, ptr %0, align 8, !alias.scope !26, !noalias !31 %.sroa.42.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 8 diff --git a/bench/anki-rs/optimized/2lb7ct7ebbwm4pw.ll b/bench/anki-rs/optimized/2lb7ct7ebbwm4pw.ll index 384f4da9507..e809e1a0112 100644 --- a/bench/anki-rs/optimized/2lb7ct7ebbwm4pw.ll +++ b/bench/anki-rs/optimized/2lb7ct7ebbwm4pw.ll @@ -199,7 +199,7 @@ define void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_fr %15 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr43drop_in_place$LT$anki_proto_gen..Method$GT$17haf41f5eb221c3047E"(ptr nonnull align 8 %5) #15 - to label %30 unwind label %28 + to label %29 unwind label %28 16: ; preds = %12 %17 = load i64, ptr %4, align 8, !noundef !3 @@ -214,8 +214,7 @@ define void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_fr 22: ; preds = %20 %23 = extractvalue { ptr, i64 } %21, 0 %24 = extractvalue { ptr, i64 } %21, 1 - %25 = icmp ne ptr %23, null - call void @llvm.assume(i1 %25) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %23) ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %23, ptr noundef nonnull align 8 dereferenceable(80) %5, i64 80, i1 false) store ptr %23, ptr %7, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 8 @@ -230,7 +229,7 @@ define void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_fr %27 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr66drop_in_place$LT$alloc..vec..Vec$LT$anki_proto_gen..Method$GT$$GT$17hfc18336c487e1317E"(ptr nonnull align 8 %7) #15 - to label %30 unwind label %28 + to label %29 unwind label %28 "_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_extend17hc5d14f68e06a7c8bE.exit": ; preds = %22 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %7, i64 24, i1 false) @@ -243,7 +242,7 @@ define void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_fr unreachable 30: ; preds = %26, %14 - %.pn = phi { ptr, i32 } [ %27, %26 ], [ %15, %14 ] + %.pn = phi { ptr, i32 } [ %27, %25 ], [ %15, %14 ] resume { ptr, i32 } %.pn } @@ -264,25 +263,23 @@ define align 8 ptr @"_ZN51_$LT$T$u20$as$u20$core..borrow..Borrow$LT$T$GT$$GT$6bo } ; Function Attrs: nonlazybind uwtable -define zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent$LT$K$GT$$GT$10equivalent17h5b147a3dd44ec57eE"(ptr readonly align 8 captures(address_is_null) %0, ptr readonly align 8 captures(address_is_null) %1) unnamed_addr #1 personality ptr @rust_eh_personality { - %3 = icmp ne ptr %0, null - tail call void @llvm.assume(i1 %3) - %4 = icmp ne ptr %1, null - tail call void @llvm.assume(i1 %4) - %5 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 - %6 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %7 = load i64, ptr %6, align 8, !noundef !3 - %8 = tail call { ptr, i64 } @"_ZN97_$LT$core..ops..range..RangeFull$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h0401ead8792c88f5E"(ptr nonnull align 4 %5, i64 %7, ptr nonnull align 8 @anon.d8650f252a778334d2c694542707141d.10) - %9 = extractvalue { ptr, i64 } %8, 0 - %10 = extractvalue { ptr, i64 } %8, 1 - %11 = load ptr, ptr %1, align 8, !nonnull !3, !noundef !3 - %12 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %13 = load i64, ptr %12, align 8, !noundef !3 - %14 = tail call { ptr, i64 } @"_ZN97_$LT$core..ops..range..RangeFull$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h0401ead8792c88f5E"(ptr nonnull align 4 %11, i64 %13, ptr nonnull align 8 @anon.d8650f252a778334d2c694542707141d.10) - %15 = extractvalue { ptr, i64 } %14, 0 - %16 = extractvalue { ptr, i64 } %14, 1 - %17 = tail call zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h1b295f8517b8ca3bE"(ptr align 4 %9, i64 %10, ptr align 4 %15, i64 %16) - ret i1 %17 +define zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent$LT$K$GT$$GT$10equivalent17h5b147a3dd44ec57eE"(ptr readonly align 8 captures(none) %0, ptr readonly align 8 captures(none) %1) unnamed_addr #1 personality ptr @rust_eh_personality { + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] + %3 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 + %4 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %5 = load i64, ptr %4, align 8, !noundef !3 + %6 = tail call { ptr, i64 } @"_ZN97_$LT$core..ops..range..RangeFull$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h0401ead8792c88f5E"(ptr nonnull align 4 %3, i64 %5, ptr nonnull align 8 @anon.d8650f252a778334d2c694542707141d.10) + %7 = extractvalue { ptr, i64 } %6, 0 + %8 = extractvalue { ptr, i64 } %6, 1 + %9 = load ptr, ptr %1, align 8, !nonnull !3, !noundef !3 + %10 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %11 = load i64, ptr %10, align 8, !noundef !3 + %12 = tail call { ptr, i64 } @"_ZN97_$LT$core..ops..range..RangeFull$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h0401ead8792c88f5E"(ptr nonnull align 4 %9, i64 %11, ptr nonnull align 8 @anon.d8650f252a778334d2c694542707141d.10) + %13 = extractvalue { ptr, i64 } %12, 0 + %14 = extractvalue { ptr, i64 } %12, 1 + %15 = tail call zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h1b295f8517b8ca3bE"(ptr align 4 %7, i64 %8, ptr align 4 %13, i64 %14) + ret i1 %15 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/anki-rs/optimized/yhvjx27msub7381.ll b/bench/anki-rs/optimized/yhvjx27msub7381.ll index ca0183b2c52..5bd40f17304 100644 --- a/bench/anki-rs/optimized/yhvjx27msub7381.ll +++ b/bench/anki-rs/optimized/yhvjx27msub7381.ll @@ -11,22 +11,23 @@ target triple = "x86_64-unknown-linux-gnu" @anon.1fd0f21b59ebd390a4b6844ce9c4a3aa.5 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.1fd0f21b59ebd390a4b6844ce9c4a3aa.4, [16 x i8] c"\1A\00\00\00\00\00\00\00\F2\00\00\00I\00\00\00" }>, align 8 ; Function Attrs: nonlazybind uwtable -define zeroext i1 @"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h39c9d34820ec298aE"(ptr readonly align 8 captures(none) %0, ptr readonly align 8 captures(address_is_null) %1) unnamed_addr #0 { +define zeroext i1 @"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h39c9d34820ec298aE"(ptr readonly align 8 captures(none) %0, ptr readonly align 8 captures(none) %1) unnamed_addr #0 { %3 = alloca { ptr, ptr }, align 8 %4 = load ptr, ptr %0, align 8, !nonnull !3, !align !4, !noundef !3 - %5 = icmp ne ptr %1, null - tail call void @llvm.assume(i1 %5) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val = load ptr, ptr %4, align 8, !nonnull !3, !align !4, !noundef !3 %.val1 = load ptr, ptr %1, align 8, !nonnull !3, !align !4, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %6 = load ptr, ptr %.val, align 8, !nonnull !3, !noundef !3 - %7 = getelementptr inbounds nuw i8, ptr %.val, i64 16 - %8 = load i64, ptr %7, align 8, !noundef !3 - %9 = getelementptr inbounds { { { { ptr, i64 }, i64 } }, { { ptr, i32 }, i32, [1 x i32] }, i64, { ptr, [2 x i64] } }, ptr %6, i64 %8 - store ptr %6, ptr %3, align 8 - %10 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store ptr %9, ptr %10, align 8 - %11 = call zeroext i1 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3all17hb844b111d5be2405E"(ptr nonnull align 8 %3, ptr nonnull align 8 %.val1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + %5 = load ptr, ptr %.val, align 8, !nonnull !3, !noundef !3 + %6 = getelementptr inbounds nuw i8, ptr %.val, i64 16 + %7 = load i64, ptr %6, align 8, !noundef !3 + %8 = getelementptr inbounds { { { { ptr, i64 }, i64 } }, { { ptr, i32 }, i32, [1 x i32] }, i64, { ptr, [2 x i64] } }, ptr %5, i64 %7 + store ptr %5, ptr %3, align 8 + %9 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store ptr %8, ptr %9, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1) ] + %10 = call zeroext i1 @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$3all17hb844b111d5be2405E"(ptr nonnull align 8 %3, ptr nonnull align 8 %.val1) call void @llvm.lifetime.end.p0(ptr nonnull %3) ret i1 %11 } @@ -34,20 +35,20 @@ define zeroext i1 @"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..functi ; Function Attrs: nonlazybind uwtable define void @"_ZN4core3ops8function5impls80_$LT$impl$u20$core..ops..function..FnOnce$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$9call_once17hab7d47256a5fe88aE"(ptr writeonly sret({ { { { ptr, i64 }, i64 } }, { { ptr, i32 }, i32, [1 x i32] }, i64, { ptr, [2 x i64] } }) align 8 captures(none) initializes((0, 80)) %0, ptr readonly align 8 captures(none) %1, ptr align 8 %2) unnamed_addr #0 { %4 = alloca { { { { ptr, i64 }, i64 } }, { { ptr, i32 }, i32, [1 x i32] }, i64, { ptr, [2 x i64] } }, align 8 - %5 = icmp ne ptr %2, null - tail call void @llvm.assume(i1 %5) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] %.val = load ptr, ptr %1, align 8, !nonnull !3, !align !4, !noundef !3 tail call void @llvm.experimental.noalias.scope.decl(metadata !5) call void @llvm.lifetime.start.p0(ptr nonnull %4) %6 = getelementptr inbounds nuw i8, ptr %2, i64 48 %7 = load i64, ptr %6, align 8, !noalias !5, !noundef !3 - %8 = getelementptr inbounds nuw i8, ptr %.val, i64 16 - %9 = load i64, ptr %8, align 8, !noalias !5, !noundef !3 - %10 = add i64 %9, %7 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + %7 = getelementptr inbounds nuw i8, ptr %.val, i64 16 + %8 = load i64, ptr %7, align 8, !noalias !5, !noundef !3 + %9 = add i64 %8, %6 call void @"_ZN61_$LT$anki_proto_gen..Method$u20$as$u20$core..clone..Clone$GT$5clone17had7f047f5d3ae9d5E"(ptr nonnull sret({ { { { ptr, i64 }, i64 } }, { { ptr, i32 }, i32, [1 x i32] }, i64, { ptr, [2 x i64] } }) align 8 %4, ptr nonnull align 8 %2), !noalias !5 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) %11 = getelementptr inbounds nuw i8, ptr %0, i64 48 - store i64 %10, ptr %11, align 8, !alias.scope !5 + store i64 %9, ptr %11, align 8, !alias.scope !5 %12 = getelementptr inbounds nuw i8, ptr %4, i64 56 %13 = getelementptr inbounds nuw i8, ptr %0, i64 56 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %12, i64 24, i1 false) diff --git a/bench/boost/optimized/target.ll b/bench/boost/optimized/target.ll index 24d79722dd0..0561bc99f42 100644 --- a/bench/boost/optimized/target.ll +++ b/bench/boost/optimized/target.ll @@ -10713,14 +10713,12 @@ _ZNKSt9type_infoeqERKS_.exit.i8: ; preds = %_ZNK5boost4asio9exe _ZNK5boost4asio9execution6detail17any_executor_base6targetINS0_10io_context19basic_executor_typeISaIvELm0EEEEEPKT_v.exit12: ; preds = %_ZNKSt9type_infoeqERKS_.exit.thread.i11, %_ZNKSt9type_infoeqERKS_.exit.i8 %32 = phi ptr [ %28, %_ZNKSt9type_infoeqERKS_.exit.thread.i11 ], [ %spec.select.i10, %_ZNKSt9type_infoeqERKS_.exit.i8 ] - %33 = icmp ne ptr %19, null - tail call void @llvm.assume(i1 %33) - %34 = icmp ne ptr %32, null - tail call void @llvm.assume(i1 %34) - %35 = load i64, ptr %19, align 8, !tbaa !81 - %36 = load i64, ptr %32, align 8, !tbaa !81 - %37 = icmp eq i64 %35, %36 - ret i1 %37 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %19) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %33) ] + %34 = load i64, ptr %19, align 8, !tbaa !81 + %34 = load i64, ptr %32, align 8, !tbaa !81 + %35 = icmp eq i64 %33, %34 + ret i1 %35 } ; Function Attrs: mustprogress uwtable @@ -10749,8 +10747,7 @@ _ZNKSt9type_infoeqERKS_.exit.i: ; preds = %2 _ZNK5boost4asio9execution6detail17any_executor_base6targetINS0_10io_context19basic_executor_typeISaIvELm0EEEEEPKT_v.exit: ; preds = %_ZNKSt9type_infoeqERKS_.exit.thread.i, %_ZNKSt9type_infoeqERKS_.exit.i %15 = phi ptr [ %11, %_ZNKSt9type_infoeqERKS_.exit.thread.i ], [ %spec.select.i, %_ZNKSt9type_infoeqERKS_.exit.i ] - %16 = icmp ne ptr %15, null - tail call void @llvm.assume(i1 %16) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %15) ] tail call void @_ZNK5boost4asio10io_context19basic_executor_typeISaIvELm0EE7executeINS0_6detail17executor_functionEEEvOT_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %1) ret void } @@ -11777,8 +11774,7 @@ define linkonce_odr hidden void @_ZN5boost10wrapexceptISt9bad_allocEC2ERKS2_(ptr define linkonce_odr hidden void @_ZN5boost4asio6detail11executor_opINS1_17executor_functionESaIvENS1_19scheduler_operationEE11do_completeEPvPS5_RKNS_6system10error_codeEm(ptr noundef %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %3) #10 comdat align 2 personality ptr @__gxx_personality_v0 { %5 = alloca %"class.std::allocator.25", align 1 %6 = alloca %"struct.boost::asio::detail::executor_op>::ptr", align 8 - %7 = icmp ne ptr %1, null - tail call void @llvm.assume(i1 %7) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %6) store ptr %5, ptr %6, align 8, !tbaa !273 @@ -11800,29 +11796,29 @@ _ZN5boost4asio6detail14thread_context24top_of_thread_call_stackEv.exit.i.i: ; pr br i1 %.not3.i, label %.thread.i.i.i, label %.preheader.i.i.i 16: ; preds = %.preheader.i.i.i - br i1 %17, label %.preheader.i.i.i, label %.thread.i.i.i, !llvm.loop !277 - -.preheader.i.i.i: ; preds = %_ZN5boost4asio6detail14thread_context24top_of_thread_call_stackEv.exit.i.i, %16 - %17 = phi i1 [ false, %16 ], [ true, %_ZN5boost4asio6detail14thread_context24top_of_thread_call_stackEv.exit.i.i ] - %indvars.iv.i.i.i = phi i64 [ 1, %16 ], [ 0, %_ZN5boost4asio6detail14thread_context24top_of_thread_call_stackEv.exit.i.i ] - %18 = getelementptr inbounds nuw ptr, ptr %15, i64 %indvars.iv.i.i.i - %19 = load ptr, ptr %18, align 8, !tbaa !4 - %20 = icmp eq ptr %19, null - br i1 %20, label %21, label %16 - -21: ; preds = %.preheader.i.i.i - %22 = getelementptr inbounds nuw ptr, ptr %15, i64 %indvars.iv.i.i.i - %23 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %24 = load i8, ptr %23, align 1, !tbaa !14 - store i8 %24, ptr %1, align 1, !tbaa !14 - store ptr %1, ptr %22, align 8, !tbaa !4 + br i1 %16, label %.preheader.i.i.i, label %.thread.i.i.i, !llvm.loop !277 + +.preheader.i.i.i: ; preds = %_ZN5boost4asio6detail14thread_context24top_of_thread_call_stackEv.exit.i.i, %15 + %16 = phi i1 [ false, %15 ], [ true, %_ZN5boost4asio6detail14thread_context24top_of_thread_call_stackEv.exit.i.i ] + %indvars.iv.i.i.i = phi i64 [ 1, %15 ], [ 0, %_ZN5boost4asio6detail14thread_context24top_of_thread_call_stackEv.exit.i.i ] + %17 = getelementptr inbounds nuw ptr, ptr %14, i64 %indvars.iv.i.i.i + %18 = load ptr, ptr %17, align 8, !tbaa !4 + %19 = icmp eq ptr %18, null + br i1 %19, label %20, label %15 + +.preheader.i.i.i: ; preds = %.preheader.i.i.i + %21 = getelementptr inbounds nuw ptr, ptr %14, i64 %indvars.iv.i.i.i + %22 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %23 = load i8, ptr %22, align 1, !tbaa !14 + store i8 %23, ptr %1, align 1, !tbaa !14 + store ptr %1, ptr %21, align 8, !tbaa !4 br label %_ZN5boost4asio6detail11executor_opINS1_17executor_functionESaIvENS1_19scheduler_operationEE3ptr5resetEv.exit .thread.i.i.i: ; preds = %16, %_ZN5boost4asio6detail14thread_context24top_of_thread_call_stackEv.exit.i.i, %4 call void @free(ptr noundef %1) #38 br label %_ZN5boost4asio6detail11executor_opINS1_17executor_functionESaIvENS1_19scheduler_operationEE3ptr5resetEv.exit -_ZN5boost4asio6detail11executor_opINS1_17executor_functionESaIvENS1_19scheduler_operationEE3ptr5resetEv.exit: ; preds = %21, %.thread.i.i.i +_ZN5boost4asio6detail11executor_opINS1_17executor_functionESaIvENS1_19scheduler_operationEE3ptr5resetEv.exit: ; preds = %20, %.thread.i.i.i store ptr null, ptr %8, align 8, !tbaa !275 %.not = icmp eq ptr %0, null %.not.i10 = icmp eq ptr %11, null @@ -11833,7 +11829,7 @@ _ZN5boost4asio6detail11executor_opINS1_17executor_functionESaIvENS1_19scheduler_ 26: ; preds = %25 %27 = load ptr, ptr %11, align 8, !tbaa !271 - invoke void %27(ptr noundef nonnull %11, i1 noundef zeroext true) + invoke void %26(ptr noundef nonnull %11, i1 noundef zeroext true) to label %.thread unwind label %_ZN5boost4asio6detail17executor_functionD2Ev.exit13 .thread: ; preds = %26, %25 @@ -11854,7 +11850,7 @@ _ZN5boost4asio6detail17executor_functionD2Ev.exit13: ; preds = %26 30: ; preds = %29 %31 = load ptr, ptr %11, align 8, !tbaa !271 - invoke void %31(ptr noundef nonnull %11, i1 noundef zeroext false) + invoke void %30(ptr noundef nonnull %11, i1 noundef zeroext false) to label %_ZN5boost4asio6detail11executor_opINS1_17executor_functionESaIvENS1_19scheduler_operationEE3ptrD2Ev.exit unwind label %32 32: ; preds = %30 @@ -13098,14 +13094,12 @@ _ZNKSt9type_infoeqERKS_.exit.i8: ; preds = %_ZNK5boost4asio9exe _ZNK5boost4asio9execution6detail17any_executor_base6targetINS0_10io_context19basic_executor_typeISaIvELm4EEEEEPKT_v.exit12: ; preds = %_ZNKSt9type_infoeqERKS_.exit.thread.i11, %_ZNKSt9type_infoeqERKS_.exit.i8 %32 = phi ptr [ %28, %_ZNKSt9type_infoeqERKS_.exit.thread.i11 ], [ %spec.select.i10, %_ZNKSt9type_infoeqERKS_.exit.i8 ] - %33 = icmp ne ptr %19, null - tail call void @llvm.assume(i1 %33) - %34 = icmp ne ptr %32, null - tail call void @llvm.assume(i1 %34) - %35 = load i64, ptr %19, align 8, !tbaa !337 - %36 = load i64, ptr %32, align 8, !tbaa !337 - %37 = icmp eq i64 %35, %36 - ret i1 %37 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %19) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %33) ] + %34 = load i64, ptr %19, align 8, !tbaa !337 + %34 = load i64, ptr %32, align 8, !tbaa !337 + %35 = icmp eq i64 %34, %34 + ret i1 %35 } ; Function Attrs: mustprogress uwtable @@ -13134,8 +13128,7 @@ _ZNKSt9type_infoeqERKS_.exit.i: ; preds = %2 _ZNK5boost4asio9execution6detail17any_executor_base6targetINS0_10io_context19basic_executor_typeISaIvELm4EEEEEPKT_v.exit: ; preds = %_ZNKSt9type_infoeqERKS_.exit.thread.i, %_ZNKSt9type_infoeqERKS_.exit.i %15 = phi ptr [ %11, %_ZNKSt9type_infoeqERKS_.exit.thread.i ], [ %spec.select.i, %_ZNKSt9type_infoeqERKS_.exit.i ] - %16 = icmp ne ptr %15, null - tail call void @llvm.assume(i1 %16) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %15) ] tail call void @_ZNK5boost4asio10io_context19basic_executor_typeISaIvELm4EE7executeINS0_6detail17executor_functionEEEvOT_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %1) ret void } diff --git a/bench/c3c/optimized/sema_expr.ll b/bench/c3c/optimized/sema_expr.ll index 126de2caaa5..556494ca695 100644 --- a/bench/c3c/optimized/sema_expr.ll +++ b/bench/c3c/optimized/sema_expr.ll @@ -15945,8 +15945,7 @@ type_flatten.exit: ; preds = %511 br label %sema_expr_analyse_or_error.exit .critedge5.i.thread100: ; preds = %536, %528, %529, %.critedge5.i.thread, %.critedge5.i - %.not183.i = icmp ne ptr %495, null - tail call void @llvm.assume(i1 %.not183.i) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %495) ] %606 = load i32, ptr %495, align 8 %607 = icmp eq i32 %606, 40 br i1 %607, label %608, label %611 @@ -15960,8 +15959,7 @@ type_flatten.exit: ; preds = %511 %.0156.i = phi ptr [ %610, %608 ], [ %495, %.critedge5.i.thread100 ] %612 = getelementptr inbounds nuw i8, ptr %.0156.i, i64 8 %613 = load ptr, ptr %612, align 8 - %.not184.i = icmp ne ptr %510, null - tail call void @llvm.assume(i1 %.not184.i) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %510) ] %614 = load i32, ptr %510, align 8 %615 = icmp eq i32 %614, 40 br i1 %615, label %616, label %619 diff --git a/bench/clap-rs/optimized/2n53bxup1mqegzwp.ll b/bench/clap-rs/optimized/2n53bxup1mqegzwp.ll index 93eb9af69b0..60a89e3f060 100644 --- a/bench/clap-rs/optimized/2n53bxup1mqegzwp.ll +++ b/bench/clap-rs/optimized/2n53bxup1mqegzwp.ll @@ -67,13 +67,13 @@ define noundef zeroext i1 @"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_le br i1 %.not.i.i.i.i.i, label %.critedge38.backedge.i.i, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hd04b32ae75c7a565E.exit.i.i.i" 11: ; preds = %.lr.ph.i.i - %12 = add nuw i64 %1, 1 - tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %12, i64 noundef %1, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.2) #7, !noalias !9 + tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %6, i64 noundef %1, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.2) #8, !noalias !9 unreachable "_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hd04b32ae75c7a565E.exit.i.i.i": ; preds = %9 %13 = getelementptr inbounds i8, ptr %0, i64 %6 - %bcmp.i.i.i.i.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull readonly align 1 %13, i64 %3), !alias.scope !17, !noalias !24 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %13) ] + %bcmp.i.i.i.i.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull readonly align 1 %12, i64 %3), !alias.scope !17, !noalias !24 %bcmp.i.i.i.fr.i.i.i = freeze i32 %bcmp.i.i.i.i.i.i %.not46.i.i = icmp eq i32 %bcmp.i.i.i.fr.i.i.i, 0 br i1 %.not46.i.i, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$4find17h7c8b5932dcb2a7d0E.exit", label %.critedge38.backedge.i.i @@ -84,7 +84,8 @@ define noundef zeroext i1 @"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_le "_ZN4core4iter6traits8iterator8Iterator4find5check28_$u7b$$u7b$closure$u7d$$u7d$17hc5cf0d6b5803a3bbE.exit32.i.i": ; preds = %.critedge38.backedge.i.i, %.critedge38.preheader.i.i %14 = getelementptr inbounds i8, ptr %0, i64 %5 - %bcmp.i.i.i.i29.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull readonly align 1 %14, i64 %3), !alias.scope !25, !noalias !32 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %13) ] + %bcmp.i.i.i.i29.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull readonly align 1 %13, i64 %3), !alias.scope !25, !noalias !32 %bcmp.i.i.i.fr.i30.i.i = freeze i32 %bcmp.i.i.i.i29.i.i %.not37.i.i = icmp eq i32 %bcmp.i.i.i.fr.i30.i.i, 0 br label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$4find17h7c8b5932dcb2a7d0E.exit" @@ -116,11 +117,12 @@ define { i64, i64 } @"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext br i1 %.not.i.i.i.i, label %.critedge38.backedge.i, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hd04b32ae75c7a565E.exit.i.i" 11: ; preds = %.lr.ph.i - tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %6, i64 noundef %1, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.2) #7, !noalias !37 + tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %6, i64 noundef %1, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.2) #8, !noalias !37 unreachable "_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hd04b32ae75c7a565E.exit.i.i": ; preds = %9 %12 = getelementptr inbounds i8, ptr %0, i64 %6 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %12) ] %bcmp.i.i.i.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull readonly align 1 %12, i64 %3), !alias.scope !45, !noalias !37 %bcmp.i.i.i.fr.i.i = freeze i32 %bcmp.i.i.i.i.i %.not46.i = icmp eq i32 %bcmp.i.i.i.fr.i.i, 0 @@ -132,6 +134,7 @@ define { i64, i64 } @"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext "_ZN4core4iter6traits8iterator8Iterator4find5check28_$u7b$$u7b$closure$u7d$$u7d$17hc5cf0d6b5803a3bbE.exit32.i": ; preds = %.critedge38.backedge.i, %.critedge38.preheader.i %13 = getelementptr inbounds i8, ptr %0, i64 %5 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %13) ] %bcmp.i.i.i.i29.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull readonly align 1 %13, i64 %3), !alias.scope !52, !noalias !59 %bcmp.i.i.i.fr.i30.i = freeze i32 %bcmp.i.i.i.i29.i %.not37.i = icmp eq i32 %bcmp.i.i.i.fr.i30.i, 0 @@ -146,12 +149,13 @@ define { i64, i64 } @"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext ret { i64, i64 } %15 } -; Function Attrs: mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: read) uwtable +; Function Attrs: mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable define { ptr, i64 } @"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$12strip_prefix17hc501523431ab0863E"(ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 1 captures(none) %2, i64 noundef %3) unnamed_addr #2 { %.not.i = icmp ugt i64 %3, %1 br i1 %.not.i, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12strip_prefix17hac515435bac00690E.exit", label %5 5: ; preds = %4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] %bcmp.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %0, ptr nonnull readonly align 1 %2, i64 %3), !alias.scope !64 %6 = icmp eq i32 %bcmp.i.i, 0 br i1 %6, label %7, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12strip_prefix17hac515435bac00690E.exit" @@ -169,12 +173,13 @@ define { ptr, i64 } @"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext ret { ptr, i64 } %11 } -; Function Attrs: mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: read) uwtable +; Function Attrs: mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable define noundef zeroext i1 @"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE"(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 1 captures(none) %2, i64 noundef %3) unnamed_addr #2 { %.not.i = icmp ult i64 %1, %3 br i1 %.not.i, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hd16f7bb69e6397e5E.exit", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha932f9614aebdad1E.exit.i" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha932f9614aebdad1E.exit.i": ; preds = %4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] %bcmp.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %2, ptr nonnull readonly align 1 %0, i64 %3), !alias.scope !71 %5 = icmp eq i32 %bcmp.i.i, 0 br label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hd16f7bb69e6397e5E.exit" @@ -235,13 +240,13 @@ define void @"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrE br i1 %.not.i.i.i.i.i, label %.critedge38.backedge.i.i, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hd04b32ae75c7a565E.exit.i.i.i" 12: ; preds = %.lr.ph.i.i - %13 = add nuw i64 %2, 1 - tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %13, i64 noundef %2, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.2) #7, !noalias !83 + tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %7, i64 noundef %2, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.2) #8, !noalias !83 unreachable "_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17hd04b32ae75c7a565E.exit.i.i.i": ; preds = %10 %14 = getelementptr inbounds i8, ptr %1, i64 %7 - %bcmp.i.i.i.i.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %3, ptr nonnull readonly align 1 %14, i64 %4), !alias.scope !91, !noalias !98 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %14) ] + %bcmp.i.i.i.i.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %3, ptr nonnull readonly align 1 %13, i64 %4), !alias.scope !91, !noalias !98 %bcmp.i.i.i.fr.i.i.i = freeze i32 %bcmp.i.i.i.i.i.i %.not46.i.i = icmp eq i32 %bcmp.i.i.i.fr.i.i.i, 0 br i1 %.not46.i.i, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$4find17h7c8b5932dcb2a7d0E.exit.thread16", label %.critedge38.backedge.i.i @@ -252,7 +257,8 @@ define void @"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrE "_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$4find17h7c8b5932dcb2a7d0E.exit": ; preds = %.critedge38.backedge.i.i, %.critedge38.preheader.i.i %15 = getelementptr inbounds i8, ptr %1, i64 %6 - %bcmp.i.i.i.i29.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %3, ptr nonnull readonly align 1 %15, i64 %4), !alias.scope !99, !noalias !106 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %14) ] + %bcmp.i.i.i.i29.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %3, ptr nonnull readonly align 1 %14, i64 %4), !alias.scope !99, !noalias !106 %bcmp.i.i.i.fr.i30.i.i = freeze i32 %bcmp.i.i.i.i29.i.i %.not37.i.i.not = icmp eq i32 %bcmp.i.i.i.fr.i30.i.i, 0 br i1 %.not37.i.i.not, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$4find17h7c8b5932dcb2a7d0E.exit.thread16", label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$4find17h7c8b5932dcb2a7d0E.exit.thread" @@ -264,7 +270,7 @@ define void @"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrE br i1 %17, label %18, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2e16e49de880e58eE.llvm.8584779980762939608.exit" 18: ; preds = %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$4find17h7c8b5932dcb2a7d0E.exit.thread16" - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.sroa.4.0.i19, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.6.llvm.8584779980762939608) #7, !noalias !111 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.sroa.4.0.i19, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.6.llvm.8584779980762939608) #8, !noalias !111 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2e16e49de880e58eE.llvm.8584779980762939608.exit": ; preds = %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$4find17h7c8b5932dcb2a7d0E.exit.thread16" @@ -316,6 +322,9 @@ declare hidden void @_ZN4core9panicking13assert_failed17h78db69186c9d5469E(i8 no ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(ptr captures(none)) #4 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #5 + ; Function Attrs: nocallback nofree nounwind nonlazybind willreturn memory(argmem: read) declare i32 @bcmp(ptr captures(none), ptr captures(none), i64) local_unnamed_addr #5 @@ -324,12 +333,13 @@ declare void @llvm.experimental.noalias.scope.decl(metadata) #6 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 = { mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #2 = { mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #5 = { nocallback nofree nounwind nonlazybind willreturn memory(argmem: read) } -attributes #6 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #7 = { noreturn } +attributes #5 = { nocallback nofree nounwind nonlazybind willreturn memory(argmem: write) } +attributes #6 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: read) } +attributes #7 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #8 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/clap-rs/optimized/4r6y4qxwk52m92uh.ll b/bench/clap-rs/optimized/4r6y4qxwk52m92uh.ll index ed28694df85..8fcead03839 100644 --- a/bench/clap-rs/optimized/4r6y4qxwk52m92uh.ll +++ b/bench/clap-rs/optimized/4r6y4qxwk52m92uh.ll @@ -217,18 +217,19 @@ define { ptr, i64 } @_ZN8clap_lex7RawArgs7peek_os17he56275292fcdee6aE(ptr noalia ; Function Attrs: nonlazybind uwtable define { ptr, ptr } @_ZN8clap_lex7RawArgs9remaining17h51b7b126f9c1f904E(ptr noalias noundef readonly align 8 captures(none) dereferenceable(24) %0, ptr noalias noundef align 8 captures(none) dereferenceable(8) %1) unnamed_addr #2 personality ptr @rust_eh_personality { %3 = load i64, ptr %1, align 8, !noundef !4 - %4 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %.val2 = load i64, ptr %4, align 8, !noundef !4 - %5 = icmp ugt i64 %3, %.val2 - br i1 %5, label %6, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hfb34af44b3b02965E.exit" + %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %.val2 = load ptr, ptr %4, align 8, !nonnull !4, !noundef !4 + %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %.val2 = load i64, ptr %5, align 8, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + %6 = icmp ugt i64 %3, %.val2 + br i1 %6, label %7, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hfb34af44b3b02965E.exit" 6: ; preds = %2 - tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %3, i64 noundef %.val2, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.248846a2e22cbdbe35d199858cf2b949.23) #23, !noalias !22 + tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %3, i64 noundef %.val2, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.248846a2e22cbdbe35d199858cf2b949.23) #24, !noalias !22 unreachable "_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hfb34af44b3b02965E.exit": ; preds = %2 - %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %.val = load ptr, ptr %7, align 8, !nonnull !4, !noundef !4 %8 = getelementptr inbounds { { { { i64, ptr }, i64 } } }, ptr %.val, i64 %3 %9 = getelementptr inbounds { { { { i64, ptr }, i64 } } }, ptr %.val, i64 %.val2 store i64 %.val2, ptr %1, align 8 @@ -351,6 +352,7 @@ define noundef zeroext i1 @_ZN8clap_lex9ParsedArg18is_negative_number17he6231e86 br i1 %or.cond, label %"_ZN8clap_lex9ParsedArg18is_negative_number28_$u7b$$u7b$closure$u7d$$u7d$17h413729e608f85e83E.exit", label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hd16f7bb69e6397e5E.exit.i.i" "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hd16f7bb69e6397e5E.exit.i.i": ; preds = %1 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %8) ] %rhsc.i = load i8, ptr %8, align 1, !alias.scope !43 %rhsc.fr.i = freeze i8 %rhsc.i %11 = icmp eq i8 %rhsc.fr.i, 45 @@ -460,7 +462,7 @@ define void @_ZN8clap_lex9ParsedArg7to_long17hdc1aac1c7ed190f0E(ptr noalias noun br i1 %18, label %19, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2e16e49de880e58eE.llvm.8584779980762939608.exit.i" 19: ; preds = %16 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.fca.1.extract.i20, i64 noundef %.fca.1.extract.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.6.llvm.8584779980762939608) #23, !noalias !52 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.fca.1.extract.i20, i64 noundef %.fca.1.extract.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.6.llvm.8584779980762939608) #24, !noalias !52 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2e16e49de880e58eE.llvm.8584779980762939608.exit.i": ; preds = %16 @@ -468,7 +470,7 @@ define void @_ZN8clap_lex9ParsedArg7to_long17hdc1aac1c7ed190f0E(ptr noalias noun br i1 %20, label %21, label %23 21: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2e16e49de880e58eE.llvm.8584779980762939608.exit.i" - tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %17, i64 noundef %.fca.1.extract.i, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.7.llvm.8584779980762939608) #23, !noalias !49 + tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %17, i64 noundef %.fca.1.extract.i, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.7.llvm.8584779980762939608) #24, !noalias !49 unreachable 22: ; preds = %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$10split_once17h509237bc95af7a93E.exit.thread", %12, %11 @@ -506,8 +508,8 @@ define void @_ZN8clap_lex9ParsedArg7to_long17hdc1aac1c7ed190f0E(ptr noalias noun br label %22 } -; Function Attrs: mustprogress nofree norecurse nounwind nonlazybind willreturn memory(read, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable -define noundef zeroext i1 @_ZN8clap_lex9ParsedArg7is_long17h0d06ccc45c5ff929E(ptr noalias noundef readonly align 8 captures(none) dereferenceable(16) %0) unnamed_addr #11 { +; Function Attrs: mustprogress nofree norecurse nounwind nonlazybind willreturn memory(read, inaccessiblemem: write, target_mem0: none, target_mem1: none) uwtable +define noundef zeroext i1 @_ZN8clap_lex9ParsedArg7is_long17h0d06ccc45c5ff929E(ptr noalias noundef readonly align 8 captures(none) dereferenceable(16) %0) unnamed_addr #12 { %2 = load ptr, ptr %0, align 8, !nonnull !4, !align !31, !noundef !4 %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load i64, ptr %3, align 8, !noundef !4 @@ -515,6 +517,7 @@ define noundef zeroext i1 @_ZN8clap_lex9ParsedArg7is_long17h0d06ccc45c5ff929E(pt br i1 %.not.i.i, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread", label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" "_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit": ; preds = %1 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] %bcmp.i.i.i = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) @anon.248846a2e22cbdbe35d199858cf2b949.26, ptr noundef nonnull readonly align 1 dereferenceable(2) %2, i64 2), !alias.scope !55 %5 = icmp eq i32 %bcmp.i.i.i, 0 br i1 %5, label %6, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread" @@ -552,6 +555,7 @@ define void @_ZN8clap_lex9ParsedArg8to_short17h5708d56a9045f7a7E(ptr noalias nou br i1 %.not.i.i, label %15, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" "_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit": ; preds = %11 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.fca.0.extract.i) ] %rhsc = load i8, ptr %.fca.0.extract.i, align 1 %12 = icmp eq i8 %rhsc, 45 br i1 %12, label %14, label %16 @@ -588,7 +592,7 @@ define void @_ZN8clap_lex9ParsedArg8to_short17h5708d56a9045f7a7E(ptr noalias nou br i1 %.not.i.i.i, label %24, label %_ZN8clap_lex3ext8split_at17hf432e678d412a774E.exit.i.i 24: ; preds = %23 - tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.fc1c78a371a506ea9d587e654a45c3a3.1.llvm.9337090908805262772, i64 noundef 35, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.fc1c78a371a506ea9d587e654a45c3a3.3.llvm.9337090908805262772) #23, !noalias !80 + tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.fc1c78a371a506ea9d587e654a45c3a3.1.llvm.9337090908805262772, i64 noundef 35, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.fc1c78a371a506ea9d587e654a45c3a3.3.llvm.9337090908805262772) #24, !noalias !80 unreachable _ZN8clap_lex3ext8split_at17hf432e678d412a774E.exit.i.i: ; preds = %23 @@ -603,7 +607,7 @@ _ZN8clap_lex3ext8split_at17hf432e678d412a774E.exit.i.i: ; preds = %23 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !87 %27 = getelementptr inbounds nuw i8, ptr %4, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull readonly align 8 dereferenceable(16) %27, i64 16, i1 false), !noalias !72 - call void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.248846a2e22cbdbe35d199858cf2b949.15, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.248846a2e22cbdbe35d199858cf2b949.16, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.248846a2e22cbdbe35d199858cf2b949.30) #23, !noalias !88 + call void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.248846a2e22cbdbe35d199858cf2b949.15, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.248846a2e22cbdbe35d199858cf2b949.16, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.248846a2e22cbdbe35d199858cf2b949.30) #24, !noalias !88 unreachable "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17he9d986bffa271cbbE.exit.i.i": ; preds = %_ZN8clap_lex3ext8split_at17hf432e678d412a774E.exit.i.i @@ -642,8 +646,8 @@ _ZN8clap_lex10ShortFlags3new17hc050306f15f417c3E.exit: ; preds = %19, %"_ZN4core ret void } -; Function Attrs: mustprogress nofree norecurse nounwind nonlazybind willreturn memory(read, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable -define noundef zeroext i1 @_ZN8clap_lex9ParsedArg8is_short17h4f124932d060574aE(ptr noalias noundef readonly align 8 captures(none) dereferenceable(16) %0) unnamed_addr #11 { +; Function Attrs: mustprogress nofree norecurse nounwind nonlazybind willreturn memory(read, inaccessiblemem: write, target_mem0: none, target_mem1: none) uwtable +define noundef zeroext i1 @_ZN8clap_lex9ParsedArg8is_short17h4f124932d060574aE(ptr noalias noundef readonly align 8 captures(none) dereferenceable(16) %0) unnamed_addr #12 { %2 = load ptr, ptr %0, align 8, !nonnull !4, !align !31, !noundef !4 %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load i64, ptr %3, align 8, !noundef !4 @@ -651,6 +655,7 @@ define noundef zeroext i1 @_ZN8clap_lex9ParsedArg8is_short17h4f124932d060574aE(p br i1 %.not.i.i, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread", label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" "_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit": ; preds = %1 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] %rhsc = load i8, ptr %2, align 1 %5 = icmp ne i8 %rhsc, 45 %.not.i.i1 = icmp eq i64 %4, 1 @@ -658,6 +663,7 @@ define noundef zeroext i1 @_ZN8clap_lex9ParsedArg8is_short17h4f124932d060574aE(p br i1 %or.cond, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha932f9614aebdad1E.exit.i.i4" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17ha932f9614aebdad1E.exit.i.i4": ; preds = %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit" + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] %bcmp.i.i.i5 = tail call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) @anon.248846a2e22cbdbe35d199858cf2b949.26, ptr noundef nonnull readonly align 1 dereferenceable(2) %2, i64 2), !alias.scope !89 %6 = icmp ne i32 %bcmp.i.i.i5, 0 br label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$11starts_with17h4baa0d2223d7544fE.exit.thread" @@ -712,7 +718,7 @@ define void @_ZN8clap_lex9ParsedArg7display17h9976f60a07ce43b9E(ptr noalias noun } ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: readwrite, target_mem0: none, target_mem1: none) uwtable -define { i64, i64 } @_ZN8clap_lex10ShortFlags10advance_by17hd7b5dc76a7f69860E(ptr noalias noundef align 8 captures(none) dereferenceable(56) %0, i64 noundef %1) unnamed_addr #12 { +define { i64, i64 } @_ZN8clap_lex10ShortFlags10advance_by17hd7b5dc76a7f69860E(ptr noalias noundef align 8 captures(none) dereferenceable(56) %0, i64 noundef %1) unnamed_addr #13 { %.not = icmp eq i64 %1, 0 br i1 %.not, label %.thread, label %.lr.ph @@ -751,6 +757,7 @@ define { i64, i64 } @_ZN8clap_lex10ShortFlags10advance_by17hd7b5dc76a7f69860E(pt tail call void @llvm.assume(i1 %18) %19 = getelementptr inbounds nuw i8, ptr %9, i64 2 store ptr %19, ptr %3, align 8, !alias.scope !122, !noalias !108 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %14) ] %20 = icmp samesign ugt i8 %15, -33 br i1 %20, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i.i.i", label %.thread53 @@ -760,6 +767,7 @@ define { i64, i64 } @_ZN8clap_lex10ShortFlags10advance_by17hd7b5dc76a7f69860E(pt tail call void @llvm.assume(i1 %22) %23 = getelementptr inbounds nuw i8, ptr %9, i64 3 store ptr %23, ptr %3, align 8, !alias.scope !125, !noalias !108 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %19) ] %24 = icmp samesign ugt i8 %15, -17 br i1 %24, label %25, label %.thread53 @@ -773,6 +781,7 @@ define { i64, i64 } @_ZN8clap_lex10ShortFlags10advance_by17hd7b5dc76a7f69860E(pt tail call void @llvm.assume(i1 %31) %32 = getelementptr inbounds nuw i8, ptr %9, i64 4 store ptr %32, ptr %3, align 8, !alias.scope !128, !noalias !108 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %23) ] %33 = load i8, ptr %23, align 1, !noalias !121, !noundef !4 %34 = shl nuw nsw i32 %17, 18 %35 = and i32 %34, 1835008 @@ -828,7 +837,7 @@ define noundef zeroext i1 @_ZN8clap_lex10ShortFlags8is_empty17h0654b78f2bbd285aE } ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable -define noundef zeroext i1 @_ZN8clap_lex10ShortFlags18is_negative_number17hfbe51699063bd852E(ptr noalias noundef readonly align 8 captures(none) dereferenceable(56) %0) unnamed_addr #13 personality ptr @rust_eh_personality { +define noundef zeroext i1 @_ZN8clap_lex10ShortFlags18is_negative_number17hfbe51699063bd852E(ptr noalias noundef readonly align 8 captures(none) dereferenceable(56) %0) unnamed_addr #14 personality ptr @rust_eh_personality { %2 = getelementptr inbounds nuw i8, ptr %0, i64 40 %3 = load ptr, ptr %2, align 8, !noundef !4 %.not = icmp eq ptr %3, null @@ -929,6 +938,7 @@ define void @_ZN8clap_lex10ShortFlags9next_flag17ha2bfb32424d88ce6E(ptr noalias tail call void @llvm.assume(i1 %15) %16 = getelementptr inbounds nuw i8, ptr %6, i64 2 store ptr %16, ptr %3, align 8, !alias.scope !151 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %10) ] %17 = load i8, ptr %10, align 1, !noalias !150, !noundef !4 %18 = shl nuw nsw i32 %14, 6 %19 = and i8 %17, 63 @@ -946,6 +956,7 @@ define void @_ZN8clap_lex10ShortFlags9next_flag17ha2bfb32424d88ce6E(ptr noalias tail call void @llvm.assume(i1 %25) %26 = getelementptr inbounds nuw i8, ptr %6, i64 3 store ptr %26, ptr %3, align 8, !alias.scope !154 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %16) ] %27 = load i8, ptr %16, align 1, !noalias !150, !noundef !4 %28 = shl nuw nsw i32 %20, 6 %29 = and i8 %27, 63 @@ -961,6 +972,7 @@ define void @_ZN8clap_lex10ShortFlags9next_flag17ha2bfb32424d88ce6E(ptr noalias tail call void @llvm.assume(i1 %36) %37 = getelementptr inbounds nuw i8, ptr %6, i64 4 store ptr %37, ptr %3, align 8, !alias.scope !157 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %26) ] %38 = load i8, ptr %26, align 1, !noalias !150, !noundef !4 %39 = shl nuw nsw i32 %14, 18 %40 = and i32 %39, 1835008 @@ -1031,6 +1043,7 @@ define { ptr, i64 } @_ZN8clap_lex10ShortFlags13next_value_os17hb3f4ea668f9a5a12E %12 = icmp ne ptr %8, %4 tail call void @llvm.assume(i1 %12) %13 = getelementptr inbounds nuw i8, ptr %5, i64 2 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %8) ] %14 = icmp samesign ugt i8 %9, -33 br i1 %14, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha2daf1f17116cc3bE.exit15.i.i", label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit" @@ -1038,6 +1051,7 @@ define { ptr, i64 } @_ZN8clap_lex10ShortFlags13next_value_os17hb3f4ea668f9a5a12E %15 = load i8, ptr %8, align 1, !noalias !169, !noundef !4 %16 = icmp ne ptr %13, %4 tail call void @llvm.assume(i1 %16) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %13) ] %17 = icmp samesign ugt i8 %9, -17 br i1 %17, label %18, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit" @@ -1052,6 +1066,7 @@ define { ptr, i64 } @_ZN8clap_lex10ShortFlags13next_value_os17hb3f4ea668f9a5a12E tail call void @llvm.assume(i1 %25) %26 = getelementptr inbounds nuw i8, ptr %5, i64 4 store ptr %26, ptr %2, align 8, !alias.scope !170 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %19) ] %27 = load i8, ptr %19, align 1, !noalias !169, !noundef !4 %28 = shl nuw nsw i32 %11, 18 %29 = and i32 %28, 1835008 @@ -1077,7 +1092,7 @@ define { ptr, i64 } @_ZN8clap_lex10ShortFlags13next_value_os17hb3f4ea668f9a5a12E br i1 %.not.i, label %42, label %_ZN8clap_lex3ext8split_at17hf432e678d412a774E.exit 42: ; preds = %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit" - tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.fc1c78a371a506ea9d587e654a45c3a3.1.llvm.9337090908805262772, i64 noundef 35, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.fc1c78a371a506ea9d587e654a45c3a3.3.llvm.9337090908805262772) #23, !noalias !173 + tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.fc1c78a371a506ea9d587e654a45c3a3.1.llvm.9337090908805262772, i64 noundef 35, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.fc1c78a371a506ea9d587e654a45c3a3.3.llvm.9337090908805262772) #24, !noalias !173 unreachable _ZN8clap_lex3ext8split_at17hf432e678d412a774E.exit: ; preds = %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfe4b4302862dc0f7E.exit" @@ -1134,6 +1149,7 @@ define void @"_ZN79_$LT$clap_lex..ShortFlags$u20$as$u20$core..iter..traits..iter tail call void @llvm.assume(i1 %15) %16 = getelementptr inbounds nuw i8, ptr %6, i64 2 store ptr %16, ptr %3, align 8, !alias.scope !195, !noalias !177 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %10) ] %17 = load i8, ptr %10, align 1, !noalias !194, !noundef !4 %18 = shl nuw nsw i32 %14, 6 %19 = and i8 %17, 63 @@ -1151,6 +1167,7 @@ define void @"_ZN79_$LT$clap_lex..ShortFlags$u20$as$u20$core..iter..traits..iter tail call void @llvm.assume(i1 %25) %26 = getelementptr inbounds nuw i8, ptr %6, i64 3 store ptr %26, ptr %3, align 8, !alias.scope !198, !noalias !177 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %16) ] %27 = load i8, ptr %16, align 1, !noalias !194, !noundef !4 %28 = shl nuw nsw i32 %20, 6 %29 = and i8 %27, 63 @@ -1166,6 +1183,7 @@ define void @"_ZN79_$LT$clap_lex..ShortFlags$u20$as$u20$core..iter..traits..iter tail call void @llvm.assume(i1 %36) %37 = getelementptr inbounds nuw i8, ptr %6, i64 4 store ptr %37, ptr %3, align 8, !alias.scope !201, !noalias !177 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %26) ] %38 = load i8, ptr %26, align 1, !noalias !194, !noundef !4 %39 = shl nuw nsw i32 %14, 18 %40 = and i32 %39, 1835008 @@ -1310,18 +1328,19 @@ attributes #8 = { mustprogress nofree norecurse nosync nounwind nonlazybind will attributes #9 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: read) 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 nounwind nonlazybind willreturn memory(read, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #12 = { nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: readwrite, target_mem0: none, target_mem1: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #13 = { nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #14 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #15 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } -attributes #16 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #17 = { mustprogress nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } -attributes #18 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #19 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #20 = { nocallback nofree nounwind nonlazybind willreturn memory(argmem: read) } -attributes #21 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #22 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } -attributes #23 = { noreturn } +attributes #12 = { nofree norecurse nosync nounwind nonlazybind memory(read, argmem: write, target_mem0: none, target_mem1: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #13 = { nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: readwrite, target_mem0: none, target_mem1: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #14 = { nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #15 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #16 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #17 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #18 = { mustprogress nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } +attributes #19 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: write) } +attributes #20 = { nocallback nofree nounwind nonlazybind willreturn memory(argmem: readwrite) } +attributes #21 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: read) } +attributes #22 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #23 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } +attributes #24 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/cmake/optimized/nghttp2_session.ll b/bench/cmake/optimized/nghttp2_session.ll index ea85043f44c..12cebc4e196 100644 --- a/bench/cmake/optimized/nghttp2_session.ll +++ b/bench/cmake/optimized/nghttp2_session.ll @@ -13324,17 +13324,16 @@ define dso_local i32 @nghttp2_session_upgrade(ptr noundef %0, ptr noundef %1, i6 nghttp2_session_get_stream.exit: ; preds = %4 %6 = tail call ptr @nghttp2_map_find(ptr noundef %0, i32 noundef 1) #20 - %7 = icmp ne ptr %6, null - tail call void @llvm.assume(i1 %7) - %8 = getelementptr inbounds nuw i8, ptr %6, i64 204 - %9 = load i32, ptr %8, align 4, !tbaa !42 - %10 = icmp eq i32 %9, 5 - %spec.select.i = select i1 %10, ptr null, ptr %6 - %11 = getelementptr inbounds nuw i8, ptr %spec.select.i, i64 212 - %12 = load i32, ptr %11, align 4, !tbaa !246 - %13 = or i32 %12, 1024 - store i32 %13, ptr %11, align 4, !tbaa !246 - br label %14 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %6) ] + %7 = getelementptr inbounds nuw i8, ptr %6, i64 204 + %8 = load i32, ptr %7, align 4, !tbaa !42 + %9 = icmp eq i32 %8, 5 + %spec.select.i = select i1 %9, ptr null, ptr %6 + %10 = getelementptr inbounds nuw i8, ptr %spec.select.i, i64 212 + %11 = load i32, ptr %10, align 4, !tbaa !246 + %12 = or i32 %11, 1024 + store i32 %12, ptr %10, align 4, !tbaa !246 + br label %13 14: ; preds = %4, %nghttp2_session_get_stream.exit ret i32 %5 diff --git a/bench/cpython/optimized/_functoolsmodule.ll b/bench/cpython/optimized/_functoolsmodule.ll index 88b5e3023c7..aa31bdaaafb 100644 --- a/bench/cpython/optimized/_functoolsmodule.ll +++ b/bench/cpython/optimized/_functoolsmodule.ll @@ -1870,23 +1870,22 @@ define internal ptr @placeholder_new(ptr noundef %0, ptr noundef readonly captur get_functools_state_by_type.exit: ; preds = %6, %5 %10 = tail call ptr @PyType_GetModuleByDef(ptr noundef %0, ptr noundef nonnull @_functools_module) #10 - %11 = icmp ne ptr %10, null - tail call void @llvm.assume(i1 %11) - %12 = getelementptr i8, ptr %10, i64 32 - %.val.i = load ptr, ptr %12, align 8, !tbaa !4 - %13 = getelementptr inbounds nuw i8, ptr %.val.i, i64 16 - %14 = load ptr, ptr %13, align 8, !tbaa !16 - %.not18 = icmp eq ptr %14, null - br i1 %.not18, label %20, label %15 - -15: ; preds = %get_functools_state_by_type.exit - %16 = load i32, ptr %14, align 8, !tbaa !21 - %17 = icmp slt i32 %16, 0 - br i1 %17, label %_Py_NewRef.exit, label %18 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %10) ] + %11 = getelementptr i8, ptr %10, i64 32 + %.val.i = load ptr, ptr %11, align 8, !tbaa !4 + %12 = getelementptr inbounds nuw i8, ptr %.val.i, i64 16 + %13 = load ptr, ptr %12, align 8, !tbaa !16 + %.not18 = icmp eq ptr %13, null + br i1 %.not18, label %19, label %14 + +14: ; preds = %get_functools_state_by_type.exit + %15 = load i32, ptr %13, align 8, !tbaa !21 + %16 = icmp slt i32 %15, 0 + br i1 %16, label %_Py_NewRef.exit, label %17 -18: ; preds = %15 - %19 = add nuw i32 %16, 1 - store i32 %19, ptr %14, align 8, !tbaa !21 +18: ; preds = %14 + %19 = add nuw i32 %15, 1 + store i32 %19, ptr %13, align 8, !tbaa !21 br label %_Py_NewRef.exit 20: ; preds = %get_functools_state_by_type.exit @@ -1895,7 +1894,7 @@ get_functools_state_by_type.exit: ; preds = %6, %5 br i1 %22, label %_Py_NewRef.exit, label %23 23: ; preds = %20 - %24 = load ptr, ptr %13, align 8, !tbaa !16 + %24 = load ptr, ptr %12, align 8, !tbaa !16 %25 = icmp eq ptr %24, null br i1 %25, label %26, label %_Py_NewRef.exit @@ -1910,11 +1909,11 @@ get_functools_state_by_type.exit: ; preds = %6, %5 br label %_Py_NewRef.exit20 _Py_NewRef.exit20: ; preds = %26, %29 - store ptr %21, ptr %13, align 8, !tbaa !16 + store ptr %21, ptr %12, align 8, !tbaa !16 br label %_Py_NewRef.exit -_Py_NewRef.exit: ; preds = %18, %15, %23, %_Py_NewRef.exit20, %20, %8 - %.0 = phi ptr [ null, %8 ], [ %21, %23 ], [ null, %20 ], [ %21, %_Py_NewRef.exit20 ], [ %14, %15 ], [ %14, %18 ] +_Py_NewRef.exit: ; preds = %18, %14, %23, %_Py_NewRef.exit20, %20, %8 + %.0 = phi ptr [ null, %8 ], [ %21, %22 ], [ null, %19 ], [ %21, %_Py_NewRef.exit20 ], [ %13, %14 ], [ %13, %17 ] ret ptr %.0 } diff --git a/bench/csmith/optimized/FactUnion.ll b/bench/csmith/optimized/FactUnion.ll index 9c070843711..a5b55a32b60 100644 --- a/bench/csmith/optimized/FactUnion.ll +++ b/bench/csmith/optimized/FactUnion.ll @@ -234,12 +234,11 @@ _ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit: ; preds = %27, %24 %57 = getelementptr inbounds nuw i8, ptr %56, i64 208 %58 = load ptr, ptr %57, align 8, !tbaa !60 %59 = tail call noundef ptr @_Z30get_return_fact_for_invocationPK22FunctionInvocationUserPK8Variable13eFactCategory(ptr noundef nonnull %54, ptr noundef %58, i32 noundef 2) - %60 = icmp ne ptr %59, null - tail call void @llvm.assume(i1 %60) - %61 = tail call ptr @__dynamic_cast(ptr nonnull %59, ptr nonnull @_ZTI4Fact, ptr nonnull @_ZTI9FactUnion, i64 0) #16 - %62 = getelementptr inbounds nuw i8, ptr %61, i64 24 - %63 = load i32, ptr %62, align 8, !tbaa !15 - tail call void @_ZN9FactUnion10make_factsERKSt6vectorIPK8VariableSaIS3_EEi(ptr dead_on_unwind writable sret(%"class.std::vector.7") align 8 %0, ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %63) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %59) ] + %60 = tail call ptr @__dynamic_cast(ptr nonnull %59, ptr nonnull @_ZTI4Fact, ptr nonnull @_ZTI9FactUnion, i64 0) #16 + %61 = getelementptr inbounds nuw i8, ptr %60, i64 24 + %62 = load i32, ptr %61, align 8, !tbaa !15 + tail call void @_ZN9FactUnion10make_factsERKSt6vectorIPK8VariableSaIS3_EEi(ptr dead_on_unwind writable sret(%"class.std::vector.7") align 8 %0, ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %62) br label %_ZNSt6vectorIPK4FactSaIS2_EED2Ev.exit 64: ; preds = %tailrecurse @@ -250,7 +249,7 @@ _ZNSt6vectorIPK8VariableSaIS2_EED2Ev.exit: ; preds = %27, %24 br label %tailrecurse.backedge tailrecurse.backedge: ; preds = %64, %69 - %.tr79.be.in = phi ptr [ %68, %64 ], [ %71, %69 ] + %.tr79.be.in = phi ptr [ %68, %63 ], [ %71, %68 ] %.tr79.be = load ptr, ptr %.tr79.be.in, align 8, !tbaa !77 br label %tailrecurse @@ -934,8 +933,7 @@ _ZNK8Variable14is_union_fieldEv.exit.i: ; preds = %tailrecurse.i br i1 %9, label %_ZNK8Variable21is_inside_union_fieldEv.exit.preheader, label %tailrecurse.i _ZNK8Variable21is_inside_union_fieldEv.exit.preheader: ; preds = %_ZNK8Variable14is_union_fieldEv.exit.i - %.not23 = icmp ne ptr %0, null - tail call void @llvm.assume(i1 %.not23) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] br label %.lr.ph .lr.ph: ; preds = %_ZNK8Variable21is_inside_union_fieldEv.exit.preheader, %.lr.ph diff --git a/bench/csmith/optimized/Variable.ll b/bench/csmith/optimized/Variable.ll index 5e657a9ce92..1962a7e31e1 100644 --- a/bench/csmith/optimized/Variable.ll +++ b/bench/csmith/optimized/Variable.ll @@ -6663,7 +6663,8 @@ _ZNK8Variable14is_union_fieldEv.exit.i.i: ; preds = %tailrecurse.i.i br i1 %116, label %117, label %tailrecurse.i.i 117: ; preds = %_ZNK8Variable14is_union_fieldEv.exit.i.i - %118 = load ptr, ptr %110, align 8, !tbaa !39, !nonnull !105, !noundef !105 + %118 = load ptr, ptr %110, align 8, !tbaa !39 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %118) ] %119 = load i32, ptr %118, align 8, !tbaa !57 %.not7.i6.i = icmp eq i32 %119, 2 br i1 %.not7.i6.i, label %tailrecurse.i42, label %.preheader.i.i44 @@ -9798,7 +9799,8 @@ _ZNK8Variable14is_union_fieldEv.exit.i: ; preds = %tailrecurse.i br i1 %8, label %9, label %tailrecurse.i 9: ; preds = %_ZNK8Variable14is_union_fieldEv.exit.i - %10 = load ptr, ptr %2, align 8, !tbaa !39, !nonnull !105, !noundef !105 + %10 = load ptr, ptr %2, align 8, !tbaa !39 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %10) ] %11 = load i32, ptr %10, align 8, !tbaa !57 %.not7.i6 = icmp eq i32 %11, 2 br i1 %.not7.i6, label %tailrecurse, label %.preheader.i diff --git a/bench/deku-rs/optimized/5vpv8kgcwbq2ocxo8cxpek7im.ll b/bench/deku-rs/optimized/5vpv8kgcwbq2ocxo8cxpek7im.ll index bdf8e25708c..faf7b4a5012 100644 --- a/bench/deku-rs/optimized/5vpv8kgcwbq2ocxo8cxpek7im.ll +++ b/bench/deku-rs/optimized/5vpv8kgcwbq2ocxo8cxpek7im.ll @@ -208,9 +208,11 @@ _ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit: ; preds = %2 store ptr %16, ptr %25, align 8 %.sroa.423.0..sroa_idx = getelementptr inbounds nuw i8, ptr %18, i64 24 store ptr @"_ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17hd8f455fd1d89d1b2E", ptr %.sroa.423.0..sroa_idx, align 8 - %.val = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.val = load ptr, ptr %1, align 8 %26 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val24 = load ptr, ptr %26, align 8, !nonnull !4, !noundef !4 + %.val24 = load ptr, ptr %26, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val24) ] call void @llvm.lifetime.start.p0(ptr nonnull %7), !noalias !31 store ptr @anon.add384122a720165492a0d3fd8ad951f.15, ptr %7, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 8 @@ -236,9 +238,11 @@ _ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit41: ; preds = %2 store ptr %15, ptr %14, align 8 %.sroa.415.0..sroa_idx = getelementptr inbounds nuw i8, ptr %14, i64 8 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h79d8723a8353efdbE", ptr %.sroa.415.0..sroa_idx, align 8 - %.val35 = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.val35 = load ptr, ptr %1, align 8 %29 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val36 = load ptr, ptr %29, align 8, !nonnull !4, !noundef !4 + %.val36 = load ptr, ptr %29, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val35) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val36) ] call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !34 store ptr @anon.add384122a720165492a0d3fd8ad951f.17, ptr %6, align 8 %.sroa.568.0..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -263,9 +267,11 @@ _ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit46: ; preds = %2 store ptr %13, ptr %12, align 8 %.sroa.411.0..sroa_idx = getelementptr inbounds nuw i8, ptr %12, i64 8 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h79d8723a8353efdbE", ptr %.sroa.411.0..sroa_idx, align 8 - %.val33 = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.val33 = load ptr, ptr %1, align 8 %32 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val34 = load ptr, ptr %32, align 8, !nonnull !4, !noundef !4 + %.val34 = load ptr, ptr %32, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val33) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val34) ] call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !37 store ptr @anon.add384122a720165492a0d3fd8ad951f.19, ptr %5, align 8 %.sroa.574.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 8 @@ -290,9 +296,11 @@ _ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit51: ; preds = %2 store ptr %11, ptr %10, align 8 %.sroa.47.0..sroa_idx = getelementptr inbounds nuw i8, ptr %10, i64 8 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h79d8723a8353efdbE", ptr %.sroa.47.0..sroa_idx, align 8 - %.val31 = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.val31 = load ptr, ptr %1, align 8 %35 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val32 = load ptr, ptr %35, align 8, !nonnull !4, !noundef !4 + %.val32 = load ptr, ptr %35, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val31) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val32) ] call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !40 store ptr @anon.add384122a720165492a0d3fd8ad951f.21, ptr %4, align 8 %.sroa.580.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -310,18 +318,22 @@ _ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit51: ; preds = %2 br label %_ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit56 37: ; preds = %2 - %.val29 = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.val29 = load ptr, ptr %1, align 8 %38 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val30 = load ptr, ptr %38, align 8, !nonnull !4, !noundef !4 + %.val30 = load ptr, ptr %38, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val29) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val30) ] %39 = getelementptr inbounds nuw i8, ptr %.val30, i64 24 %40 = load ptr, ptr %39, align 8, !invariant.load !4, !noalias !43, !nonnull !4 %41 = tail call noundef zeroext i1 %40(ptr noundef nonnull align 1 %.val29, ptr noalias noundef nonnull readonly align 1 @anon.add384122a720165492a0d3fd8ad951f.22, i64 noundef 15), !noalias !43 br label %_ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit56 42: ; preds = %2 - %.val27 = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.val27 = load ptr, ptr %1, align 8 %43 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val28 = load ptr, ptr %43, align 8, !nonnull !4, !noundef !4 + %.val28 = load ptr, ptr %43, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val27) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val28) ] %44 = getelementptr inbounds nuw i8, ptr %.val28, i64 24 %45 = load ptr, ptr %44, align 8, !invariant.load !4, !noalias !46, !nonnull !4 %46 = tail call noundef zeroext i1 %45(ptr noundef nonnull align 1 %.val27, ptr noalias noundef nonnull readonly align 1 @anon.add384122a720165492a0d3fd8ad951f.24, i64 noundef 34), !noalias !46 @@ -335,9 +347,11 @@ _ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit66: ; preds = %2 store ptr %9, ptr %8, align 8 %.sroa.43.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 8 store ptr @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h6998ef2b5006b15dE", ptr %.sroa.43.0..sroa_idx, align 8 - %.val25 = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.val25 = load ptr, ptr %1, align 8 %48 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val26 = load ptr, ptr %48, align 8, !nonnull !4, !noundef !4 + %.val26 = load ptr, ptr %48, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val25) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val26) ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !49 store ptr @anon.add384122a720165492a0d3fd8ad951f.27, ptr %3, align 8 %.sroa.598.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -452,6 +466,9 @@ declare noundef range(i32 0, 10) i32 @rust_eh_personality(i32 noundef, i32 nound ; Function Attrs: nonlazybind uwtable declare void @_ZN5alloc3fmt6format12format_inner17hbc00c97fd665fffbE(ptr dead_on_unwind noalias noundef writable sret([24 x i8]) align 8 captures(none) dereferenceable(24), ptr noalias noundef align 8 captures(none) dereferenceable(48)) unnamed_addr #0 +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #5 + ; Function Attrs: nonlazybind uwtable declare noundef zeroext i1 @"_ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17h46a919a088a4abb1E"(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noalias noundef align 8 dereferenceable(24)) unnamed_addr #0 @@ -496,8 +513,9 @@ attributes #1 = { mustprogress nofree norecurse nosync nounwind nonlazybind will attributes #2 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #5 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { noreturn } +attributes #5 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: write) } +attributes #6 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #7 = { noreturn } !llvm.module.flags = !{!0, !1} !llvm.ident = !{!2} diff --git a/bench/delta-rs/optimized/2x36mf26z3hhv78u.ll b/bench/delta-rs/optimized/2x36mf26z3hhv78u.ll index d7cdf4e648c..c9cf5bda534 100644 --- a/bench/delta-rs/optimized/2x36mf26z3hhv78u.ll +++ b/bench/delta-rs/optimized/2x36mf26z3hhv78u.ll @@ -3097,13 +3097,12 @@ define hidden noundef range(i8 0, 3) i8 @"_ZN22aws_smithy_runtime_api6client12in %4 = alloca { i64, [42 x i64] }, align 8 %5 = getelementptr inbounds nuw i8, ptr %0, i64 344 %6 = load i64, ptr %5, align 8, !range !6, !noundef !5 - %7 = icmp ne i64 %6, 2 + %7 = icmp eq i64 %6, 2 %8 = getelementptr inbounds nuw i8, ptr %0, i64 1056 %9 = load i8, ptr %8, align 8, !range !84, !noundef !5 %10 = trunc nuw i8 %9 to i1 - %.not1 = xor i1 %10, true - %brmerge = or i1 %7, %.not1 - br i1 %brmerge, label %11, label %12 + %brmerge.not = and i1 %7, %10 + br i1 %brmerge.not, label %12, label %11 11: ; preds = %2 br i1 %10, label %14, label %13 @@ -3117,7 +3116,6 @@ define hidden noundef range(i8 0, 3) i8 @"_ZN22aws_smithy_runtime_api6client12in br label %12 14: ; preds = %11 - tail call void @llvm.assume(i1 %7) call void @_ZN22aws_smithy_runtime_api4http7request7Request9try_clone17h6791bb70b2509758E(ptr noalias noundef nonnull sret({ i64, [42 x i64] }) align 8 captures(none) dereferenceable(344) %4, ptr noundef nonnull align 8 %5) %15 = getelementptr inbounds nuw i8, ptr %0, i64 1057 store i8 2, ptr %15, align 1 diff --git a/bench/delta-rs/optimized/52n0zllxvyme4vg7.ll b/bench/delta-rs/optimized/52n0zllxvyme4vg7.ll index cbed0b731b6..3c521aa6a3e 100644 --- a/bench/delta-rs/optimized/52n0zllxvyme4vg7.ll +++ b/bench/delta-rs/optimized/52n0zllxvyme4vg7.ll @@ -791,6 +791,7 @@ define hidden noundef zeroext i1 @"_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..D call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @_ZN4core3fmt9Formatter10debug_list17he7f95665c58b7f1eE(ptr noalias noundef nonnull sret({ { ptr, i8, i8, [6 x i8] } }) align 8 captures(none) dereferenceable(16) %5, ptr noalias noundef nonnull align 8 dereferenceable(64) %2) %6 = getelementptr inbounds i8, ptr %0, i64 %1 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %6) ] %7 = icmp eq i64 %1, 0 br i1 %7, label %_ZN4core3fmt8builders9DebugList7entries17hc9b6119b1b27d029E.exit, label %.lr.ph.i @@ -1853,6 +1854,7 @@ define hidden noundef zeroext i1 @"_ZN80_$LT$std..io..Write..write_fmt..Adapter$ 16: ; preds = %11 %.val.i = load ptr, ptr %9, align 8, !noalias !268, !nonnull !4, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %17 = ptrtoint ptr %.val.i to i64 %18 = and i64 %17, 3 switch i64 %18, label %default.unreachable [ @@ -2006,6 +2008,7 @@ define hidden void @"_ZN15deltalake_mount4file14regular_rename28_$u7b$$u7b$closu %25 = load ptr, ptr %24, align 8, !alias.scope !309, !noalias !312, !nonnull !4, !noundef !4 call void @llvm.lifetime.end.p0(ptr nonnull %12), !noalias !300 call void @llvm.lifetime.start.p0(ptr nonnull %11), !noalias !314 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %25) ] invoke void @_ZN3std2io5error14repr_bitpacked11decode_repr17h7f8e389ca306a717E.llvm.16543861533300112609(ptr noalias noundef nonnull sret({ i8, [15 x i8] }) align 8 captures(none) dereferenceable(16) %11, ptr noundef nonnull %25) to label %.noexc26 unwind label %21 @@ -2127,6 +2130,7 @@ _ZN3std2fs6rename17hfdc0114d0fce9968E.exit: ; preds = %46 call void @llvm.lifetime.end.p0(ptr nonnull %9), !noalias !345 call void @llvm.lifetime.end.p0(ptr nonnull %8), !noalias !345 %.val.i.i = load ptr, ptr %10, align 8, !noalias !345, !nonnull !4, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i.i) ] %63 = ptrtoint ptr %.val.i.i to i64 %64 = and i64 %63, 3 switch i64 %64, label %default.unreachable [ diff --git a/bench/diesel-rs/optimized/qtsoo9cro2f5z9.ll b/bench/diesel-rs/optimized/qtsoo9cro2f5z9.ll index c24a7c41edc..a9f8c6bd996 100644 --- a/bench/diesel-rs/optimized/qtsoo9cro2f5z9.ll +++ b/bench/diesel-rs/optimized/qtsoo9cro2f5z9.ll @@ -572,6 +572,7 @@ define hidden void @_ZN25diesel_table_macro_syntax8take_lit17h33c0a88e25bfec0dE( br i1 %31, label %"_ZN25diesel_table_macro_syntax8take_lit28_$u7b$$u7b$closure$u7d$$u7d$17hd19b4a66119bc535E.exit.thread.i", label %"_ZN25diesel_table_macro_syntax8take_lit28_$u7b$$u7b$closure$u7d$$u7d$17hd19b4a66119bc535E.exit.i" "_ZN25diesel_table_macro_syntax8take_lit28_$u7b$$u7b$closure$u7d$$u7d$17hd19b4a66119bc535E.exit.i": ; preds = %23 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %14) ] call void @llvm.lifetime.start.p0(ptr nonnull %8), !noalias !70 store ptr %2, ptr %8, align 8, !noalias !70 store i64 %3, ptr %22, align 8, !noalias !70 @@ -892,6 +893,7 @@ define hidden void @_ZN25diesel_table_macro_syntax8take_lit17hfb9bb12205efe714E( br i1 %31, label %"_ZN25diesel_table_macro_syntax8take_lit28_$u7b$$u7b$closure$u7d$$u7d$17hb928ac29e79f69e7E.exit.thread.i", label %"_ZN25diesel_table_macro_syntax8take_lit28_$u7b$$u7b$closure$u7d$$u7d$17hb928ac29e79f69e7E.exit.i" "_ZN25diesel_table_macro_syntax8take_lit28_$u7b$$u7b$closure$u7d$$u7d$17hb928ac29e79f69e7E.exit.i": ; preds = %23 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %14) ] call void @llvm.lifetime.start.p0(ptr nonnull %8), !noalias !108 store ptr %2, ptr %8, align 8, !noalias !108 store i64 %3, ptr %22, align 8, !noalias !108 diff --git a/bench/egg-rs/optimized/1m5ocab1mrcx5l24.ll b/bench/egg-rs/optimized/1m5ocab1mrcx5l24.ll index 43f0a7defd8..13d50c936a1 100644 --- a/bench/egg-rs/optimized/1m5ocab1mrcx5l24.ll +++ b/bench/egg-rs/optimized/1m5ocab1mrcx5l24.ll @@ -88,7 +88,7 @@ define hidden noundef nonnull align 8 dereferenceable(56) ptr @"_ZN84_$LT$alloc. br i1 %6, label %"_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3bffe445e68c4870E.llvm.16079354848027093366.exit", label %7, !prof !10 7: ; preds = %3 - tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %1, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) #10, !noalias !11 + tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %1, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) #11, !noalias !11 unreachable "_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3bffe445e68c4870E.llvm.16079354848027093366.exit": ; preds = %3 @@ -112,7 +112,7 @@ define hidden noundef nonnull align 8 dereferenceable(40) ptr @"_ZN8indexmap3map br i1 %9, label %"_ZN84_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17hc19996dc9490530eE.llvm.16079354848027093366.exit", label %10, !prof !10 10: ; preds = %1 - tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %5, i64 noundef %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.281238473684458937f08731efa41452.7.llvm.16079354848027093366) #10, !noalias !19 + tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %5, i64 noundef %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.281238473684458937f08731efa41452.7.llvm.16079354848027093366) #11, !noalias !19 unreachable "_ZN84_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..IndexMut$LT$I$GT$$GT$9index_mut17hc19996dc9490530eE.llvm.16079354848027093366.exit": ; preds = %1 @@ -313,9 +313,11 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i: %.sroa.46.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 24 store ptr @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h29975e959083d87cE", ptr %.sroa.46.0..sroa_idx, align 8 %8 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val = load ptr, ptr %8, align 8, !nonnull !4, !noundef !4 + %.val = load ptr, ptr %8, align 8 %9 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val7 = load ptr, ptr %9, align 8, !nonnull !4, !noundef !4 + %.val7 = load ptr, ptr %9, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val7) ] call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !56 store ptr @anon.281238473684458937f08731efa41452.10, ptr %2, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -370,6 +372,9 @@ declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ; Function Attrs: cold noreturn nounwind nonlazybind uwtable declare void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() unnamed_addr #7 +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #8 + ; Function Attrs: nonlazybind uwtable declare noundef zeroext i1 @"_ZN73_$LT$symbol_table..global..GlobalSymbol$u20$as$u20$core..fmt..Display$GT$3fmt17hbdf2ce995d09039dE"(ptr noalias noundef readonly align 4 dereferenceable(4), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #0 @@ -405,11 +410,12 @@ attributes #4 = { mustprogress nofree norecurse nosync nounwind nonlazybind will attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #6 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #7 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #8 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #8 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: write) } attributes #9 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #10 = { noreturn } -attributes #11 = { cold } -attributes #12 = { cold noreturn nounwind } +attributes #10 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #11 = { noreturn } +attributes #12 = { cold } +attributes #13 = { cold noreturn nounwind } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/egg-rs/optimized/2fp1d0strj8iokyf.ll b/bench/egg-rs/optimized/2fp1d0strj8iokyf.ll index 1bee66b018e..286a80e5b44 100644 --- a/bench/egg-rs/optimized/2fp1d0strj8iokyf.ll +++ b/bench/egg-rs/optimized/2fp1d0strj8iokyf.ll @@ -37,6 +37,7 @@ define hidden { ptr, i64 } @"_ZN4core3str21_$LT$impl$u20$str$GT$12trim_matches17 5: ; preds = %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$4next17hcd7a1fbf0842f8b6E.llvm.6823518425481094615.exit.i", %"_ZN52_$LT$char$u20$as$u20$core..str..pattern..Pattern$GT$13into_searcher17h3b0bc60b23cdc925E.llvm.6823518425481094615.exit" %.sroa.6.0 = phi i64 [ 0, %"_ZN52_$LT$char$u20$as$u20$core..str..pattern..Pattern$GT$13into_searcher17h3b0bc60b23cdc925E.llvm.6823518425481094615.exit" ], [ %50, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$4next17hcd7a1fbf0842f8b6E.llvm.6823518425481094615.exit.i" ] %6 = getelementptr inbounds i8, ptr %0, i64 %.sroa.6.0 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %6) ] %7 = icmp eq i64 %.sroa.6.0, %1 br i1 %7, label %_ZN4core3str7pattern8Searcher11next_reject17hda43b8b455e3452aE.llvm.6823518425481094615.exit, label %8 @@ -53,6 +54,7 @@ define hidden { ptr, i64 } @"_ZN4core3str21_$LT$impl$u20$str$GT$12trim_matches17 %15 = icmp ne i64 %14, %1 tail call void @llvm.assume(i1 %15) %16 = getelementptr inbounds nuw i8, ptr %6, i64 2 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %9) ] %17 = load i8, ptr %9, align 1, !noalias !4, !noundef !15 %18 = shl nuw nsw i32 %13, 6 %19 = and i8 %17, 63 @@ -70,6 +72,7 @@ define hidden { ptr, i64 } @"_ZN4core3str21_$LT$impl$u20$str$GT$12trim_matches17 %26 = icmp ne i64 %25, %1 tail call void @llvm.assume(i1 %26) %27 = getelementptr inbounds nuw i8, ptr %6, i64 3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %16) ] %28 = load i8, ptr %16, align 1, !noalias !4, !noundef !15 %29 = shl nuw nsw i32 %20, 6 %30 = and i8 %28, 63 @@ -85,6 +88,7 @@ define hidden { ptr, i64 } @"_ZN4core3str21_$LT$impl$u20$str$GT$12trim_matches17 %37 = icmp ne i64 %36, %1 tail call void @llvm.assume(i1 %37) %38 = getelementptr inbounds nuw i8, ptr %6, i64 4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %27) ] %39 = load i8, ptr %27, align 1, !noalias !4, !noundef !15 %40 = shl nuw nsw i32 %13, 18 %41 = and i32 %40, 1835008 @@ -111,6 +115,7 @@ _ZN4core3str7pattern8Searcher11next_reject17hda43b8b455e3452aE.llvm.682351842548 %.sroa.614.0 = phi i64 [ %50, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$4next17hcd7a1fbf0842f8b6E.llvm.6823518425481094615.exit.i" ], [ undef, %5 ], [ undef, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h917887c7fa076885E.exit.i.i" ] %storemerge.i = phi i1 [ true, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$4next17hcd7a1fbf0842f8b6E.llvm.6823518425481094615.exit.i" ], [ false, %5 ], [ false, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h917887c7fa076885E.exit.i.i" ] %51 = getelementptr inbounds i8, ptr %0, i64 %.sroa.6.1 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %51) ] %52 = ptrtoint ptr %51 to i64 %53 = sub i64 %.sroa.6.1, %52 br label %54 @@ -132,6 +137,7 @@ _ZN4core3str7pattern8Searcher11next_reject17hda43b8b455e3452aE.llvm.682351842548 %63 = icmp ne i64 %.sroa.6.1, %62 tail call void @llvm.assume(i1 %63) %64 = getelementptr inbounds i8, ptr %56, i64 -2 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %64) ] %65 = load i8, ptr %64, align 1, !noalias !16, !noundef !15 %66 = and i8 %65, 31 %67 = zext nneg i8 %66 to i32 @@ -147,6 +153,7 @@ _ZN4core3str7pattern8Searcher11next_reject17hda43b8b455e3452aE.llvm.682351842548 %71 = icmp ne i64 %.sroa.6.1, %70 tail call void @llvm.assume(i1 %71) %72 = getelementptr inbounds i8, ptr %56, i64 -3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %72) ] %73 = load i8, ptr %72, align 1, !noalias !16, !noundef !15 %74 = and i8 %73, 15 %75 = zext nneg i8 %74 to i32 @@ -158,6 +165,7 @@ _ZN4core3str7pattern8Searcher11next_reject17hda43b8b455e3452aE.llvm.682351842548 %78 = icmp ne i64 %.sroa.6.1, %77 tail call void @llvm.assume(i1 %78) %79 = getelementptr inbounds i8, ptr %56, i64 -4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %79) ] %80 = load i8, ptr %79, align 1, !noalias !16, !noundef !15 %81 = and i8 %80, 7 %82 = zext nneg i8 %81 to i32 @@ -229,6 +237,7 @@ define hidden void @_ZN4core3str7pattern15ReverseSearcher16next_reject_back17h5e %5 = getelementptr inbounds nuw i8, ptr %1, i64 16 %6 = load i64, ptr %5, align 8, !alias.scope !27, !noalias !30, !noundef !15 %7 = getelementptr inbounds i8, ptr %4, i64 %6 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %7) ] %8 = ptrtoint ptr %7 to i64 %.promoted = load i64, ptr %3, align 8, !alias.scope !27, !noalias !30 %9 = getelementptr inbounds nuw i8, ptr %1, i64 36 @@ -253,6 +262,7 @@ define hidden void @_ZN4core3str7pattern15ReverseSearcher16next_reject_back17h5e %20 = icmp ne i64 %6, %19 tail call void @llvm.assume(i1 %20) %21 = getelementptr inbounds i8, ptr %13, i64 -2 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %21) ] %22 = load i8, ptr %21, align 1, !noalias !34, !noundef !15 %23 = and i8 %22, 31 %24 = zext nneg i8 %23 to i32 @@ -268,6 +278,7 @@ define hidden void @_ZN4core3str7pattern15ReverseSearcher16next_reject_back17h5e %28 = icmp ne i64 %6, %27 tail call void @llvm.assume(i1 %28) %29 = getelementptr inbounds i8, ptr %13, i64 -3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %29) ] %30 = load i8, ptr %29, align 1, !noalias !34, !noundef !15 %31 = and i8 %30, 15 %32 = zext nneg i8 %31 to i32 @@ -279,6 +290,7 @@ define hidden void @_ZN4core3str7pattern15ReverseSearcher16next_reject_back17h5e %35 = icmp ne i64 %6, %34 tail call void @llvm.assume(i1 %35) %36 = getelementptr inbounds i8, ptr %13, i64 -4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %36) ] %37 = load i8, ptr %36, align 1, !noalias !34, !noundef !15 %38 = and i8 %37, 7 %39 = zext nneg i8 %38 to i32 @@ -347,6 +359,7 @@ define hidden void @_ZN4core3str7pattern8Searcher11next_reject17hda43b8b455e3452 %12 = phi i64 [ %57, %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$4next17hcd7a1fbf0842f8b6E.llvm.6823518425481094615.exit" ], [ %.promoted, %2 ] tail call void @llvm.experimental.noalias.scope.decl(metadata !39) %13 = getelementptr inbounds i8, ptr %4, i64 %12 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %13) ] %14 = icmp eq i64 %12, %6 br i1 %14, label %"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..Searcher$GT$4next17hcd7a1fbf0842f8b6E.llvm.6823518425481094615.exit.thread", label %15 @@ -363,6 +376,7 @@ define hidden void @_ZN4core3str7pattern8Searcher11next_reject17hda43b8b455e3452 %22 = icmp ne i64 %21, %6 tail call void @llvm.assume(i1 %22) %23 = getelementptr inbounds nuw i8, ptr %13, i64 2 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %16) ] %24 = load i8, ptr %16, align 1, !noalias !44, !noundef !15 %25 = shl nuw nsw i32 %20, 6 %26 = and i8 %24, 63 @@ -380,6 +394,7 @@ define hidden void @_ZN4core3str7pattern8Searcher11next_reject17hda43b8b455e3452 %33 = icmp ne i64 %32, %6 tail call void @llvm.assume(i1 %33) %34 = getelementptr inbounds nuw i8, ptr %13, i64 3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %23) ] %35 = load i8, ptr %23, align 1, !noalias !44, !noundef !15 %36 = shl nuw nsw i32 %27, 6 %37 = and i8 %35, 63 @@ -395,6 +410,7 @@ define hidden void @_ZN4core3str7pattern8Searcher11next_reject17hda43b8b455e3452 %44 = icmp ne i64 %43, %6 tail call void @llvm.assume(i1 %44) %45 = getelementptr inbounds nuw i8, ptr %13, i64 4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %34) ] %46 = load i8, ptr %34, align 1, !noalias !44, !noundef !15 %47 = shl nuw nsw i32 %20, 18 %48 = and i32 %47, 1835008 @@ -669,6 +685,7 @@ define hidden void @"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core. %7 = load i64, ptr %6, align 8, !noundef !15 %8 = getelementptr inbounds i8, ptr %5, i64 %4 %9 = getelementptr inbounds i8, ptr %5, i64 %7 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %8) ] %10 = ptrtoint ptr %9 to i64 %11 = icmp eq i64 %4, %7 br i1 %11, label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h917887c7fa076885E.exit.thread11", label %12 @@ -686,6 +703,7 @@ define hidden void @"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core. %19 = icmp ne i64 %18, %7 tail call void @llvm.assume(i1 %19) %20 = getelementptr inbounds nuw i8, ptr %8, i64 2 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %13) ] %21 = load i8, ptr %13, align 1, !noalias !49, !noundef !15 %22 = shl nuw nsw i32 %17, 6 %23 = and i8 %21, 63 @@ -703,6 +721,7 @@ define hidden void @"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core. %30 = icmp ne i64 %29, %7 tail call void @llvm.assume(i1 %30) %31 = getelementptr inbounds nuw i8, ptr %8, i64 3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %20) ] %32 = load i8, ptr %20, align 1, !noalias !49, !noundef !15 %33 = shl nuw nsw i32 %24, 6 %34 = and i8 %32, 63 @@ -718,6 +737,7 @@ define hidden void @"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$u20$core. %41 = icmp ne i64 %40, %7 tail call void @llvm.assume(i1 %41) %42 = getelementptr inbounds nuw i8, ptr %8, i64 4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %31) ] %43 = load i8, ptr %31, align 1, !noalias !49, !noundef !15 %44 = shl nuw nsw i32 %17, 18 %45 = and i32 %44, 1835008 @@ -761,6 +781,7 @@ define hidden void @"_ZN88_$LT$core..str..pattern..CharSearcher$u20$as$u20$core. %7 = load i64, ptr %6, align 8, !noundef !15 %8 = getelementptr inbounds i8, ptr %5, i64 %7 %9 = getelementptr inbounds i8, ptr %5, i64 %4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %8) ] %10 = ptrtoint ptr %8 to i64 %11 = icmp eq i64 %7, %4 br i1 %11, label %"_ZN96_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h189d834bc25f9481E.exit.thread", label %12 @@ -776,6 +797,7 @@ define hidden void @"_ZN88_$LT$core..str..pattern..CharSearcher$u20$as$u20$core. %17 = icmp ne i64 %7, %16 tail call void @llvm.assume(i1 %17) %18 = getelementptr inbounds i8, ptr %9, i64 -2 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %18) ] %19 = load i8, ptr %18, align 1, !noalias !54, !noundef !15 %20 = and i8 %19, 31 %21 = zext nneg i8 %20 to i32 @@ -791,6 +813,7 @@ define hidden void @"_ZN88_$LT$core..str..pattern..CharSearcher$u20$as$u20$core. %25 = icmp ne i64 %7, %24 tail call void @llvm.assume(i1 %25) %26 = getelementptr inbounds i8, ptr %9, i64 -3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %26) ] %27 = load i8, ptr %26, align 1, !noalias !54, !noundef !15 %28 = and i8 %27, 15 %29 = zext nneg i8 %28 to i32 @@ -802,6 +825,7 @@ define hidden void @"_ZN88_$LT$core..str..pattern..CharSearcher$u20$as$u20$core. %32 = icmp ne i64 %7, %31 tail call void @llvm.assume(i1 %32) %33 = getelementptr inbounds i8, ptr %9, i64 -4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %33) ] %34 = load i8, ptr %33, align 1, !noalias !54, !noundef !15 %35 = and i8 %34, 7 %36 = zext nneg i8 %35 to i32 diff --git a/bench/egg-rs/optimized/c6cke9vz8fsxl18.ll b/bench/egg-rs/optimized/c6cke9vz8fsxl18.ll index 8e7a0d95e1a..96000c18959 100644 --- a/bench/egg-rs/optimized/c6cke9vz8fsxl18.ll +++ b/bench/egg-rs/optimized/c6cke9vz8fsxl18.ll @@ -12,6 +12,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %.val = load ptr, ptr %4, align 8, !nonnull !4, !noundef !4 %5 = getelementptr i8, ptr %3, i64 16 %.val1 = load i64, ptr %5, align 8, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %6 = tail call noundef zeroext i1 @"_ZN40_$LT$str$u20$as$u20$core..fmt..Debug$GT$3fmt17hbb23b6687f8daeb3E"(ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1, ptr noalias noundef nonnull align 8 dereferenceable(64) %1) ret i1 %6 } @@ -197,6 +198,9 @@ declare void @llvm.lifetime.start.p0(ptr captures(none)) #4 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(ptr captures(none)) #4 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #5 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #5 @@ -205,7 +209,8 @@ attributes #1 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "tar attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #3 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #6 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/egg-rs/optimized/ptoyfq63qf7sowp.ll b/bench/egg-rs/optimized/ptoyfq63qf7sowp.ll index 17721080409..720a5e7689c 100644 --- a/bench/egg-rs/optimized/ptoyfq63qf7sowp.ll +++ b/bench/egg-rs/optimized/ptoyfq63qf7sowp.ll @@ -47,10 +47,8 @@ target triple = "x86_64-unknown-linux-gnu" define internal fastcc noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E(ptr %.32.val, ptr %.40.val, ptr noalias noundef nonnull readonly align 8 captures(none) dereferenceable(48) %0) unnamed_addr #0 { _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) - %3 = icmp ne ptr %.40.val, null - tail call void @llvm.assume(i1 %3) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.32.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.40.val) ] call void @llvm.lifetime.start.p0(ptr nonnull %1) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull align 8 dereferenceable(48) %0, i64 48, i1 false) %4 = call noundef zeroext i1 @_ZN4core3fmt5write17hc090a2ffd6b28c4aE(ptr noundef nonnull align 1 %.32.val, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.40.val, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %1) @@ -388,15 +386,19 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i: %22 = alloca [16 x i8], align 8 %23 = alloca [16 x i8], align 8 %24 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val169 = load ptr, ptr %24, align 8, !nonnull !14, !noundef !14 + %.val169 = load ptr, ptr %24, align 8 %25 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val170 = load ptr, ptr %25, align 8, !nonnull !14, !noundef !14 + %.val170 = load ptr, ptr %25, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val169) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val170) ] %26 = getelementptr inbounds nuw i8, ptr %.val170, i64 24 %27 = load ptr, ptr %26, align 8, !invariant.load !14, !noalias !124, !nonnull !14 %28 = tail call noundef zeroext i1 %27(ptr noundef nonnull align 1 %.val169, ptr noalias noundef nonnull readonly align 1 @anon.b1f18bcfaa6eebcdd00c9bf773d8bb51.12, i64 noundef 14), !noalias !124 br i1 %28, label %95, label %_ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i171 _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i171: ; preds = %_ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val169) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val170) ] %29 = tail call noundef zeroext i1 %27(ptr noundef nonnull align 1 %.val169, ptr noalias noundef nonnull readonly align 1 @anon.b1f18bcfaa6eebcdd00c9bf773d8bb51.14, i64 noundef 14), !noalias !127 br i1 %29, label %95, label %_ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit182 @@ -405,6 +407,8 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit182: ; preds = %_ZN4cor store ptr %0, ptr %23, align 8 %.sroa.488.0..sroa_idx = getelementptr inbounds nuw i8, ptr %23, i64 8 store ptr @"_ZN57_$LT$egg..run..StopReason$u20$as$u20$core..fmt..Debug$GT$3fmt17h05e07cc7d21ba61eE", ptr %.sroa.488.0..sroa_idx, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val169) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val170) ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !130 store ptr @anon.b1f18bcfaa6eebcdd00c9bf773d8bb51.18, ptr %3, align 8 %.sroa.5200.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -426,6 +430,8 @@ _ZN4core3fmt9Formatter9write_fmt17h221a3e46c5f11a57E.exit188: ; preds = %_ZN4cor store ptr %31, ptr %22, align 8 %.sroa.492.0..sroa_idx = getelementptr inbounds nuw i8, ptr %22, i64 8 store ptr @"_ZN4core3fmt3num3imp54_$LT$impl$u20$core..fmt..Display$u20$for$u20$usize$GT$3fmt17h7e93687954fa76c5E", ptr %.sroa.492.0..sroa_idx, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val169) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val170) ] call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !133 store ptr @anon.b1f18bcfaa6eebcdd00c9bf773d8bb51.20, ptr %2, align 8 %.sroa.5206.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 diff --git a/bench/faiss/optimized/IVFlib.ll b/bench/faiss/optimized/IVFlib.ll index dae2a07da8c..40c8890bd5d 100644 --- a/bench/faiss/optimized/IVFlib.ll +++ b/bench/faiss/optimized/IVFlib.ll @@ -740,27 +740,26 @@ _ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit: ; preds = %6 %.sroa.0.0 = phi ptr [ null, %6 ], [ %9, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit ], [ null, %4 ] %.015 = phi ptr [ %1, %6 ], [ %9, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit ], [ %1, %4 ] %.0 = phi ptr [ %0, %6 ], [ %11, %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EE5resetIPfvEEvT_.exit ], [ null, %4 ] - %12 = icmp ne ptr %.0, null - tail call void @llvm.assume(i1 %12) - %13 = tail call ptr @__dynamic_cast(ptr nonnull %.0, ptr nonnull @_ZTIN5faiss5IndexE, ptr nonnull @_ZTIN5faiss8IndexIVFE, i64 0) #20 - %14 = getelementptr inbounds nuw i8, ptr %13, i64 48 - %15 = load ptr, ptr %14, align 8, !tbaa !36 - %16 = sext i32 %2 to i64 - %17 = load ptr, ptr %15, align 8, !tbaa !32 - %18 = getelementptr inbounds nuw i8, ptr %17, i64 56 - %19 = load ptr, ptr %18, align 8 - invoke void %19(ptr noundef nonnull align 8 dereferenceable(36) %15, i64 noundef %16, ptr noundef %.015, ptr noundef %3, i64 noundef 1) - to label %20 unwind label %21 - -20: ; preds = %.thread + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.0) ] + %12 = tail call ptr @__dynamic_cast(ptr nonnull %.0, ptr nonnull @_ZTIN5faiss5IndexE, ptr nonnull @_ZTIN5faiss8IndexIVFE, i64 0) #20 + %13 = getelementptr inbounds nuw i8, ptr %12, i64 48 + %14 = load ptr, ptr %13, align 8, !tbaa !36 + %15 = sext i32 %2 to i64 + %16 = load ptr, ptr %14, align 8, !tbaa !32 + %17 = getelementptr inbounds nuw i8, ptr %16, i64 56 + %18 = load ptr, ptr %17, align 8 + invoke void %18(ptr noundef nonnull align 8 dereferenceable(36) %14, i64 noundef %15, ptr noundef %.015, ptr noundef %3, i64 noundef 1) + to label %19 unwind label %20 + +19: ; preds = %.thread %.not.i = icmp eq ptr %.sroa.0.0, null br i1 %.not.i, label %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit, label %_ZNKSt14default_deleteIA_fEclIfEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i -_ZNKSt14default_deleteIA_fEclIfEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i: ; preds = %20 +_ZNKSt14default_deleteIA_fEclIfEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i: ; preds = %19 tail call void @_ZdaPv(ptr noundef nonnull %.sroa.0.0) #27 br label %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit -_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit: ; preds = %20, %_ZNKSt14default_deleteIA_fEclIfEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i +_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit: ; preds = %19, %_ZNKSt14default_deleteIA_fEclIfEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i ret void 21: ; preds = %.thread diff --git a/bench/fish-rs/optimized/czc1lx326fyc2pd0sgvwfm67e.ll b/bench/fish-rs/optimized/czc1lx326fyc2pd0sgvwfm67e.ll index b3ead9873f3..17514707e6e 100644 --- a/bench/fish-rs/optimized/czc1lx326fyc2pd0sgvwfm67e.ll +++ b/bench/fish-rs/optimized/czc1lx326fyc2pd0sgvwfm67e.ll @@ -85,6 +85,7 @@ define { ptr, i64 } @"_ZN91_$LT$$RF$widestring..utfstr..Utf32Str$u20$as$u20$fish .lr.ph.i.i.i: ; preds = %.lr.ph.i.i.i.preheader, %"_ZN115_$LT$core..iter..adapters..take_while..TakeWhile$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold5check28_$u7b$$u7b$closure$u7d$$u7d$17h915bea6934e9cd93E.exit.i.i.i" %.sroa.01.018.i.i.i = phi i64 [ %14, %"_ZN115_$LT$core..iter..adapters..take_while..TakeWhile$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold5check28_$u7b$$u7b$closure$u7d$$u7d$17h915bea6934e9cd93E.exit.i.i.i" ], [ 0, %.lr.ph.i.i.i.preheader ] %11 = phi ptr [ %13, %"_ZN115_$LT$core..iter..adapters..take_while..TakeWhile$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold5check28_$u7b$$u7b$closure$u7d$$u7d$17h915bea6934e9cd93E.exit.i.i.i" ], [ %3, %.lr.ph.i.i.i.preheader ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %11) ] %12 = load i32, ptr %11, align 4, !range !5, !alias.scope !7, !noalias !10, !noundef !3 %.not.i.i.i.i = icmp eq i32 %12, 37 br i1 %.not.i.i.i.i, label %"_ZN115_$LT$core..iter..adapters..take_while..TakeWhile$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h3d88d3c339f7a055E.exit", label %"_ZN115_$LT$core..iter..adapters..take_while..TakeWhile$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold5check28_$u7b$$u7b$closure$u7d$$u7d$17h915bea6934e9cd93E.exit.i.i.i" @@ -113,6 +114,7 @@ define { ptr, i64 } @"_ZN91_$LT$$RF$widestring..utfstr..Utf32Str$u20$as$u20$fish .lr.ph.i.i.i6: ; preds = %.lr.ph.i.i.i6.preheader, %"_ZN115_$LT$core..iter..adapters..take_while..TakeWhile$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold5check28_$u7b$$u7b$closure$u7d$$u7d$17h24347fdb85971813E.exit.i.i.i" %.sroa.01.018.i.i.i7 = phi i64 [ %23, %"_ZN115_$LT$core..iter..adapters..take_while..TakeWhile$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold5check28_$u7b$$u7b$closure$u7d$$u7d$17h24347fdb85971813E.exit.i.i.i" ], [ 0, %.lr.ph.i.i.i6.preheader ] %19 = phi ptr [ %22, %"_ZN115_$LT$core..iter..adapters..take_while..TakeWhile$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold5check28_$u7b$$u7b$closure$u7d$$u7d$17h24347fdb85971813E.exit.i.i.i" ], [ %18, %.lr.ph.i.i.i6.preheader ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %19) ] %20 = load i32, ptr %19, align 4, !range !5, !alias.scope !19, !noalias !22, !noundef !3 %21 = icmp eq i32 %20, 37 br i1 %21, label %"_ZN115_$LT$core..iter..adapters..take_while..TakeWhile$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold5check28_$u7b$$u7b$closure$u7d$$u7d$17h24347fdb85971813E.exit.i.i.i", label %"_ZN115_$LT$core..iter..adapters..take_while..TakeWhile$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hb9cfb931e4583b18E.exit" @@ -151,7 +153,7 @@ define { ptr, i64 } @"_ZN91_$LT$$RF$widestring..utfstr..Utf32Str$u20$as$u20$fish br i1 %36, label %37, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h18ff10cb156c632fE.exit", !prof !6 37: ; preds = %30 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h295f890f9c88ef86E(i64 noundef %35, i64 noundef %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.db5b5264aa4d041cff4cacb9b40c1303.3) #6, !noalias !30 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h295f890f9c88ef86E(i64 noundef %35, i64 noundef %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.db5b5264aa4d041cff4cacb9b40c1303.3) #7, !noalias !30 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h18ff10cb156c632fE.exit": ; preds = %30 @@ -171,6 +173,9 @@ declare void @_ZN4core5slice5index24slice_end_index_len_fail17h295f890f9c88ef86E ; Function Attrs: nounwind nonlazybind uwtable declare noundef range(i32 0, 10) i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #5 +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #6 + ; Function Attrs: cold noreturn nonlazybind uwtable declare void @_ZN4core6option13expect_failed17h89918c64c89b4471E(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #4 @@ -186,7 +191,8 @@ attributes #2 = { mustprogress nofree norecurse nosync nounwind nonlazybind will attributes #3 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #5 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #6 = { noreturn } +attributes #6 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #7 = { noreturn } !llvm.module.flags = !{!0, !1} !llvm.ident = !{!2} diff --git a/bench/fish-rs/optimized/dtp7ktj49b8sopaubz8bv9d8a.ll b/bench/fish-rs/optimized/dtp7ktj49b8sopaubz8bv9d8a.ll index 72d8f4424fc..d51796d8a0b 100644 --- a/bench/fish-rs/optimized/dtp7ktj49b8sopaubz8bv9d8a.ll +++ b/bench/fish-rs/optimized/dtp7ktj49b8sopaubz8bv9d8a.ll @@ -223,6 +223,7 @@ define noundef range(i32 0, 1114113) i32 @"_ZN66_$LT$$RF$str$u20$as$u20$fish_pri .lr.ph.i: ; preds = %10 %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %3, i64 8 %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %3, i64 16 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.5.0..sroa_idx.i) ] br label %16 .loopexit.i: ; preds = %38, %.lr.ph40.i, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha21ba39c927a9d87E.exit.thread.i", %2 @@ -259,9 +260,9 @@ define noundef range(i32 0, 1114113) i32 @"_ZN66_$LT$$RF$str$u20$as$u20$fish_pri call void @llvm.experimental.noalias.scope.decl(metadata !11) br label %.lr.ph.i.i.i -.lr.ph.i.i.i: ; preds = %.lr.ph.i.i.i, %17 - %.sroa.0.08.i.i.i = phi i8 [ %22, %.lr.ph.i.i.i ], [ 0, %17 ] - %18 = phi i64 [ %19, %.lr.ph.i.i.i ], [ 0, %17 ] +.lr.ph.i.i.i: ; preds = %17, %.lr.ph.i.i.i + %.sroa.0.08.i.i.i = phi i8 [ 0, %.lr.ph.i.i.i ], [ %22, %17 ] + %18 = phi i64 [ 0, %.lr.ph.i.i.i ], [ %19, %17 ] %19 = add nuw nsw i64 %18, 1 %20 = getelementptr inbounds nuw i8, ptr %.sroa.5.0..sroa_idx.i, i64 %18 %21 = load i8, ptr %20, align 1, !range !13, !alias.scope !14, !noalias !17, !noundef !3 @@ -347,6 +348,7 @@ define noundef range(i32 0, 1114113) i32 @"_ZN66_$LT$$RF$str$u20$as$u20$fish_pri %56 = zext nneg i8 %55 to i32 %57 = icmp ne ptr %54, %8 call void @llvm.assume(i1 %57) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %54) ] %58 = load i8, ptr %54, align 1, !noalias !20, !noundef !3 %59 = shl nuw nsw i32 %56, 6 %60 = and i8 %58, 63 @@ -363,6 +365,7 @@ define noundef range(i32 0, 1114113) i32 @"_ZN66_$LT$$RF$str$u20$as$u20$fish_pri %66 = getelementptr inbounds nuw i8, ptr %.sroa.0.3.ph, i64 2 %67 = icmp ne ptr %66, %8 call void @llvm.assume(i1 %67) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %66) ] %68 = load i8, ptr %66, align 1, !noalias !20, !noundef !3 %69 = shl nuw nsw i32 %61, 6 %70 = and i8 %68, 63 @@ -377,6 +380,7 @@ define noundef range(i32 0, 1114113) i32 @"_ZN66_$LT$$RF$str$u20$as$u20$fish_pri %76 = getelementptr inbounds nuw i8, ptr %.sroa.0.3.ph, i64 3 %77 = icmp ne ptr %76, %8 call void @llvm.assume(i1 %77) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %76) ] %78 = load i8, ptr %76, align 1, !noalias !20, !noundef !3 %79 = shl nuw nsw i32 %56, 18 %80 = and i32 %79, 1835008 @@ -427,12 +431,14 @@ define void @"_ZN66_$LT$$RF$str$u20$as$u20$fish_printf..printf_impl..FormatStrin %16 = icmp ne ptr %13, %7 tail call void @llvm.assume(i1 %16) %17 = getelementptr inbounds nuw i8, ptr %.sroa.0.013, i64 2 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %13) ] %18 = icmp samesign ugt i8 %14, -33 br i1 %18, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd348f569470c642bE.exit14.i", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd348f569470c642bE.exit16.i" "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd348f569470c642bE.exit14.i": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd348f569470c642bE.exit12.i" %19 = icmp ne ptr %17, %7 tail call void @llvm.assume(i1 %19) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %17) ] %20 = icmp samesign ugt i8 %14, -17 %spec.select.v = select i1 %20, i64 4, i64 3 %spec.select = getelementptr inbounds nuw i8, ptr %.sroa.0.013, i64 %spec.select.v @@ -483,6 +489,7 @@ define { ptr, i64 } @"_ZN66_$LT$$RF$str$u20$as$u20$fish_printf..printf_impl..For %14 = icmp ne ptr %9, %7 tail call void @llvm.assume(i1 %14) %15 = getelementptr inbounds nuw i8, ptr %8, i64 2 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %9) ] %16 = load i8, ptr %9, align 1, !noalias !26, !noundef !3 %17 = shl nuw nsw i32 %13, 6 %18 = and i8 %16, 63 @@ -499,6 +506,7 @@ define { ptr, i64 } @"_ZN66_$LT$$RF$str$u20$as$u20$fish_printf..printf_impl..For %24 = icmp ne ptr %15, %7 tail call void @llvm.assume(i1 %24) %25 = getelementptr inbounds nuw i8, ptr %8, i64 3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %15) ] %26 = load i8, ptr %15, align 1, !noalias !26, !noundef !3 %27 = shl nuw nsw i32 %19, 6 %28 = and i8 %26, 63 @@ -513,6 +521,7 @@ define { ptr, i64 } @"_ZN66_$LT$$RF$str$u20$as$u20$fish_printf..printf_impl..For %34 = icmp ne ptr %25, %7 tail call void @llvm.assume(i1 %34) %35 = getelementptr inbounds nuw i8, ptr %8, i64 4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %25) ] %36 = load i8, ptr %25, align 1, !noalias !26, !noundef !3 %37 = shl nuw nsw i32 %13, 18 %38 = and i32 %37, 1835008 @@ -591,6 +600,7 @@ define { ptr, i64 } @"_ZN66_$LT$$RF$str$u20$as$u20$fish_printf..printf_impl..For %67 = icmp ne ptr %62, %7 tail call void @llvm.assume(i1 %67) %68 = getelementptr inbounds nuw i8, ptr %61, i64 2 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %62) ] %69 = load i8, ptr %62, align 1, !noalias !41, !noundef !3 %70 = shl nuw nsw i32 %66, 6 %71 = and i8 %69, 63 @@ -607,6 +617,7 @@ define { ptr, i64 } @"_ZN66_$LT$$RF$str$u20$as$u20$fish_printf..printf_impl..For %77 = icmp ne ptr %68, %7 tail call void @llvm.assume(i1 %77) %78 = getelementptr inbounds nuw i8, ptr %61, i64 3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %68) ] %79 = load i8, ptr %68, align 1, !noalias !41, !noundef !3 %80 = shl nuw nsw i32 %72, 6 %81 = and i8 %79, 63 @@ -621,6 +632,7 @@ define { ptr, i64 } @"_ZN66_$LT$$RF$str$u20$as$u20$fish_printf..printf_impl..For %87 = icmp ne ptr %78, %7 tail call void @llvm.assume(i1 %87) %88 = getelementptr inbounds nuw i8, ptr %61, i64 4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %78) ] %89 = load i8, ptr %78, align 1, !noalias !41, !noundef !3 %90 = shl nuw nsw i32 %66, 18 %91 = and i32 %90, 1835008 diff --git a/bench/folly/optimized/CPUThreadPoolExecutor.ll b/bench/folly/optimized/CPUThreadPoolExecutor.ll index 20837f77591..fb5fd195bb6 100644 --- a/bench/folly/optimized/CPUThreadPoolExecutor.ll +++ b/bench/folly/optimized/CPUThreadPoolExecutor.ll @@ -5610,6 +5610,7 @@ _ZN5folly3f146detail8F14ChunkIPKvE6setTagEmm.exit.i: ; preds = %100 %109 = getelementptr inbounds nuw %"union.std::aligned_storage<8, 8>::type", ptr %108, i64 %102 %110 = icmp ne ptr %.029.i, @_ZZN5folly3f146detail20getF14EmptyTagVectorEvE8instance call void @llvm.assume(i1 %110) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %109) ] store ptr %.0.i.i.i.i, ptr %109, align 8, !tbaa !323, !noalias !320 %111 = lshr i64 %102, 1 %112 = ptrtoint ptr %109 to i64 @@ -6738,6 +6739,7 @@ _ZN5folly3f146detail8F14TableINS1_20ValueContainerPolicyIPKvvvvvEEE16initializeC %57 = getelementptr inbounds nuw %"union.std::aligned_storage<8, 8>::type", ptr %45, i64 %.042133 call void @llvm.assume(i1 %46) %58 = getelementptr inbounds nuw %"union.std::aligned_storage<8, 8>::type", ptr %47, i64 %.0134 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %57) ] %59 = load ptr, ptr %58, align 8, !tbaa !323 store ptr %59, ptr %57, align 8, !tbaa !323 %60 = add nuw i64 %.042133, 1 @@ -6938,6 +6940,7 @@ _ZN5folly3f146detail8F14ChunkIPKvE25incrOutboundOverflowCountEv.exit.i: ; preds %152 = getelementptr inbounds nuw %"union.std::aligned_storage<8, 8>::type", ptr %151, i64 %141 %153 = icmp ne ptr %.lcssa21.i, @_ZZN5folly3f146detail20getF14EmptyTagVectorEvE8instance call void @llvm.assume(i1 %153) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %152) ] %154 = load ptr, ptr %98, align 8, !tbaa !323 store ptr %154, ptr %152, align 8, !tbaa !323 %.not118 = icmp eq i32 %.sroa.081.1, 0 diff --git a/bench/g2o/optimized/optimizable_graph.ll b/bench/g2o/optimized/optimizable_graph.ll index c77f7b4b258..dfdce89c8fb 100644 --- a/bench/g2o/optimized/optimizable_graph.ll +++ b/bench/g2o/optimized/optimizable_graph.ll @@ -3852,7 +3852,8 @@ _ZNSt8_Rb_treeIPN3g2o16OptimizableGraph6VertexES3_St9_IdentityIS3_ENS1_15VertexI %.sroa.15.2 = phi ptr [ %.sroa.15.3, %_ZNSt20back_insert_iteratorISt6vectorIPN3g2o10HyperGraph4EdgeESaIS4_EEEaSERKS4_.exit.i ], [ null, %._crit_edge92 ] %.sroa.03.08.i = phi ptr [ %108, %_ZNSt20back_insert_iteratorISt6vectorIPN3g2o10HyperGraph4EdgeESaIS4_EEEaSERKS4_.exit.i ], [ %72, %._crit_edge92 ] %79 = getelementptr inbounds nuw i8, ptr %.sroa.03.08.i, i64 32 - %80 = load ptr, ptr %79, align 8, !tbaa !134, !nonnull !87, !noundef !87 + %80 = load ptr, ptr %79, align 8, !tbaa !134 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %80) ] %81 = call ptr @__dynamic_cast(ptr nonnull readonly %80, ptr nonnull @_ZTIN3g2o10HyperGraph4EdgeE, ptr nonnull @_ZTIN3g2o16OptimizableGraph4EdgeE, i64 0) #46 %82 = getelementptr inbounds nuw i8, ptr %81, i64 60 %83 = load i32, ptr %82, align 4, !tbaa !60 diff --git a/bench/graphviz/optimized/mainwindow.ll b/bench/graphviz/optimized/mainwindow.ll index 88c47887cec..ea03d2dcdba 100644 --- a/bench/graphviz/optimized/mainwindow.ll +++ b/bench/graphviz/optimized/mainwindow.ll @@ -7917,8 +7917,7 @@ _ZN11CMainWindow14activeMdiChildEv.exit: ; preds = %13, %15 19: ; preds = %_ZN11CMainWindow14activeMdiChildEv.exit %20 = load ptr, ptr %3, align 8, !tbaa !48 %21 = tail call noundef ptr @_ZNK8QMdiArea15activeSubWindowEv(ptr noundef nonnull align 8 dereferenceable(40) %20) - %.not.not.i2 = icmp ne ptr %21, null - tail call void @llvm.assume(i1 %.not.not.i2) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %21) ] %22 = tail call noundef ptr @_ZNK13QMdiSubWindow6widgetEv(ptr noundef nonnull align 8 dereferenceable(40) %21) %23 = load ptr, ptr %22, align 8, !tbaa !46 %24 = getelementptr inbounds nuw i8, ptr %23, i64 8 @@ -8066,8 +8065,7 @@ _ZN11CMainWindow14activeMdiChildEv.exit: ; preds = %13, %15 19: ; preds = %_ZN11CMainWindow14activeMdiChildEv.exit %20 = load ptr, ptr %3, align 8, !tbaa !48 %21 = tail call noundef ptr @_ZNK8QMdiArea15activeSubWindowEv(ptr noundef nonnull align 8 dereferenceable(40) %20) - %.not.not.i2 = icmp ne ptr %21, null - tail call void @llvm.assume(i1 %.not.not.i2) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %21) ] %22 = tail call noundef ptr @_ZNK13QMdiSubWindow6widgetEv(ptr noundef nonnull align 8 dereferenceable(40) %21) %23 = load ptr, ptr %22, align 8, !tbaa !46 %24 = getelementptr inbounds nuw i8, ptr %23, i64 8 @@ -8181,8 +8179,7 @@ _ZN11CMainWindow14activeMdiChildEv.exit: ; preds = %12, %14 18: ; preds = %_ZN11CMainWindow14activeMdiChildEv.exit %19 = load ptr, ptr %2, align 8, !tbaa !48 %20 = tail call noundef ptr @_ZNK8QMdiArea15activeSubWindowEv(ptr noundef nonnull align 8 dereferenceable(40) %19) - %.not.not.i1 = icmp ne ptr %20, null - tail call void @llvm.assume(i1 %.not.not.i1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %20) ] %21 = tail call noundef ptr @_ZNK13QMdiSubWindow6widgetEv(ptr noundef nonnull align 8 dereferenceable(40) %20) %22 = load ptr, ptr %21, align 8, !tbaa !46 %23 = getelementptr inbounds nuw i8, ptr %22, i64 8 @@ -8249,8 +8246,7 @@ _ZN11CMainWindow14activeMdiChildEv.exit: ; preds = %12, %14 18: ; preds = %_ZN11CMainWindow14activeMdiChildEv.exit %19 = load ptr, ptr %2, align 8, !tbaa !48 %20 = tail call noundef ptr @_ZNK8QMdiArea15activeSubWindowEv(ptr noundef nonnull align 8 dereferenceable(40) %19) - %.not.not.i1 = icmp ne ptr %20, null - tail call void @llvm.assume(i1 %.not.not.i1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %20) ] %21 = tail call noundef ptr @_ZNK13QMdiSubWindow6widgetEv(ptr noundef nonnull align 8 dereferenceable(40) %20) %22 = load ptr, ptr %21, align 8, !tbaa !46 %23 = getelementptr inbounds nuw i8, ptr %22, i64 8 @@ -8317,8 +8313,7 @@ _ZN11CMainWindow14activeMdiChildEv.exit: ; preds = %12, %14 18: ; preds = %_ZN11CMainWindow14activeMdiChildEv.exit %19 = load ptr, ptr %2, align 8, !tbaa !48 %20 = tail call noundef ptr @_ZNK8QMdiArea15activeSubWindowEv(ptr noundef nonnull align 8 dereferenceable(40) %19) - %.not.not.i1 = icmp ne ptr %20, null - tail call void @llvm.assume(i1 %.not.not.i1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %20) ] %21 = tail call noundef ptr @_ZNK13QMdiSubWindow6widgetEv(ptr noundef nonnull align 8 dereferenceable(40) %20) %22 = load ptr, ptr %21, align 8, !tbaa !46 %23 = getelementptr inbounds nuw i8, ptr %22, i64 8 @@ -8564,8 +8559,7 @@ _ZN11CMainWindow14activeMdiChildEv.exit: ; preds = %1, %18, %20 to label %.noexc unwind label %93 .noexc: ; preds = %24 - %.not.not.i12 = icmp ne ptr %28, null - tail call void @llvm.assume(i1 %.not.not.i12) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %28) ] %29 = invoke noundef ptr @_ZNK13QMdiSubWindow6widgetEv(ptr noundef nonnull align 8 dereferenceable(40) %28) to label %.noexc15 unwind label %93 @@ -9037,8 +9031,7 @@ _ZN11CMainWindow14activeMdiChildEv.exit.thread: ; preds = %1, %_ZN11CMainWindo call void @llvm.lifetime.start.p0(ptr nonnull %2) %68 = load ptr, ptr %3, align 8, !tbaa !48 %69 = tail call noundef ptr @_ZNK8QMdiArea15activeSubWindowEv(ptr noundef nonnull align 8 dereferenceable(40) %68) - %.not.not.i2 = icmp ne ptr %69, null - tail call void @llvm.assume(i1 %.not.not.i2) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %69) ] %70 = tail call noundef ptr @_ZNK13QMdiSubWindow6widgetEv(ptr noundef nonnull align 8 dereferenceable(40) %69) %71 = load ptr, ptr %70, align 8, !tbaa !46 %72 = getelementptr inbounds nuw i8, ptr %71, i64 8 diff --git a/bench/html5ever-rs/optimized/126f7y4y0nk6dpjh.ll b/bench/html5ever-rs/optimized/126f7y4y0nk6dpjh.ll index df5a01adcb6..b6ec58d5a68 100644 --- a/bench/html5ever-rs/optimized/126f7y4y0nk6dpjh.ll +++ b/bench/html5ever-rs/optimized/126f7y4y0nk6dpjh.ll @@ -997,6 +997,7 @@ _ZN4core5slice4sort20provide_sorted_batch17hfc511b2652135f95E.exit: ; preds = %_ br label %.invoke293 158: ; preds = %155 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.pre) ] %159 = getelementptr inbounds { i64, i64 }, ptr %.pre, i64 %.sroa.4.0.i56.ph %160 = load i64, ptr %159, align 8, !noundef !16 %161 = getelementptr inbounds nuw i8, ptr %159, i64 8 @@ -1028,6 +1029,7 @@ _ZN4core5slice4sort20provide_sorted_batch17hfc511b2652135f95E.exit: ; preds = %_ unreachable 167: ; preds = %158 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.pre) ] %168 = getelementptr inbounds { i64, i64 }, ptr %.pre, i64 %163 %169 = load i64, ptr %168, align 8, !noundef !16 %170 = getelementptr inbounds nuw i8, ptr %168, i64 8 @@ -1113,6 +1115,7 @@ _ZN4core5slice4sort20provide_sorted_batch17hfc511b2652135f95E.exit: ; preds = %_ %.02823.i = phi ptr [ %210, %207 ], [ %184, %192 ] %.sroa.0.222.i = phi ptr [ %213, %207 ], [ %16, %192 ] %.sroa.18.321.i = phi ptr [ %208, %207 ], [ %183, %192 ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.222.i) ] %206 = invoke fastcc noundef zeroext i1 @_ZN4core3ops8function5FnMut8call_mut17h2ba0d34c37be0f42E(ptr noundef nonnull align 8 %.02823.i, ptr noundef nonnull align 8 %.sroa.0.222.i) to label %207 unwind label %.loopexit.split-lp.i @@ -1148,7 +1151,7 @@ _ZN4core5slice4sort20provide_sorted_batch17hfc511b2652135f95E.exit: ; preds = %_ %217 = ptrtoint ptr %.sroa.10.2.i to i64 %218 = ptrtoint ptr %.sroa.0.1.i68 to i64 %219 = sub nuw i64 %217, %218 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %.sroa.18.2.i, ptr align 8 %.sroa.0.1.i68, i64 %219, i1 false), !noalias !154 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %.sroa.18.2.i, ptr nonnull align 8 %.sroa.0.1.i68, i64 %219, i1 false), !noalias !154 br label %.body "_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h0f724e5ad5439e18E.exit": ; preds = %207, %199, %192, %187 @@ -1158,7 +1161,8 @@ _ZN4core5slice4sort20provide_sorted_batch17hfc511b2652135f95E.exit: ; preds = %_ %220 = ptrtoint ptr %.sroa.10.1.i to i64 %221 = ptrtoint ptr %.sroa.0.0.i66 to i64 %222 = sub nuw i64 %220, %221 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %.sroa.18.1.i, ptr align 8 %.sroa.0.0.i66, i64 %222, i1 false), !noalias !159 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %.sroa.18.1.i, ptr nonnull align 8 %.sroa.0.0.i66, i64 %222, i1 false), !noalias !159 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.pre) ] %223 = add i64 %169, %160 store i64 %223, ptr %168, align 8 store i64 %162, ptr %170, align 8 diff --git a/bench/html5ever-rs/optimized/3n74qlghvzguzx1d.ll b/bench/html5ever-rs/optimized/3n74qlghvzguzx1d.ll index 2378e31e86c..a3749c16b65 100644 --- a/bench/html5ever-rs/optimized/3n74qlghvzguzx1d.ll +++ b/bench/html5ever-rs/optimized/3n74qlghvzguzx1d.ll @@ -58,6 +58,7 @@ define hidden noundef zeroext i1 @"_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..D call void @_ZN4core3fmt9Formatter10debug_list17h1616b9a56f5bf339E(ptr noalias noundef nonnull sret({ { ptr, i8, i8, [6 x i8] } }) align 8 captures(none) dereferenceable(16) %5, ptr noalias noundef nonnull align 8 dereferenceable(64) %2) %.idx = mul nsw i64 %1, 40 %6 = getelementptr inbounds i8, ptr %0, i64 %.idx + call void @llvm.assume(i1 true) [ "nonnull"(ptr %6) ] %7 = icmp eq i64 %1, 0 br i1 %7, label %_ZN4core3fmt8builders9DebugList7entries17h4c9f8454ccc349d4E.exit, label %.lr.ph.i @@ -446,6 +447,9 @@ declare noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE ; Function Attrs: nonlazybind uwtable declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #0 +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #8 + ; Function Attrs: nonlazybind uwtable declare noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList5entry17h2ed5a4f4153b90ddE(ptr noalias noundef align 8 dereferenceable(16), ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #0 @@ -472,10 +476,11 @@ attributes #4 = { mustprogress nofree norecurse nosync nounwind nonlazybind will attributes #5 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: readwrite) 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 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #9 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #8 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #9 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #10 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #11 = { noreturn } +attributes #11 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #12 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/html5ever-rs/optimized/43v1czcn8mbp77o0.ll b/bench/html5ever-rs/optimized/43v1czcn8mbp77o0.ll index 5b36b757243..57462d4e97b 100644 --- a/bench/html5ever-rs/optimized/43v1czcn8mbp77o0.ll +++ b/bench/html5ever-rs/optimized/43v1czcn8mbp77o0.ll @@ -44,6 +44,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G store i64 %10, ptr %6, align 8, !noalias !6 %11 = getelementptr inbounds nuw i8, ptr %6, i64 8 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !6 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %6) ] store ptr %11, ptr %4, align 8, !noalias !6 %12 = getelementptr inbounds nuw i8, ptr %4, i64 8 store ptr %6, ptr %12, align 8, !noalias !6 @@ -308,6 +309,7 @@ define hidden noundef zeroext i1 @"_ZN65_$LT$core..cell..RefCell$LT$T$GT$$u20$as store i64 %9, ptr %0, align 8 %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.lifetime.start.p0(ptr nonnull %4) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] store ptr %10, ptr %4, align 8 %11 = getelementptr inbounds nuw i8, ptr %4, i64 8 store ptr %0, ptr %11, align 8 @@ -374,6 +376,7 @@ define hidden noundef zeroext i1 @"_ZN65_$LT$core..cell..RefCell$LT$T$GT$$u20$as store i64 %9, ptr %0, align 8 %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.lifetime.start.p0(ptr nonnull %4) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] store ptr %10, ptr %4, align 8 %11 = getelementptr inbounds nuw i8, ptr %4, i64 8 store ptr %0, ptr %11, align 8 @@ -440,6 +443,7 @@ define hidden noundef zeroext i1 @"_ZN65_$LT$core..cell..RefCell$LT$T$GT$$u20$as store i64 %9, ptr %0, align 8 %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.lifetime.start.p0(ptr nonnull %4) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] store ptr %10, ptr %4, align 8 %11 = getelementptr inbounds nuw i8, ptr %4, i64 8 store ptr %0, ptr %11, align 8 @@ -553,6 +557,9 @@ declare void @llvm.lifetime.start.p0(ptr captures(none)) #3 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(ptr captures(none)) #3 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #4 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #4 @@ -560,7 +567,8 @@ attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x 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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #4 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #4 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/hyper-rs/optimized/4hz5u2ddz2sd8g08.ll b/bench/hyper-rs/optimized/4hz5u2ddz2sd8g08.ll index 06c9d699203..dd397a57961 100644 --- a/bench/hyper-rs/optimized/4hz5u2ddz2sd8g08.ll +++ b/bench/hyper-rs/optimized/4hz5u2ddz2sd8g08.ll @@ -50,6 +50,7 @@ define hidden { i64, ptr } @"_ZN82_$LT$hyper..common..io..rewind..Rewind$LT$T$GT %21 = sub i64 %18, %20 %.0.sroa.speculated.i = tail call noundef i64 @llvm.umin.i64(i64 range(i64 1, 0) %8, i64 %21) %22 = load ptr, ptr %10, align 8, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] %23 = add i64 %.0.sroa.speculated.i, %20 %24 = load ptr, ptr %2, align 8, !noalias !13, !nonnull !4, !align !16, !noundef !4 %25 = icmp ugt i64 %20, %23 @@ -232,6 +233,9 @@ declare void @llvm.experimental.noalias.scope.decl(metadata) #5 ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #6 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #7 + attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } @@ -239,8 +243,9 @@ attributes #3 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inli attributes #4 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } attributes #6 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } -attributes #7 = { noreturn } -attributes #8 = { cold noreturn nounwind } +attributes #7 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #8 = { noreturn } +attributes #9 = { cold noreturn nounwind } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/hyper-rs/optimized/5drhzjx8c241ue20.ll b/bench/hyper-rs/optimized/5drhzjx8c241ue20.ll index 647de3cb607..3405c754c36 100644 --- a/bench/hyper-rs/optimized/5drhzjx8c241ue20.ll +++ b/bench/hyper-rs/optimized/5drhzjx8c241ue20.ll @@ -33,6 +33,8 @@ define internal void @"_ZN4core3ptr118drop_in_place$LT$alloc..boxed..Box$LT$dyn$ 6: ; preds = %1 %7 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %4) ] %8 = getelementptr inbounds nuw i8, ptr %4, i64 8 %9 = load i64, ptr %8, align 8, !range !6, !invariant.load !4 %10 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -47,6 +49,8 @@ define internal void @"_ZN4core3ptr118drop_in_place$LT$alloc..boxed..Box$LT$dyn$ br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h952641b8fa9b7806E.exit" 15: ; preds = %1 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %4) ] %16 = getelementptr inbounds nuw i8, ptr %4, i64 8 %17 = load i64, ptr %16, align 8, !range !6, !invariant.load !4 %18 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -213,28 +217,27 @@ define noundef zeroext i1 @_ZN5hyper5error5Error10is_timeout17h1bdf15bba89e103aE br label %.lr.ph.i .lr.ph.i: ; preds = %11, %.lr.ph.preheader.i - %.sroa.0.014.i = phi ptr [ %.sroa.0.0.i, %11 ], [ %3, %.lr.ph.preheader.i ] - %.sroa.4.013.i = phi ptr [ %.sroa.4.0.i, %11 ], [ %6, %.lr.ph.preheader.i ] - %7 = icmp ne ptr %.sroa.4.013.i, null - tail call void @llvm.assume(i1 %7) + %.sroa.0.014.i = phi ptr [ %.sroa.0.0.i, %10 ], [ %3, %.lr.ph.preheader.i ] + %.sroa.4.013.i = phi ptr [ %.sroa.4.0.i, %10 ], [ %6, %.lr.ph.preheader.i ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.4.013.i) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !16) %8 = getelementptr inbounds nuw i8, ptr %.sroa.4.013.i, i64 56 %9 = load ptr, ptr %8, align 8, !invariant.load !4, !alias.scope !16, !noalias !9, !nonnull !4 - %10 = tail call noundef i128 %9(ptr noundef nonnull align 1 %.sroa.0.014.i), !noalias !19 + %10 = tail call noundef i128 %8(ptr noundef nonnull align 1 %.sroa.0.014.i), !noalias !19 %.not11.i = icmp eq i128 %10, -3455604291313433198194752821752098272 br i1 %.not11.i, label %_ZN5hyper5error5Error11find_source17ha0785acde139003fE.exit, label %11 11: ; preds = %.lr.ph.i %12 = getelementptr inbounds nuw i8, ptr %.sroa.4.013.i, i64 48 %13 = load ptr, ptr %12, align 8, !invariant.load !4, !noalias !9, !nonnull !4 - %14 = tail call { ptr, ptr } %13(ptr noundef nonnull align 1 %.sroa.0.014.i), !noalias !9 + %14 = tail call { ptr, ptr } %12(ptr noundef nonnull align 1 %.sroa.0.014.i), !noalias !9 %.sroa.4.0.i = extractvalue { ptr, ptr } %14, 1 %.sroa.0.0.i = extractvalue { ptr, ptr } %14, 0 %.not.i = icmp eq ptr %.sroa.0.0.i, null br i1 %.not.i, label %_ZN5hyper5error5Error11find_source17ha0785acde139003fE.exit, label %.lr.ph.i _ZN5hyper5error5Error11find_source17ha0785acde139003fE.exit: ; preds = %.lr.ph.i, %11, %1 - %.0.i = phi i1 [ false, %1 ], [ %.not11.i, %11 ], [ %.not11.i, %.lr.ph.i ] + %.0.i = phi i1 [ false, %1 ], [ %.not11.i, %10 ], [ %.not11.i, %.lr.ph.i ] ret i1 %.0.i } @@ -423,6 +426,7 @@ define noundef zeroext i1 @"_ZN56_$LT$hyper..error..Error$u20$as$u20$core..fmt.. ; Function Attrs: nonlazybind uwtable define noundef zeroext i1 @"_ZN58_$LT$hyper..error..Error$u20$as$u20$core..fmt..Display$GT$3fmt17hc5e7a82ff744cd55E"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %0, ptr noalias noundef align 8 dereferenceable(64) %1) unnamed_addr #0 { %.val = load ptr, ptr %0, align 8, !nonnull !4, !align !5, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %3 = getelementptr inbounds nuw i8, ptr %.val, i64 16 %4 = load i8, ptr %3, align 8, !range !8, !noundef !4 %5 = icmp samesign ugt i8 %4, 2 diff --git a/bench/icu/optimized/fpositer.ll b/bench/icu/optimized/fpositer.ll index b15675e060b..1af62c19e27 100644 --- a/bench/icu/optimized/fpositer.ll +++ b/bench/icu/optimized/fpositer.ll @@ -78,16 +78,15 @@ define void @_ZN6icu_7721FieldPositionIteratorC2ERKS0_(ptr noundef nonnull align call void @llvm.lifetime.start.p0(ptr nonnull %3) store i32 0, ptr %3, align 4, !tbaa !14 %11 = tail call noundef ptr @_ZN6icu_777UMemorynwEm(i64 noundef 32) #8 - %12 = icmp ne ptr %11, null - tail call void @llvm.assume(i1 %12) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %11) ] invoke void @_ZN6icu_779UVector32C1ER10UErrorCode(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 4 dereferenceable(4) %3) - to label %13 unwind label %25 + to label %12 unwind label %25 13: ; preds = %10 store ptr %11, ptr %4, align 8, !tbaa !6 %14 = load ptr, ptr %8, align 8, !tbaa !6 invoke void @_ZN6icu_779UVector326assignERKS0_R10UErrorCode(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 4 dereferenceable(4) %3) - to label %15 unwind label %27 + to label %14 unwind label %27 15: ; preds = %13 %16 = load i32, ptr %3, align 4, !tbaa !14 @@ -103,7 +102,7 @@ define void @_ZN6icu_7721FieldPositionIteratorC2ERKS0_(ptr noundef nonnull align %21 = load ptr, ptr %18, align 8, !tbaa !3 %22 = getelementptr inbounds nuw i8, ptr %21, i64 8 %23 = load ptr, ptr %22, align 8 - call void %23(ptr noundef nonnull align 8 dereferenceable(32) %18) #8 + call void %22(ptr noundef nonnull align 8 dereferenceable(32) %18) #8 br label %24 24: ; preds = %20, %17 @@ -127,7 +126,7 @@ define void @_ZN6icu_7721FieldPositionIteratorC2ERKS0_(ptr noundef nonnull align br label %31 30: ; preds = %25, %27 - %.pn = phi { ptr, i32 } [ %28, %27 ], [ %26, %25 ] + %.pn = phi { ptr, i32 } [ %28, %26 ], [ %26, %24 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @_ZN6icu_777UObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #8 resume { ptr, i32 } %.pn diff --git a/bench/icu/optimized/rematch.ll b/bench/icu/optimized/rematch.ll index ebef5246feb..03d3b31f4eb 100644 --- a/bench/icu/optimized/rematch.ll +++ b/bench/icu/optimized/rematch.ll @@ -16473,10 +16473,9 @@ define noundef nonnull align 8 dereferenceable(64) ptr @_ZNK6icu_7712RegexMatche 19: ; preds = %17, %15 %.0 = phi i32 [ %16, %15 ], [ %18, %17 ] %20 = call noundef ptr @_ZN6icu_777UMemorynwEm(i64 noundef 64) #21 - %21 = icmp ne ptr %20, null - call void @llvm.assume(i1 %21) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %20) ] invoke void @_ZN6icu_7713UnicodeStringC1Eiii(ptr noundef nonnull align 8 dereferenceable(64) %20, i32 noundef %.0, i32 noundef 0, i32 noundef 0) - to label %22 unwind label %28 + to label %21 unwind label %28 22: ; preds = %19 %23 = call noundef ptr @_ZN6icu_7713UnicodeString9getBufferEi(ptr noundef nonnull align 8 dereferenceable(64) %20, i32 noundef %.0) @@ -16497,7 +16496,7 @@ define noundef nonnull align 8 dereferenceable(64) ptr @_ZNK6icu_7712RegexMatche resume { ptr, i32 } %29 30: ; preds = %22, %1 - %31 = phi ptr [ %20, %22 ], [ %4, %1 ] + %31 = phi ptr [ %20, %21 ], [ %4, %1 ] ret ptr %31 } diff --git a/bench/jiff-rs/optimized/bc87zufzpghb0zqt1svthjsy4.ll b/bench/jiff-rs/optimized/bc87zufzpghb0zqt1svthjsy4.ll index ff0b50df50b..1cb7393dc2c 100644 --- a/bench/jiff-rs/optimized/bc87zufzpghb0zqt1svthjsy4.ll +++ b/bench/jiff-rs/optimized/bc87zufzpghb0zqt1svthjsy4.ll @@ -2469,7 +2469,9 @@ _ZN4jiff3fmt8temporal7printer15DateTimePrinter10print_date17h334f2ef5618d5284E.e %206 = select i1 %205, i8 32, i8 0 %.sroa.09.0 = or i8 %202, %206 %.val = load ptr, ptr %15, align 8, !nonnull !6, !align !121, !noundef !6 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %.val.i = load ptr, ptr %.val, align 8, !nonnull !6, !align !121, !noundef !6 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] call void @llvm.lifetime.start.p0(ptr nonnull %9), !noalias !122 store i32 0, ptr %9, align 4, !noalias !122 %207 = icmp sgt i8 %202, -1 @@ -3313,6 +3315,7 @@ _ZN4jiff3fmt8temporal7printer15DateTimePrinter10print_date17h4e3d6d1218f1fff7E.e %207 = select i1 %206, i8 32, i8 0 %.sroa.09.0 = or i8 %203, %207 %.val = load ptr, ptr %16, align 8, !nonnull !6, !align !121, !noundef !6 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] call void @llvm.lifetime.start.p0(ptr nonnull %10), !noalias !207 store i32 0, ptr %10, align 4, !noalias !207 %208 = icmp sgt i8 %203, -1 @@ -3796,6 +3799,7 @@ define hidden { i64, ptr } @_ZN4jiff3fmt8temporal7printer15DateTimePrinter14prin %27 = select i1 %26, i8 32, i8 0 %.sroa.09.0 = or i8 %23, %27 %.val = load ptr, ptr %12, align 8, !nonnull !6, !align !121, !noundef !6 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] call void @llvm.lifetime.start.p0(ptr nonnull %10), !noalias !255 store i32 0, ptr %10, align 4, !noalias !255 %28 = icmp sgt i8 %23, -1 @@ -9425,6 +9429,7 @@ _ZN4jiff3fmt4util7Decimal3new17hfa803fb8c2dfdc3fE.exit: ; preds = %71, %.prehead 100: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h3d0deea6cfc1c6d6E.exit" %101 = call noundef i32 @_ZN4jiff3fmt8temporal7printer11SpanPrinter5label17hf5ca1f9add08c92dE(ptr noalias noundef nonnull readonly align 1 dereferenceable(1) %0, i32 noundef 89) %.val = load ptr, ptr %17, align 8, !nonnull !6, !align !121, !noundef !6 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] call void @llvm.lifetime.start.p0(ptr nonnull %7), !noalias !695 store i32 0, ptr %7, align 4, !noalias !695 %102 = icmp samesign ult i32 %101, 128 @@ -9624,6 +9629,7 @@ _ZN4jiff3fmt4util7Decimal3new17hfa803fb8c2dfdc3fE.exit228: ; preds = %173, %.pre 201: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h3d0deea6cfc1c6d6E.exit218" %202 = call noundef i32 @_ZN4jiff3fmt8temporal7printer11SpanPrinter5label17hf5ca1f9add08c92dE(ptr noalias noundef nonnull readonly align 1 dereferenceable(1) %0, i32 noundef 77) %.val253 = load ptr, ptr %17, align 8, !nonnull !6, !align !121, !noundef !6 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val253) ] call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !710 store i32 0, ptr %6, align 4, !noalias !710 %203 = icmp samesign ult i32 %202, 128 @@ -9823,6 +9829,7 @@ _ZN4jiff3fmt4util7Decimal3new17hfa803fb8c2dfdc3fE.exit232: ; preds = %274, %.pre 302: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h3d0deea6cfc1c6d6E.exit219" %303 = call noundef i32 @_ZN4jiff3fmt8temporal7printer11SpanPrinter5label17hf5ca1f9add08c92dE(ptr noalias noundef nonnull readonly align 1 dereferenceable(1) %0, i32 noundef 87) %.val254 = load ptr, ptr %17, align 8, !nonnull !6, !align !121, !noundef !6 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val254) ] call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !725 store i32 0, ptr %5, align 4, !noalias !725 %304 = icmp samesign ult i32 %303, 128 @@ -10022,6 +10029,7 @@ _ZN4jiff3fmt4util7Decimal3new17hfa803fb8c2dfdc3fE.exit236: ; preds = %375, %.pre 403: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h3d0deea6cfc1c6d6E.exit220" %404 = call noundef i32 @_ZN4jiff3fmt8temporal7printer11SpanPrinter5label17hf5ca1f9add08c92dE(ptr noalias noundef nonnull readonly align 1 dereferenceable(1) %0, i32 noundef 68) %.val255 = load ptr, ptr %17, align 8, !nonnull !6, !align !121, !noundef !6 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val255) ] call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !740 store i32 0, ptr %4, align 4, !noalias !740 %405 = icmp samesign ult i32 %404, 128 @@ -13578,6 +13586,7 @@ _ZN4jiff3fmt4util7Decimal3new17hfa803fb8c2dfdc3fE.exit115: ; preds = %125, %.pre 151: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h3d0deea6cfc1c6d6E.exit" %152 = call noundef i32 @_ZN4jiff3fmt8temporal7printer11SpanPrinter5label17hf5ca1f9add08c92dE(ptr noalias noundef nonnull readonly align 1 dereferenceable(1) %0, i32 noundef 72) %.val = load ptr, ptr %12, align 8, !nonnull !6, !align !121, !noundef !6 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !1024 store i32 0, ptr %6, align 4, !noalias !1024 %153 = icmp samesign ult i32 %152, 128 @@ -13662,6 +13671,7 @@ _ZN4jiff3fmt4util7Decimal3new17hfa803fb8c2dfdc3fE.exit115: ; preds = %125, %.pre 196: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h3d0deea6cfc1c6d6E.exit109" %197 = call noundef i32 @_ZN4jiff3fmt8temporal7printer11SpanPrinter5label17hf5ca1f9add08c92dE(ptr noalias noundef nonnull readonly align 1 dereferenceable(1) %0, i32 noundef 77) %.val124 = load ptr, ptr %12, align 8, !nonnull !6, !align !121, !noundef !6 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val124) ] call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !1030 store i32 0, ptr %5, align 4, !noalias !1030 %198 = icmp samesign ult i32 %197, 128 @@ -13848,6 +13858,7 @@ _ZN4jiff3fmt4util7Decimal3new17hfa803fb8c2dfdc3fE.exit119: ; preds = %268, %.pre 290: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h3d0deea6cfc1c6d6E.exit110" %291 = call noundef i32 @_ZN4jiff3fmt8temporal7printer11SpanPrinter5label17hf5ca1f9add08c92dE(ptr noalias noundef nonnull readonly align 1 dereferenceable(1) %0, i32 noundef 83) %.val125 = load ptr, ptr %12, align 8, !nonnull !6, !align !121, !noundef !6 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val125) ] call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !1045 store i32 0, ptr %4, align 4, !noalias !1045 %292 = icmp samesign ult i32 %291, 128 @@ -14172,8 +14183,7 @@ _ZN4core4char7methods15encode_utf8_raw17h47e0c198e2a85c4bE.exit: ; preds = %8, % ; Function Attrs: inlinehint nonlazybind uwtable define internal fastcc void @"_ZN50_$LT$$RF$mut$u20$W$u20$as$u20$jiff..fmt..Write$GT$10write_char17hc8773bada09487b2E"(ptr %.0.val, i32 noundef range(i32 0, 1114112) %0) unnamed_addr #0 { %2 = alloca [4 x i8], align 4 - %3 = icmp ne ptr %.0.val, null - tail call void @llvm.assume(i1 %3) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.0.val) ] call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !1067 store i32 0, ptr %2, align 4, !noalias !1067 %4 = icmp samesign ult i32 %0, 128 @@ -14245,7 +14255,7 @@ define internal fastcc void @"_ZN50_$LT$$RF$mut$u20$W$u20$as$u20$jiff..fmt..Writ br label %_ZN4jiff3fmt5Write10write_char17h6e26dc6cb2678f54E.exit _ZN4jiff3fmt5Write10write_char17h6e26dc6cb2678f54E.exit: ; preds = %7, %11, %18, %33 - %.sroa.0.05.i.sroa.phi.i = phi ptr [ %.sroa.0.05.i.sroa.gep.i, %7 ], [ %.sroa.0.05.i.sroa.gep1.i, %11 ], [ %.sroa.0.05.i.sroa.gep2.i, %18 ], [ %.sroa.0.05.i.sroa.gep3.i, %33 ] + %.sroa.0.05.i.sroa.phi.i = phi ptr [ %.sroa.0.05.i.sroa.gep.i, %6 ], [ %.sroa.0.05.i.sroa.gep1.i, %10 ], [ %.sroa.0.05.i.sroa.gep2.i, %17 ], [ %.sroa.0.05.i.sroa.gep3.i, %32 ] call void @"_ZN132_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$$RF$T$C$core..slice..iter..Iter$LT$T$GT$$GT$$GT$11spec_extend17he8c9407ef5b33ecaE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.0.val, ptr noundef nonnull readonly align 1 %2, ptr noundef nonnull readonly %.sroa.0.05.i.sroa.phi.i, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.defb23c543a0d58eda124284528ab762.11) call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !1067 ret void diff --git a/bench/jiff-rs/optimized/d5ptug8pk58j4ioidoz8wi1r8.ll b/bench/jiff-rs/optimized/d5ptug8pk58j4ioidoz8wi1r8.ll index 173e1665bc4..a2aef4a9522 100644 --- a/bench/jiff-rs/optimized/d5ptug8pk58j4ioidoz8wi1r8.ll +++ b/bench/jiff-rs/optimized/d5ptug8pk58j4ioidoz8wi1r8.ll @@ -185,10 +185,9 @@ define hidden { ptr, ptr } @"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A 22: ; preds = %14 %23 = extractvalue { ptr, i64 } %19, 0 %24 = extractvalue { ptr, i64 } %19, 1 - %25 = icmp ne ptr %23, null - call void @llvm.assume(i1 %25) - %26 = getelementptr inbounds nuw i8, ptr %23, i64 16 - %27 = invoke noundef i64 @_ZN5alloc4sync11data_offset17hfe7aaf128a4a50a1E(ptr noundef nonnull %26, i64 noundef %24) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %23) ] + %25 = getelementptr inbounds nuw i8, ptr %23, i64 16 + %26 = invoke noundef i64 @_ZN5alloc4sync11data_offset17hfe7aaf128a4a50a1E(ptr noundef nonnull %25, i64 noundef %24) to label %"_ZN96_$LT$alloc..sync..Arc$LT$str$GT$$u20$as$u20$core..convert..From$LT$alloc..string..String$GT$$GT$4from17h2d8af5a8cb08cd1cE.exit.i.i" unwind label %20, !noalias !20 28: ; preds = %20 @@ -210,9 +209,9 @@ define hidden { ptr, ptr } @"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A resume { ptr, i32 } %eh.lpad-body.i .body.i: ; preds = %30, %20 - %eh.lpad-body.i = phi { ptr, i32 } [ %31, %30 ], [ %21, %20 ] + %eh.lpad-body.i = phi { ptr, i32 } [ %31, %29 ], [ %21, %20 ] invoke fastcc void @"_ZN4core3ptr94drop_in_place$LT$alloc..vec..in_place_drop..InPlaceDrop$LT$alloc..sync..Arc$LT$str$GT$$GT$$GT$17he6145e324304d180E"(ptr noalias noundef align 8 dereferenceable(16) %7) #20 - to label %32 unwind label %33, !noalias !11 + to label %31 unwind label %33, !noalias !11 33: ; preds = %.body.i %34 = landingpad { ptr, i32 } @@ -221,8 +220,8 @@ define hidden { ptr, ptr } @"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A unreachable "_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h1430871834013720E.exit": ; preds = %"_ZN96_$LT$alloc..sync..Arc$LT$str$GT$$u20$as$u20$core..convert..From$LT$alloc..string..String$GT$$GT$4from17h2d8af5a8cb08cd1cE.exit.i.i" - %35 = sub nsw i64 0, %27 - %36 = getelementptr inbounds i8, ptr %26, i64 %35 + %35 = sub nsw i64 0, %26 + %36 = getelementptr inbounds i8, ptr %25, i64 %35 call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !11 store ptr %36, ptr %.sroa.4.014, align 8, !noalias !11 %37 = getelementptr inbounds nuw i8, ptr %.sroa.4.014, i64 8 @@ -415,6 +414,8 @@ define hidden void @"_ZN5alloc3vec9into_iter21IntoIter$LT$T$C$A$GT$32forget_allo %4 = load ptr, ptr %3, align 8, !nonnull !3, !noundef !3 %5 = getelementptr inbounds nuw i8, ptr %0, i64 24 %.val1 = load ptr, ptr %5, align 8, !nonnull !3, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %4) ] %6 = ptrtoint ptr %.val1 to i64 %7 = ptrtoint ptr %4 to i64 %8 = sub nuw i64 %6, %7 @@ -2081,9 +2082,11 @@ _ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit: ; preds = %22 store ptr %12, ptr %13, align 8 %.sroa.45.0..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 8 store ptr @"_ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i64$GT$3fmt17h40b427f40fae239aE", ptr %.sroa.45.0..sroa_idx, align 8 - %.val23 = load ptr, ptr %1, align 8, !nonnull !3, !noundef !3 + %.val23 = load ptr, ptr %1, align 8 %30 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val24 = load ptr, ptr %30, align 8, !nonnull !3, !noundef !3 + %.val24 = load ptr, ptr %30, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val23) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val24) ] call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !153 store ptr @anon.f4f476f25df25ce4cf7c271eb4237b82.50, ptr %5, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 8 @@ -2112,9 +2115,11 @@ _ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit29: ; preds = %32 store ptr %10, ptr %11, align 8 %.sroa.49.0..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 8 store ptr @"_ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17hd42deda1b830d1a7E", ptr %.sroa.49.0..sroa_idx, align 8 - %.val21 = load ptr, ptr %1, align 8, !nonnull !3, !noundef !3 + %.val21 = load ptr, ptr %1, align 8 %35 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val22 = load ptr, ptr %35, align 8, !nonnull !3, !noundef !3 + %.val22 = load ptr, ptr %35, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val21) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val22) ] call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !156 store ptr @anon.f4f476f25df25ce4cf7c271eb4237b82.52, ptr %4, align 8 %.sroa.536.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -2145,9 +2150,11 @@ _ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit34: ; preds = %32 store ptr %7, ptr %37, align 8 %.sroa.418.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 24 store ptr @"_ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$u32$GT$3fmt17h192ecd7f68372d7fE", ptr %.sroa.418.0..sroa_idx, align 8 - %.val = load ptr, ptr %1, align 8, !nonnull !3, !noundef !3 + %.val = load ptr, ptr %1, align 8 %38 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val20 = load ptr, ptr %38, align 8, !nonnull !3, !noundef !3 + %.val20 = load ptr, ptr %38, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val20) ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !159 store ptr @anon.f4f476f25df25ce4cf7c271eb4237b82.54, ptr %3, align 8 %.sroa.542.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 diff --git a/bench/libigl/optimized/point_areas.ll b/bench/libigl/optimized/point_areas.ll index a9cdbcac1d4..7609f730f5a 100644 --- a/bench/libigl/optimized/point_areas.ll +++ b/bench/libigl/optimized/point_areas.ll @@ -34432,8 +34432,7 @@ define linkonce_odr dso_local ptr @_ZN4CGAL15Triangulation_2INS_5EpickENS_30Tria br i1 %226, label %._crit_edge, label %.lr.ph166, !llvm.loop !1216 ._crit_edge: ; preds = %221, %.preheader - %227 = icmp ne ptr %182, null - call void @llvm.assume(i1 %227) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %182) ] %.sroa.0.0.copyload.i.i.i.i112 = load ptr, ptr %182, align 8, !tbaa !188, !nonnull !244, !noundef !244 %228 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i.i112, i64 16 %229 = load ptr, ptr %228, align 8, !tbaa !179 @@ -34450,9 +34449,9 @@ define linkonce_odr dso_local ptr @_ZN4CGAL15Triangulation_2INS_5EpickENS_30Tria br i1 %or.cond.i.i167, label %_ZNSt7__cxx1110_List_baseIN4CGAL8internal11CC_iteratorINS1_17Compact_containerINS1_28Triangulation_ds_face_base_2INS1_30Triangulation_data_structure_2INS1_37Triangulation_vertex_base_with_info_2IjNS1_5EpickENS1_27Triangulation_vertex_base_2IS8_NS1_30Triangulation_ds_vertex_base_2IvEEEEEENS5_IvEEEEEENS1_7DefaultESH_SH_EELb0EEESaISJ_EED2Ev.exit, label %_ZNK4CGAL15Triangulation_2INS_5EpickENS_30Triangulation_data_structure_2INS_37Triangulation_vertex_base_with_info_2IjS1_NS_27Triangulation_vertex_base_2IS1_NS_30Triangulation_ds_vertex_base_2IvEEEEEENS_28Triangulation_ds_face_base_2IvEEEEE11is_infiniteENS_8internal11CC_iteratorINS_17Compact_containerINS9_ISB_EENS_7DefaultESH_SH_EELb0EEE.exit _ZNK4CGAL15Triangulation_2INS_5EpickENS_30Triangulation_data_structure_2INS_37Triangulation_vertex_base_with_info_2IjS1_NS_27Triangulation_vertex_base_2IS1_NS_30Triangulation_ds_vertex_base_2IvEEEEEENS_28Triangulation_ds_face_base_2IvEEEEE11is_infiniteENS_8internal11CC_iteratorINS_17Compact_containerINS9_ISB_EENS_7DefaultESH_SH_EELb0EEE.exit: ; preds = %._crit_edge, %240 - %235 = phi ptr [ %253, %240 ], [ %233, %._crit_edge ] - %236 = phi ptr [ %250, %240 ], [ %230, %._crit_edge ] - %.sroa.9.2168 = phi ptr [ %.sroa.0.0.copyload.i.i.i118, %240 ], [ %spec.select4.i.i107, %._crit_edge ] + %235 = phi ptr [ %253, %239 ], [ %233, %._crit_edge ] + %236 = phi ptr [ %250, %239 ], [ %230, %._crit_edge ] + %.sroa.9.2168 = phi ptr [ %.sroa.0.0.copyload.i.i.i118, %239 ], [ %spec.select4.i.i107, %._crit_edge ] %237 = getelementptr inbounds nuw i8, ptr %.sroa.9.2168, i64 16 %238 = load ptr, ptr %237, align 8, !tbaa !179 %239 = icmp eq ptr %238, %.sroa.0.0.copyload.i.i @@ -34478,7 +34477,7 @@ _ZNK4CGAL15Triangulation_2INS_5EpickENS_30Triangulation_data_structure_2INS_37Tr br i1 %or.cond.i.i, label %_ZNSt7__cxx1110_List_baseIN4CGAL8internal11CC_iteratorINS1_17Compact_containerINS1_28Triangulation_ds_face_base_2INS1_30Triangulation_data_structure_2INS1_37Triangulation_vertex_base_with_info_2IjNS1_5EpickENS1_27Triangulation_vertex_base_2IS8_NS1_30Triangulation_ds_vertex_base_2IvEEEEEENS5_IvEEEEEENS1_7DefaultESH_SH_EELb0EEESaISJ_EED2Ev.exit, label %_ZNK4CGAL15Triangulation_2INS_5EpickENS_30Triangulation_data_structure_2INS_37Triangulation_vertex_base_with_info_2IjS1_NS_27Triangulation_vertex_base_2IS1_NS_30Triangulation_ds_vertex_base_2IvEEEEEENS_28Triangulation_ds_face_base_2IvEEEEE11is_infiniteENS_8internal11CC_iteratorINS_17Compact_containerINS9_ISB_EENS_7DefaultESH_SH_EELb0EEE.exit _ZNSt7__cxx1110_List_baseIN4CGAL8internal11CC_iteratorINS1_17Compact_containerINS1_28Triangulation_ds_face_base_2INS1_30Triangulation_data_structure_2INS1_37Triangulation_vertex_base_with_info_2IjNS1_5EpickENS1_27Triangulation_vertex_base_2IS8_NS1_30Triangulation_ds_vertex_base_2IvEEEEEENS5_IvEEEEEENS1_7DefaultESH_SH_EELb0EEESaISJ_EED2Ev.exit: ; preds = %_ZNK4CGAL15Triangulation_2INS_5EpickENS_30Triangulation_data_structure_2INS_37Triangulation_vertex_base_with_info_2IjS1_NS_27Triangulation_vertex_base_2IS1_NS_30Triangulation_ds_vertex_base_2IvEEEEEENS_28Triangulation_ds_face_base_2IvEEEEE11is_infiniteENS_8internal11CC_iteratorINS_17Compact_containerINS9_ISB_EENS_7DefaultESH_SH_EELb0EEE.exit, %240, %._crit_edge - %.sroa.9.2.lcssa = phi ptr [ %spec.select4.i.i107, %._crit_edge ], [ %.sroa.0.0.copyload.i.i.i118, %240 ], [ %.sroa.9.2168, %_ZNK4CGAL15Triangulation_2INS_5EpickENS_30Triangulation_data_structure_2INS_37Triangulation_vertex_base_with_info_2IjS1_NS_27Triangulation_vertex_base_2IS1_NS_30Triangulation_ds_vertex_base_2IvEEEEEENS_28Triangulation_ds_face_base_2IvEEEEE11is_infiniteENS_8internal11CC_iteratorINS_17Compact_containerINS9_ISB_EENS_7DefaultESH_SH_EELb0EEE.exit ] + %.sroa.9.2.lcssa = phi ptr [ %spec.select4.i.i107, %._crit_edge ], [ %.sroa.0.0.copyload.i.i.i118, %239 ], [ %.sroa.9.2168, %_ZNK4CGAL15Triangulation_2INS_5EpickENS_30Triangulation_data_structure_2INS_37Triangulation_vertex_base_with_info_2IjS1_NS_27Triangulation_vertex_base_2IS1_NS_30Triangulation_ds_vertex_base_2IvEEEEEENS_28Triangulation_ds_face_base_2IvEEEEE11is_infiniteENS_8internal11CC_iteratorINS_17Compact_containerINS9_ISB_EENS_7DefaultESH_SH_EELb0EEE.exit ] store ptr %.sroa.9.2.lcssa, ptr %.sroa.0.0.copyload.i.i, align 8, !tbaa !188 call void @llvm.lifetime.end.p0(ptr nonnull %7) %255 = load ptr, ptr %6, align 8, !tbaa !938 @@ -34503,7 +34502,7 @@ _ZNSt7__cxx1110_List_baseIN4CGAL8internal11CC_iteratorINS1_17Compact_containerIN br i1 %.not8.i.i128, label %_ZNSt7__cxx1110_List_baseIN4CGAL8internal11CC_iteratorINS1_17Compact_containerINS1_28Triangulation_ds_face_base_2INS1_30Triangulation_data_structure_2INS1_37Triangulation_vertex_base_with_info_2IjNS1_5EpickENS1_27Triangulation_vertex_base_2IS8_NS1_30Triangulation_ds_vertex_base_2IvEEEEEENS5_IvEEEEEENS1_7DefaultESH_SH_EELb0EEESaISJ_EED2Ev.exit132, label %.lr.ph.i.i129 .lr.ph.i.i129: ; preds = %257, %.lr.ph.i.i129 - %.09.i.i130 = phi ptr [ %259, %.lr.ph.i.i129 ], [ %258, %257 ] + %.09.i.i130 = phi ptr [ %259, %.lr.ph.i.i129 ], [ %258, %256 ] %259 = load ptr, ptr %.09.i.i130, align 8, !tbaa !938 call void @_ZdlPvm(ptr noundef nonnull %.09.i.i130, i64 noundef 24) #42 %.not.i.i131 = icmp eq ptr %259, %7 diff --git a/bench/libquic/optimized/x509name.ll b/bench/libquic/optimized/x509name.ll index a418cb8c4c3..33926f9c6d1 100644 --- a/bench/libquic/optimized/x509name.ll +++ b/bench/libquic/optimized/x509name.ll @@ -62,27 +62,26 @@ X509_NAME_get_entry.exit: ; preds = %X509_NAME_get_index tail call void @llvm.assume(i1 %.not.i) %21 = load ptr, ptr %0, align 8, !tbaa !6 %22 = tail call ptr @sk_value(ptr noundef %21, i64 noundef %20) #7 - %23 = icmp ne ptr %22, null - tail call void @llvm.assume(i1 %23) - %24 = getelementptr inbounds nuw i8, ptr %22, i64 8 - %25 = load ptr, ptr %24, align 8, !tbaa !21 - %26 = load i32, ptr %25, align 8, !tbaa !22 - %27 = icmp eq ptr %2, null - br i1 %27, label %X509_NAME_get_index_by_OBJ.exit.thread, label %28 - -28: ; preds = %X509_NAME_get_entry.exit - %29 = add nsw i32 %3, -1 - %30 = tail call i32 @llvm.smin.i32(i32 %26, i32 %29) - %31 = getelementptr inbounds nuw i8, ptr %25, i64 8 - %32 = load ptr, ptr %31, align 8, !tbaa !25 - %33 = sext i32 %30 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %2, ptr align 1 %32, i64 %33, i1 false) - %34 = getelementptr inbounds i8, ptr %2, i64 %33 - store i8 0, ptr %34, align 1, !tbaa !26 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %22) ] + %23 = getelementptr inbounds nuw i8, ptr %22, i64 8 + %24 = load ptr, ptr %23, align 8, !tbaa !21 + %25 = load i32, ptr %24, align 8, !tbaa !22 + %26 = icmp eq ptr %2, null + br i1 %26, label %X509_NAME_get_index_by_OBJ.exit.thread, label %27 + +27: ; preds = %X509_NAME_get_entry.exit + %28 = add nsw i32 %3, -1 + %29 = tail call i32 @llvm.smin.i32(i32 %25, i32 %28) + %30 = getelementptr inbounds nuw i8, ptr %24, i64 8 + %31 = load ptr, ptr %30, align 8, !tbaa !25 + %32 = sext i32 %29 to i64 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %2, ptr align 1 %31, i64 %32, i1 false) + %33 = getelementptr inbounds i8, ptr %2, i64 %32 + store i8 0, ptr %33, align 1, !tbaa !26 br label %X509_NAME_get_index_by_OBJ.exit.thread -X509_NAME_get_index_by_OBJ.exit.thread: ; preds = %11, %4, %X509_NAME_get_entry.exit, %X509_NAME_get_index_by_OBJ.exit, %28 - %.0 = phi i32 [ %30, %28 ], [ %26, %X509_NAME_get_entry.exit ], [ -1, %X509_NAME_get_index_by_OBJ.exit ], [ -1, %4 ], [ -1, %11 ] +X509_NAME_get_index_by_OBJ.exit.thread: ; preds = %11, %4, %X509_NAME_get_entry.exit, %X509_NAME_get_index_by_OBJ.exit, %27 + %.0 = phi i32 [ %29, %27 ], [ %25, %X509_NAME_get_entry.exit ], [ -1, %X509_NAME_get_index_by_OBJ.exit ], [ -1, %4 ], [ -1, %11 ] ret i32 %.0 } diff --git a/bench/libzmq/optimized/socket_base.ll b/bench/libzmq/optimized/socket_base.ll index 0bc98bf9a21..f22e1bebc57 100644 --- a/bench/libzmq/optimized/socket_base.ll +++ b/bench/libzmq/optimized/socket_base.ll @@ -9691,28 +9691,27 @@ _ZNSt8multimapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN3zmq6pipe_t _ZN3zmq13socket_base_t9inprocs_t10erase_pipeEPKNS_6pipe_tE.exit: ; preds = %21, %2, %_ZNSt8multimapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN3zmq6pipe_tESt4lessIS5_ESaISt4pairIKS5_S8_EEE5eraseB5cxx11ESt17_Rb_tree_iteratorISD_E.exit.i %23 = getelementptr inbounds nuw i8, ptr %0, i64 1640 - %24 = icmp ne ptr %1, null - tail call void @llvm.assume(i1 %24) - %25 = load ptr, ptr %23, align 8, !tbaa !218 - %26 = getelementptr inbounds nuw i8, ptr %0, i64 1648 - %27 = load ptr, ptr %26, align 8, !tbaa !218 - %28 = icmp eq ptr %25, %27 - br i1 %28, label %_ZN3zmq7array_tINS_6pipe_tELi3EE5eraseEPS1_.exit, label %29 - -29: ; preds = %_ZN3zmq13socket_base_t9inprocs_t10erase_pipeEPKNS_6pipe_tE.exit - %30 = getelementptr inbounds nuw i8, ptr %1, i64 64 - %31 = load i32, ptr %30, align 8, !tbaa !134 - %32 = sext i32 %31 to i64 - %33 = getelementptr inbounds i8, ptr %27, i64 -8 - %34 = load ptr, ptr %33, align 8, !tbaa !3, !nonnull !98, !noundef !98 - %35 = getelementptr inbounds nuw i8, ptr %34, i64 64 - store i32 %31, ptr %35, align 8, !tbaa !134 - %36 = getelementptr inbounds nuw ptr, ptr %25, i64 %32 - store ptr %34, ptr %36, align 8, !tbaa !3 - store ptr %33, ptr %26, align 8, !tbaa !133 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] + %24 = load ptr, ptr %23, align 8, !tbaa !218 + %25 = getelementptr inbounds nuw i8, ptr %0, i64 1648 + %26 = load ptr, ptr %25, align 8, !tbaa !218 + %27 = icmp eq ptr %24, %26 + br i1 %27, label %_ZN3zmq7array_tINS_6pipe_tELi3EE5eraseEPS1_.exit, label %28 + +28: ; preds = %_ZN3zmq13socket_base_t9inprocs_t10erase_pipeEPKNS_6pipe_tE.exit + %29 = getelementptr inbounds nuw i8, ptr %1, i64 64 + %30 = load i32, ptr %29, align 8, !tbaa !134 + %31 = sext i32 %30 to i64 + %32 = getelementptr inbounds i8, ptr %26, i64 -8 + %33 = load ptr, ptr %32, align 8, !tbaa !3, !nonnull !98, !noundef !98 + %34 = getelementptr inbounds nuw i8, ptr %33, i64 64 + store i32 %30, ptr %34, align 8, !tbaa !134 + %35 = getelementptr inbounds nuw ptr, ptr %24, i64 %31 + store ptr %33, ptr %35, align 8, !tbaa !3 + store ptr %32, ptr %25, align 8, !tbaa !133 br label %_ZN3zmq7array_tINS_6pipe_tELi3EE5eraseEPS1_.exit -_ZN3zmq7array_tINS_6pipe_tELi3EE5eraseEPS1_.exit: ; preds = %_ZN3zmq13socket_base_t9inprocs_t10erase_pipeEPKNS_6pipe_tE.exit, %29 +_ZN3zmq7array_tINS_6pipe_tELi3EE5eraseEPS1_.exit: ; preds = %_ZN3zmq13socket_base_t9inprocs_t10erase_pipeEPKNS_6pipe_tE.exit, %28 %37 = tail call noundef nonnull align 8 dereferenceable(68) ptr @_ZNK3zmq6pipe_t17get_endpoint_pairEv(ptr noundef nonnull align 8 dereferenceable(328) %1) %38 = getelementptr inbounds nuw i8, ptr %37, i64 64 %39 = load i32, ptr %38, align 8, !tbaa !119 @@ -9733,7 +9732,7 @@ _ZN3zmq7array_tINS_6pipe_tELi3EE5eraseEPS1_.exit: ; preds = %_ZN3zmq13socket_bas br i1 %.not14, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %45, %55 - %.sroa.0.015 = phi ptr [ %56, %55 ], [ %48, %45 ] + %.sroa.0.015 = phi ptr [ %56, %54 ], [ %48, %44 ] %50 = getelementptr inbounds nuw i8, ptr %.sroa.0.015, i64 72 %51 = load ptr, ptr %50, align 8, !tbaa !202 %52 = icmp eq ptr %51, %1 diff --git a/bench/log-rs/optimized/2fembjqwp89ywpt5.ll b/bench/log-rs/optimized/2fembjqwp89ywpt5.ll index 334a1276d55..c0140cb5b50 100644 --- a/bench/log-rs/optimized/2fembjqwp89ywpt5.ll +++ b/bench/log-rs/optimized/2fembjqwp89ywpt5.ll @@ -101,6 +101,7 @@ define noundef range(i64 0, 6) i64 @"_ZN57_$LT$log..Level$u20$as$u20$core..str.. %3 = alloca { i64, { i64, i64 } }, align 8 %4 = alloca { ptr, ptr }, align 8 %5 = alloca { ptr, ptr }, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] %6 = getelementptr inbounds nuw i8, ptr %5, i64 8 %7 = getelementptr inbounds nuw i8, ptr %4, i64 8 %8 = getelementptr inbounds i8, ptr %0, i64 %1 @@ -111,13 +112,14 @@ define noundef range(i64 0, 6) i64 @"_ZN57_$LT$log..Level$u20$as$u20$core..str.. %.idx = phi i64 [ 0, %.lr.ph.i ], [ %.add, %.loopexit.i ] %.ptr = getelementptr inbounds nuw i8, ptr @_ZN3log15LOG_LEVEL_NAMES17h19681b37bc026262E, i64 %.idx %.add = add nuw nsw i64 %.idx, 16 + %.val8.i = load ptr, ptr %.ptr, align 8, !noalias !4, !nonnull !7, !align !8, !noundef !7 %10 = getelementptr i8, ptr %.ptr, i64 8 %.val9.i = load i64, ptr %10, align 8, !noalias !4, !noundef !7 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val8.i) ] %11 = icmp eq i64 %.val9.i, %1 br i1 %11, label %12, label %.loopexit.i 12: ; preds = %9 - %.val8.i = load ptr, ptr %.ptr, align 8, !noalias !4, !nonnull !7, !align !8, !noundef !7 %13 = getelementptr inbounds i8, ptr %.val8.i, i64 %1 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !9 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !9 @@ -147,8 +149,11 @@ define noundef range(i64 0, 6) i64 @"_ZN57_$LT$log..Level$u20$as$u20$core..str.. 21: ; preds = %19 %22 = add i64 %20, 1 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %17) ] %23 = getelementptr inbounds i8, ptr %17, i64 %20 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %18) ] %24 = getelementptr inbounds i8, ptr %18, i64 %20 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %24) ] %.fca.0.extract.val.i.i.i.i = load i8, ptr %23, align 1, !noalias !28, !noundef !7 %.fca.1.extract.val.i.i.i.i = load i8, ptr %24, align 1, !noalias !28, !noundef !7 %25 = add i8 %.fca.0.extract.val.i.i.i.i, -65 @@ -226,6 +231,7 @@ define noundef range(i64 0, 7) i64 @"_ZN63_$LT$log..LevelFilter$u20$as$u20$core. %3 = alloca { i64, { i64, i64 } }, align 8 %4 = alloca { ptr, ptr }, align 8 %5 = alloca { ptr, ptr }, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] %6 = getelementptr inbounds nuw i8, ptr %5, i64 8 %7 = getelementptr inbounds nuw i8, ptr %4, i64 8 %8 = getelementptr inbounds i8, ptr %0, i64 %1 @@ -236,13 +242,14 @@ define noundef range(i64 0, 7) i64 @"_ZN63_$LT$log..LevelFilter$u20$as$u20$core. %.idx = phi i64 [ 0, %.lr.ph.i ], [ %.add, %.loopexit.i ] %.ptr = getelementptr inbounds nuw i8, ptr @_ZN3log15LOG_LEVEL_NAMES17h19681b37bc026262E, i64 %.idx %.add = add nuw nsw i64 %.idx, 16 + %.val8.i = load ptr, ptr %.ptr, align 8, !noalias !35, !nonnull !7, !align !8, !noundef !7 %10 = getelementptr i8, ptr %.ptr, i64 8 %.val9.i = load i64, ptr %10, align 8, !noalias !35, !noundef !7 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val8.i) ] %11 = icmp eq i64 %.val9.i, %1 br i1 %11, label %12, label %.loopexit.i 12: ; preds = %9 - %.val8.i = load ptr, ptr %.ptr, align 8, !noalias !35, !nonnull !7, !align !8, !noundef !7 %13 = getelementptr inbounds i8, ptr %.val8.i, i64 %1 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !38 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !38 @@ -272,8 +279,11 @@ define noundef range(i64 0, 7) i64 @"_ZN63_$LT$log..LevelFilter$u20$as$u20$core. 21: ; preds = %19 %22 = add i64 %20, 1 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %17) ] %23 = getelementptr inbounds i8, ptr %17, i64 %20 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %18) ] %24 = getelementptr inbounds i8, ptr %18, i64 %20 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %24) ] %.fca.0.extract.val.i.i.i.i = load i8, ptr %23, align 1, !noalias !57, !noundef !7 %.fca.1.extract.val.i.i.i.i = load i8, ptr %24, align 1, !noalias !57, !noundef !7 %25 = add i8 %.fca.0.extract.val.i.i.i.i, -65 diff --git a/bench/meilisearch-rs/optimized/1f5rio4m04ghssoy.ll b/bench/meilisearch-rs/optimized/1f5rio4m04ghssoy.ll index 5b7f6a1121d..eb3e66a4043 100644 --- a/bench/meilisearch-rs/optimized/1f5rio4m04ghssoy.ll +++ b/bench/meilisearch-rs/optimized/1f5rio4m04ghssoy.ll @@ -27,27 +27,26 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr127drop_in_place$LT$std..sync..mutex..MutexGuard$LT$std..collections..hash..map..HashMap$LT$std..path..PathBuf$C$usize$GT$$GT$$GT$17he19c1a5a167e0c8aE"(ptr %.0.val, i8 %.8.val) unnamed_addr #0 { - %1 = icmp ne ptr %.0.val, null - tail call void @llvm.assume(i1 %1) - %2 = getelementptr inbounds nuw i8, ptr %.0.val, i64 4 - %3 = trunc nuw i8 %.8.val to i1 - br i1 %3, label %_ZN3std4sync6poison4Flag4done17h493818bfcfebdf65E.exit.i, label %4 - -4: ; preds = %0 - %5 = load atomic i64, ptr @_ZN3std9panicking11panic_count18GLOBAL_PANIC_COUNT17h69e92bec4f5667f3E monotonic, align 8 - %6 = and i64 %5, 9223372036854775807 - %7 = icmp eq i64 %6, 0 - br i1 %7, label %_ZN3std4sync6poison4Flag4done17h493818bfcfebdf65E.exit.i, label %8 - -8: ; preds = %4 - %9 = tail call noundef zeroext i1 @_ZN3std9panicking11panic_count17is_zero_slow_path17heeecc5f696389655E() - br i1 %9, label %_ZN3std4sync6poison4Flag4done17h493818bfcfebdf65E.exit.i, label %10 - -10: ; preds = %8 - store atomic i8 1, ptr %2 monotonic, align 1 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.0.val) ] + %1 = getelementptr inbounds nuw i8, ptr %.0.val, i64 4 + %2 = trunc nuw i8 %.8.val to i1 + br i1 %2, label %_ZN3std4sync6poison4Flag4done17h493818bfcfebdf65E.exit.i, label %3 + +3: ; preds = %0 + %4 = load atomic i64, ptr @_ZN3std9panicking11panic_count18GLOBAL_PANIC_COUNT17h69e92bec4f5667f3E monotonic, align 8 + %5 = and i64 %4, 9223372036854775807 + %6 = icmp eq i64 %5, 0 + br i1 %6, label %_ZN3std4sync6poison4Flag4done17h493818bfcfebdf65E.exit.i, label %7 + +7: ; preds = %3 + %8 = tail call noundef zeroext i1 @_ZN3std9panicking11panic_count17is_zero_slow_path17heeecc5f696389655E() + br i1 %8, label %_ZN3std4sync6poison4Flag4done17h493818bfcfebdf65E.exit.i, label %9 + +9: ; preds = %7 + store atomic i8 1, ptr %1 monotonic, align 1 br label %_ZN3std4sync6poison4Flag4done17h493818bfcfebdf65E.exit.i -_ZN3std4sync6poison4Flag4done17h493818bfcfebdf65E.exit.i: ; preds = %10, %8, %4, %0 +_ZN3std4sync6poison4Flag4done17h493818bfcfebdf65E.exit.i: ; preds = %9, %7, %3, %0 %11 = atomicrmw xchg ptr %.0.val, i32 0 release, align 4 %12 = icmp eq i32 %11, 2 br i1 %12, label %13, label %"_ZN79_$LT$std..sync..mutex..MutexGuard$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17haafa48b421243f22E.exit" @@ -156,6 +155,7 @@ define internal fastcc { ptr, i64 } @"_ZN4core3str4iter22SplitInternal$LT$P$GT$9 %.val = load ptr, ptr %17, align 8, !nonnull !5, !align !27, !noundef !5 %18 = getelementptr inbounds nuw i8, ptr %0, i64 80 %.val11 = load i64, ptr %18, align 8, !noundef !5 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] call void @llvm.lifetime.start.p0(ptr nonnull %2) tail call void @llvm.experimental.noalias.scope.decl(metadata !28) tail call void @llvm.experimental.noalias.scope.decl(metadata !31) @@ -213,6 +213,7 @@ define internal fastcc { ptr, i64 } @"_ZN4core3str4iter22SplitInternal$LT$P$GT$9 %42 = icmp ne i64 %30, 1 tail call void @llvm.assume(i1 %42) %43 = getelementptr inbounds i8, ptr %38, i64 -2 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %43) ] %44 = load i8, ptr %43, align 1, !noalias !46, !noundef !5 %45 = and i8 %44, 31 %46 = zext nneg i8 %45 to i32 @@ -227,6 +228,7 @@ define internal fastcc { ptr, i64 } @"_ZN4core3str4iter22SplitInternal$LT$P$GT$9 %50 = icmp ne i64 %30, 2 tail call void @llvm.assume(i1 %50) %51 = getelementptr inbounds i8, ptr %38, i64 -3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %51) ] %52 = load i8, ptr %51, align 1, !noalias !46, !noundef !5 %53 = and i8 %52, 15 %54 = zext nneg i8 %53 to i32 @@ -245,6 +247,7 @@ define internal fastcc { ptr, i64 } @"_ZN4core3str4iter22SplitInternal$LT$P$GT$9 %61 = icmp ne i64 %30, 3 tail call void @llvm.assume(i1 %61) %62 = getelementptr inbounds i8, ptr %38, i64 -4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %62) ] %63 = load i8, ptr %62, align 1, !noalias !46, !noundef !5 %64 = and i8 %63, 7 %65 = zext nneg i8 %64 to i32 @@ -748,6 +751,7 @@ define void @_ZN10meili_snap34default_snapshot_settings_for_test17h23bbead29b6e1 "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17h56b0c0ceaa5aa866E.exit.i": ; preds = %62 %63 = getelementptr i8, ptr %1, i64 %2 %64 = getelementptr i8, ptr %63, i64 -13 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %64) ] %bcmp.i.i.i = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(13) @anon.0d18f9b890c379d9c30b9e9e5116147c.29, ptr noundef nonnull readonly align 1 dereferenceable(13) %64, i64 13), !alias.scope !76 %65 = icmp eq i32 %bcmp.i.i.i, 0 %66 = add i64 %2, -13 @@ -837,6 +841,7 @@ define void @_ZN10meili_snap34default_snapshot_settings_for_test17h23bbead29b6e1 %.val = load ptr, ptr %87, align 8, !nonnull !5, !noundef !5 %88 = getelementptr inbounds nuw i8, ptr %36, i64 16 %.val41 = load i64, ptr %88, align 8, !noundef !5 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] call void @llvm.lifetime.start.p0(ptr nonnull %35) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %35, ptr noundef nonnull align 8 dereferenceable(24) %39, i64 24, i1 false) call void @llvm.experimental.noalias.scope.decl(metadata !88) @@ -1223,6 +1228,7 @@ _ZN5alloc3fmt6format17h7fed6a266585da9dE.exit: ; preds = %218 call void @llvm.lifetime.end.p0(ptr nonnull %28) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(24) %29, i64 24, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %31) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %164) ] %221 = getelementptr inbounds nuw i8, ptr %164, i64 4 br i1 %167, label %_ZN3std4sync6poison4Flag4done17h493818bfcfebdf65E.exit.i.i, label %222 diff --git a/bench/meshlab/optimized/paintbox.ll b/bench/meshlab/optimized/paintbox.ll index 9fa242b26f2..637fd203860 100644 --- a/bench/meshlab/optimized/paintbox.ll +++ b/bench/meshlab/optimized/paintbox.ll @@ -13742,10 +13742,9 @@ define void @_ZN8Paintbox19restorePreviousTypeEv(ptr noundef nonnull readonly al %11 = getelementptr inbounds nuw i8, ptr %10, i64 104 %12 = load ptr, ptr %11, align 8 %13 = tail call noundef ptr %12(ptr noundef nonnull align 8 dereferenceable(12) %9) - %14 = icmp ne ptr %13, null - tail call void @llvm.assume(i1 %14) - %15 = tail call ptr @__dynamic_cast(ptr nonnull %13, ptr nonnull @_ZTI7QWidget, ptr nonnull @_ZTI11QToolButton, i64 0) #19 - tail call void @_ZN15QAbstractButton6toggleEv(ptr noundef nonnull align 8 dereferenceable(48) %15) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %13) ] + %14 = tail call ptr @__dynamic_cast(ptr nonnull %13, ptr nonnull @_ZTI7QWidget, ptr nonnull @_ZTI11QToolButton, i64 0) #19 + tail call void @_ZN15QAbstractButton6toggleEv(ptr noundef nonnull align 8 dereferenceable(48) %14) ret void } diff --git a/bench/minetest/optimized/l_nodemeta.ll b/bench/minetest/optimized/l_nodemeta.ll index f3090aadd37..465ef664c14 100644 --- a/bench/minetest/optimized/l_nodemeta.ll +++ b/bench/minetest/optimized/l_nodemeta.ll @@ -773,16 +773,15 @@ declare i32 @lua_isstring(ptr noundef, i32 noundef) local_unnamed_addr #0 define dso_local void @_ZN11NodeMetaRef13handleToTableEP9lua_StateP9IMetadata(ptr noundef nonnull align 8 dereferenceable(32) %this, ptr noundef %L, ptr noundef %_meta) unnamed_addr #4 align 2 { entry: tail call void @_ZN11MetaDataRef13handleToTableEP9lua_StateP9IMetadata(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef %L, ptr noundef %_meta) - %0 = icmp ne ptr %_meta, null - tail call void @llvm.assume(i1 %0) - %1 = tail call ptr @__dynamic_cast(ptr nonnull %_meta, ptr nonnull @_ZTI9IMetadata, ptr nonnull @_ZTI12NodeMetadata, i64 -1) #24 - %m_inventory.i = getelementptr inbounds nuw i8, ptr %1, i64 72 - %2 = load ptr, ptr %m_inventory.i, align 8, !tbaa !126 - %tobool.not = icmp eq ptr %2, null + call void @llvm.assume(i1 true) [ "nonnull"(ptr %_meta) ] + %0 = tail call ptr @__dynamic_cast(ptr nonnull %_meta, ptr nonnull @_ZTI9IMetadata, ptr nonnull @_ZTI12NodeMetadata, i64 -1) #24 + %m_inventory.i = getelementptr inbounds nuw i8, ptr %0, i64 72 + %1 = load ptr, ptr %m_inventory.i, align 8, !tbaa !126 + %tobool.not = icmp eq ptr %1, null br i1 %tobool.not, label %if.else, label %if.then if.then: ; preds = %entry - tail call void @_Z20push_inventory_listsP9lua_StateRK9Inventory(ptr noundef %L, ptr noundef nonnull align 8 dereferenceable(33) %2) + tail call void @_Z20push_inventory_listsP9lua_StateRK9Inventory(ptr noundef %L, ptr noundef nonnull align 8 dereferenceable(33) %1) br label %if.end if.else: ; preds = %entry @@ -811,11 +810,10 @@ entry: br i1 %call, label %if.end, label %return if.end: ; preds = %entry - %0 = icmp ne ptr %_meta, null - tail call void @llvm.assume(i1 %0) - %1 = tail call ptr @__dynamic_cast(ptr nonnull %_meta, ptr nonnull @_ZTI9IMetadata, ptr nonnull @_ZTI12NodeMetadata, i64 -1) #24 - %m_inventory.i = getelementptr inbounds nuw i8, ptr %1, i64 72 - %2 = load ptr, ptr %m_inventory.i, align 8, !tbaa !126 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %_meta) ] + %0 = tail call ptr @__dynamic_cast(ptr nonnull %_meta, ptr nonnull @_ZTI9IMetadata, ptr nonnull @_ZTI12NodeMetadata, i64 -1) #24 + %m_inventory.i = getelementptr inbounds nuw i8, ptr %0, i64 72 + %1 = load ptr, ptr %m_inventory.i, align 8, !tbaa !126 tail call void @lua_getfield(ptr noundef %L, i32 noundef %table, ptr noundef nonnull @.str.16) %call3 = tail call i32 @lua_type(ptr noundef %L, i32 noundef -1) %cmp = icmp eq i32 %call3, 5 @@ -889,7 +887,7 @@ invoke.cont11: ; preds = %invoke.cont %10 = icmp eq ptr %call12, null %add.ptr = getelementptr inbounds nuw i8, ptr %call12, i64 16 %spec.select = select i1 %10, ptr null, ptr %add.ptr - invoke void @_Z19read_inventory_listP9lua_StateiP9InventoryPKcP8IGameDefi(ptr noundef %L, i32 noundef -1, ptr noundef %2, ptr noundef %9, ptr noundef %spec.select, i32 noundef -1) + invoke void @_Z19read_inventory_listP9lua_StateiP9InventoryPKcP8IGameDefi(ptr noundef %L, i32 noundef -1, ptr noundef %1, ptr noundef %9, ptr noundef %spec.select, i32 noundef -1) to label %invoke.cont13 unwind label %lpad10 invoke.cont13: ; preds = %invoke.cont11 diff --git a/bench/mini-lsm-rs/optimized/2ysi1cyianhw3g5t.ll b/bench/mini-lsm-rs/optimized/2ysi1cyianhw3g5t.ll index d1a6b21bed2..a07d53a2a87 100644 --- a/bench/mini-lsm-rs/optimized/2ysi1cyianhw3g5t.ll +++ b/bench/mini-lsm-rs/optimized/2ysi1cyianhw3g5t.ll @@ -53,6 +53,7 @@ define hidden noundef ptr @_ZN3std2io5Write9write_all17he304e79fffe0735cE(ptr no 14: ; preds = %9 %.val = load ptr, ptr %7, align 8, !nonnull !5, !noundef !5 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %15 = ptrtoint ptr %.val to i64 %16 = and i64 %15, 3 switch i64 %16, label %default.unreachable [ @@ -384,11 +385,13 @@ define hidden void @_ZN6anyhow5error11object_drop17hdd15c42e34e8fd3eE(ptr nounde 9: ; preds = %7, %1 %10 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] call void @__rust_dealloc(ptr noundef nonnull %0, i64 noundef 16, i64 noundef 8) #26 resume { ptr, i32 } %10 "_ZN4core3ptr99drop_in_place$LT$alloc..boxed..Box$LT$anyhow..error..ErrorImpl$LT$std..io..error..Error$GT$$GT$$GT$17hf8a5ade6738e83ecE.exit": ; preds = %.noexc.i, %7 call void @llvm.lifetime.end.p0(ptr nonnull %2), !noalias !72 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] call void @__rust_dealloc(ptr noundef nonnull %0, i64 noundef 16, i64 noundef 8) #26 ret void } @@ -403,6 +406,7 @@ define hidden noundef ptr @_ZN6anyhow5error15object_downcast17h910b7cad67d1db79E ; Function Attrs: nounwind nonlazybind uwtable define hidden void @_ZN6anyhow5error17object_drop_front17h5979a5a0a1a81395E(ptr noundef nonnull %0, i128 noundef %1) unnamed_addr #7 personality ptr @rust_eh_personality { + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] tail call void @__rust_dealloc(ptr noundef nonnull %0, i64 noundef 16, i64 noundef 8) #26 ret void } @@ -461,6 +465,7 @@ define hidden void @"_ZN80_$LT$core..core_arch..x86..__m128i$u20$as$u20$core..co ; Function Attrs: nounwind nonlazybind uwtable define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17h9f771290ad7f2269E"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %0) unnamed_addr #7 personality ptr @rust_eh_personality { %2 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 32, i64 noundef 8) #26 ret void } @@ -505,10 +510,12 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17hc0c93dbdc9469a1c 17: ; preds = %16, %15 %18 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 40, i64 noundef 8) #26 resume { ptr, i32 } %18 "_ZN4core3ptr351drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$lock_api..rwlock..RwLock$LT$parking_lot..raw_rwlock..RawRwLock$C$core..option..Option$LT$core..result..Result$LT$alloc..sync..Arc$LT$mini_lsm_starter..block..Block$GT$$C$alloc..sync..Arc$LT$dyn$u20$core..any..Any$u2b$core..marker..Send$u2b$core..marker..Sync$GT$$GT$$GT$$GT$$GT$$GT$$GT$17hb5c31de2e99d4282E.exit": ; preds = %1, %10, %15, %16 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 40, i64 noundef 8) #26 ret void } @@ -516,6 +523,7 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17hc0c93dbdc9469a1c ; Function Attrs: nounwind nonlazybind uwtable define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17hca5d343cb6183e14E"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %0) unnamed_addr #7 personality ptr @rust_eh_personality { %2 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 16, i64 noundef 8) #26 ret void } @@ -560,6 +568,7 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17hf8dd516bba673eed to label %.noexc.i unwind label %20 .noexc.i: ; preds = %15 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %16) ] tail call void @__rust_dealloc(ptr noundef nonnull %16, i64 noundef 32, i64 noundef 8) #26, !noalias !121 br label %"_ZN4core3ptr199drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$moka..common..concurrent..ValueEntry$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_starter..block..Block$GT$$GT$$GT$$GT$$GT$17ha76b0d8a670e9423E.exit" @@ -576,10 +585,12 @@ define hidden void @"_ZN8triomphe3arc12Arc$LT$T$GT$9drop_slow17hf8dd516bba673eed 22: ; preds = %20, %8 %eh.lpad-body.i = phi { ptr, i32 } [ %21, %20 ], [ %9, %8 ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 48, i64 noundef 8) #26 resume { ptr, i32 } %eh.lpad-body.i "_ZN4core3ptr199drop_in_place$LT$alloc..boxed..Box$LT$triomphe..arc..ArcInner$LT$moka..common..concurrent..ValueEntry$LT$$LP$usize$C$usize$RP$$C$alloc..sync..Arc$LT$mini_lsm_starter..block..Block$GT$$GT$$GT$$GT$$GT$17ha76b0d8a670e9423E.exit": ; preds = %"_ZN4core3ptr75drop_in_place$LT$alloc..sync..Arc$LT$mini_lsm_starter..block..Block$GT$$GT$17h0c660c363b45c0dcE.llvm.8684371289217427975.exit.i.i.i", %.noexc.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 48, i64 noundef 8) #26 ret void } @@ -614,6 +625,7 @@ define hidden noundef ptr @"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u2 %.val911.i = phi ptr [ %.promoted.i, %.lr.ph.i ], [ %13, %9 ] %11 = load <16 x i8>, ptr %10, align 16, !noalias !130 %12 = icmp sgt <16 x i8> %11, splat (i8 -1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val911.i) ] %13 = getelementptr inbounds i8, ptr %.val911.i, i64 -256 %14 = getelementptr inbounds nuw i8, ptr %10, i64 16 %.cast.i = bitcast <16 x i1> %12 to i16 @@ -628,6 +640,7 @@ define hidden noundef ptr @"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u2 %17 = add i16 %.lcssa.i, -1 %18 = and i16 %17, %.lcssa.i store i16 %18, ptr %6, align 8, !alias.scope !127 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3.i) ] %19 = sub nsw i64 0, %16 %20 = getelementptr inbounds { i64, ptr }, ptr %.val3.i, i64 %19 %21 = add i64 %3, -1 @@ -669,6 +682,7 @@ define hidden noundef ptr @"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u2 %.val911.i = phi ptr [ %.promoted.i, %.lr.ph.i ], [ %13, %9 ] %11 = load <16 x i8>, ptr %10, align 16, !noalias !139 %12 = icmp sgt <16 x i8> %11, splat (i8 -1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val911.i) ] %13 = getelementptr inbounds i8, ptr %.val911.i, i64 -64 %14 = getelementptr inbounds nuw i8, ptr %10, i64 16 %.cast.i = bitcast <16 x i1> %12 to i16 @@ -683,6 +697,7 @@ define hidden noundef ptr @"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u2 %17 = add i16 %.lcssa.i, -1 %18 = and i16 %17, %.lcssa.i store i16 %18, ptr %6, align 8, !alias.scope !136 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3.i) ] %19 = sub nsw i64 0, %16 %20 = getelementptr inbounds i32, ptr %.val3.i, i64 %19 %21 = add i64 %3, -1 @@ -724,6 +739,7 @@ define hidden noundef ptr @"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u2 %.val911.i = phi ptr [ %.promoted.i, %.lr.ph.i ], [ %13, %9 ] %11 = load <16 x i8>, ptr %10, align 16, !noalias !148 %12 = icmp sgt <16 x i8> %11, splat (i8 -1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val911.i) ] %13 = getelementptr inbounds i8, ptr %.val911.i, i64 -1152 %14 = getelementptr inbounds nuw i8, ptr %10, i64 16 %.cast.i = bitcast <16 x i1> %12 to i16 @@ -738,6 +754,7 @@ define hidden noundef ptr @"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u2 %17 = add i16 %.lcssa.i, -1 %18 = and i16 %17, %.lcssa.i store i16 %18, ptr %6, align 8, !alias.scope !145 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3.i) ] %19 = sub nsw i64 0, %16 %20 = getelementptr inbounds { { { { i64, ptr }, i64 } }, { { { { i64, ptr }, i64 } }, { ptr, ptr }, i64 } }, ptr %.val3.i, i64 %19 %21 = add i64 %3, -1 @@ -870,6 +887,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner13drop_elements17h1960b0817b %.val911.i.i = phi ptr [ %15, %.lr.ph.i.i ], [ %.sroa.03.018, %11 ] %13 = load <16 x i8>, ptr %12, align 16, !noalias !156 %14 = icmp sgt <16 x i8> %13, splat (i8 -1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val911.i.i) ] %15 = getelementptr inbounds i8, ptr %.val911.i.i, i64 -256 %16 = getelementptr inbounds nuw i8, ptr %12, i64 16 %.cast.i.i = bitcast <16 x i1> %14 to i16 @@ -882,6 +900,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner13drop_elements17h1960b0817b %.lcssa.i.i = phi i16 [ %.sroa.84.015, %11 ], [ %.cast.i.i, %.lr.ph.i.i ] %17 = add i16 %.lcssa.i.i, -1 %18 = and i16 %17, %.lcssa.i.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.03.1) ] %19 = add i64 %.sroa.105.016, -1 %20 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.lcssa.i.i, i1 true) %21 = zext nneg i16 %20 to i64 @@ -945,6 +964,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner13drop_elements17hdff477a9b6 %.val911.i.i = phi ptr [ %18, %.lr.ph.i.i ], [ %.sroa.03.019, %14 ] %16 = load <16 x i8>, ptr %15, align 16, !noalias !182 %17 = icmp sgt <16 x i8> %16, splat (i8 -1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val911.i.i) ] %18 = getelementptr inbounds i8, ptr %.val911.i.i, i64 -1152 %19 = getelementptr inbounds nuw i8, ptr %15, i64 16 %.cast.i.i = bitcast <16 x i1> %17 to i16 @@ -959,6 +979,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner13drop_elements17hdff477a9b6 %21 = zext nneg i16 %20 to i64 %22 = add i16 %.lcssa.i.i, -1 %23 = and i16 %22, %.lcssa.i.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.03.1) ] %24 = sub nsw i64 0, %21 %25 = getelementptr inbounds { { { { i64, ptr }, i64 } }, { { { { i64, ptr }, i64 } }, { ptr, ptr }, i64 } }, ptr %.sroa.03.1, i64 %24 %26 = add i64 %.sroa.105.017, -1 @@ -1115,6 +1136,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h8881906 %.val911.i.i.i = phi ptr [ %22, %.lr.ph.i.i.i ], [ %.sroa.03.018.i, %18 ] %20 = load <16 x i8>, ptr %19, align 16, !noalias !217 %21 = icmp sgt <16 x i8> %20, splat (i8 -1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val911.i.i.i) ] %22 = getelementptr inbounds i8, ptr %.val911.i.i.i, i64 -256 %23 = getelementptr inbounds nuw i8, ptr %19, i64 16 %.cast.i.i.i = bitcast <16 x i1> %21 to i16 @@ -1127,6 +1149,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h8881906 %.lcssa.i.i.i = phi i16 [ %.sroa.84.015.i, %18 ], [ %.cast.i.i.i, %.lr.ph.i.i.i ] %24 = add i16 %.lcssa.i.i.i, -1 %25 = and i16 %24, %.lcssa.i.i.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.03.1.i) ] %26 = add i64 %.sroa.105.016.i, -1 %27 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.lcssa.i.i.i, i1 true) %28 = zext nneg i16 %27 to i64 @@ -1322,7 +1345,7 @@ define hidden void @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$3new17hec1f4442d8ff ret void } -; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable +; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: write, target_mem0: none, target_mem1: none) uwtable define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9next_impl17h9d9fa56a7fcb32ebE.llvm.13249522725285578715"(ptr noalias noundef align 8 captures(none) dereferenceable(32) %0) unnamed_addr #13 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 24 %3 = load i16, ptr %2, align 8, !alias.scope !271, !noundef !5 @@ -1348,6 +1371,7 @@ define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9nex %7 = add i16 %.lcssa, -1 %8 = and i16 %7, %.lcssa store i16 %8, ptr %2, align 8, !alias.scope !271 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3) ] %9 = sub nsw i64 0, %6 %10 = getelementptr inbounds { i64, ptr }, ptr %.val3, i64 %9 ret ptr %10 @@ -1357,6 +1381,7 @@ define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9nex %.val911 = phi ptr [ %.promoted, %.lr.ph ], [ %15, %11 ] %13 = load <16 x i8>, ptr %12, align 16, !noalias !274 %14 = icmp sgt <16 x i8> %13, splat (i8 -1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val911) ] %15 = getelementptr inbounds i8, ptr %.val911, i64 -256 %16 = getelementptr inbounds nuw i8, ptr %12, i64 16 %.cast = bitcast <16 x i1> %14 to i16 @@ -1364,7 +1389,7 @@ define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9nex br i1 %.not.not.i, label %11, label %._crit_edge } -; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable +; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: write, target_mem0: none, target_mem1: none) uwtable define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9next_impl17hc4c134bc9dc60071E.llvm.13249522725285578715"(ptr noalias noundef align 8 captures(none) dereferenceable(32) %0) unnamed_addr #13 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 24 %3 = load i16, ptr %2, align 8, !alias.scope !277, !noundef !5 @@ -1390,6 +1415,7 @@ define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9nex %7 = add i16 %.lcssa, -1 %8 = and i16 %7, %.lcssa store i16 %8, ptr %2, align 8, !alias.scope !277 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3) ] %9 = sub nsw i64 0, %6 %10 = getelementptr inbounds { { { { i64, ptr }, i64 } }, { { { { i64, ptr }, i64 } }, { ptr, ptr }, i64 } }, ptr %.val3, i64 %9 ret ptr %10 @@ -1399,6 +1425,7 @@ define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9nex %.val911 = phi ptr [ %.promoted, %.lr.ph ], [ %15, %11 ] %13 = load <16 x i8>, ptr %12, align 16, !noalias !280 %14 = icmp sgt <16 x i8> %13, splat (i8 -1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val911) ] %15 = getelementptr inbounds i8, ptr %.val911, i64 -1152 %16 = getelementptr inbounds nuw i8, ptr %12, i64 16 %.cast = bitcast <16 x i1> %14 to i16 @@ -1406,7 +1433,7 @@ define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9nex br i1 %.not.not.i, label %11, label %._crit_edge } -; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable +; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: write, target_mem0: none, target_mem1: none) uwtable define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9next_impl17he96b67e0b4b6e4fbE.llvm.13249522725285578715"(ptr noalias noundef align 8 captures(none) dereferenceable(32) %0) unnamed_addr #13 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 24 %3 = load i16, ptr %2, align 8, !alias.scope !283, !noundef !5 @@ -1432,6 +1459,7 @@ define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9nex %7 = add i16 %.lcssa, -1 %8 = and i16 %7, %.lcssa store i16 %8, ptr %2, align 8, !alias.scope !283 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3) ] %9 = sub nsw i64 0, %6 %10 = getelementptr inbounds i32, ptr %.val3, i64 %9 ret ptr %10 @@ -1441,6 +1469,7 @@ define hidden noundef nonnull ptr @"_ZN9hashbrown3raw21RawIterRange$LT$T$GT$9nex %.val911 = phi ptr [ %.promoted, %.lr.ph ], [ %15, %11 ] %13 = load <16 x i8>, ptr %12, align 16, !noalias !286 %14 = icmp sgt <16 x i8> %13, splat (i8 -1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val911) ] %15 = getelementptr inbounds i8, ptr %.val911, i64 -64 %16 = getelementptr inbounds nuw i8, ptr %12, i64 16 %.cast = bitcast <16 x i1> %14 to i16 @@ -1654,7 +1683,7 @@ attributes #9 = { nofree norecurse nosync nounwind nonlazybind memory(read, argm attributes #10 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #11 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) 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 = { nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #13 = { nofree norecurse nosync nounwind nonlazybind memory(read, argmem: readwrite, inaccessiblemem: write, target_mem0: none, target_mem1: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #14 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #15 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #16 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } diff --git a/bench/mini-lsm-rs/optimized/56vhdkxtzvzc0a1c.ll b/bench/mini-lsm-rs/optimized/56vhdkxtzvzc0a1c.ll index 14cb2abf456..8116dcb695f 100644 --- a/bench/mini-lsm-rs/optimized/56vhdkxtzvzc0a1c.ll +++ b/bench/mini-lsm-rs/optimized/56vhdkxtzvzc0a1c.ll @@ -1473,8 +1473,7 @@ define hidden void @"_ZN5alloc11collections5btree8navigate75LazyLeafRange$LT$all br label %13 7: ; preds = %4 - %8 = icmp ne ptr %.sroa.4.sroa.4.0.copyload, null - tail call void @llvm.assume(i1 %8) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.4.sroa.4.0.copyload) ] %.not11.i = icmp eq i64 %.sroa.4.sroa.5.0.copyload, 0 br i1 %.not11.i, label %"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17h9217d05fd4f8a77dE.llvm.1533238098547642317.exit", label %.lr.ph.i @@ -1528,8 +1527,7 @@ define hidden void @"_ZN5alloc11collections5btree8navigate75LazyLeafRange$LT$all br label %13 7: ; preds = %4 - %8 = icmp ne ptr %.sroa.4.sroa.4.0.copyload, null - tail call void @llvm.assume(i1 %8) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.4.sroa.4.0.copyload) ] %.not11.i = icmp eq i64 %.sroa.4.sroa.5.0.copyload, 0 br i1 %.not11.i, label %"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17hd832304ec3fd3eddE.llvm.1533238098547642317.exit", label %.lr.ph.i diff --git a/bench/mini-lsm-rs/optimized/pew1bqmcl3zb6gg.ll b/bench/mini-lsm-rs/optimized/pew1bqmcl3zb6gg.ll index e3060fda396..78965c41f22 100644 --- a/bench/mini-lsm-rs/optimized/pew1bqmcl3zb6gg.ll +++ b/bench/mini-lsm-rs/optimized/pew1bqmcl3zb6gg.ll @@ -737,7 +737,8 @@ default.unreachable10: ; preds = %3 br label %"_ZN99_$LT$crossbeam_channel..flavors..at..Channel$u20$as$u20$crossbeam_channel..select..SelectHandle$GT$10try_select17h5af93ce364f752b7E.exit" 14: ; preds = %3 - %.val = load ptr, ptr %2, align 8, !nonnull !5, !noundef !5 + %.val = load ptr, ptr %2, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %15 = getelementptr inbounds nuw i8, ptr %.val, i64 40 %16 = load atomic i64, ptr %15 acquire, align 8 %17 = icmp eq i64 %16, 0 @@ -920,7 +921,8 @@ default.unreachable10: ; preds = %3 br label %"_ZN99_$LT$crossbeam_channel..flavors..at..Channel$u20$as$u20$crossbeam_channel..select..SelectHandle$GT$10try_select17h5af93ce364f752b7E.exit" 14: ; preds = %3 - %.val = load ptr, ptr %2, align 8, !nonnull !5, !noundef !5 + %.val = load ptr, ptr %2, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %15 = getelementptr inbounds nuw i8, ptr %.val, i64 40 %16 = load atomic i64, ptr %15 acquire, align 8 %17 = icmp eq i64 %16, 0 @@ -1859,6 +1861,7 @@ common.resume: ; preds = %.body, %23 %.0 = phi i8 [ %46, %43 ], [ 0, %39 ] %48 = getelementptr inbounds nuw i8, ptr %0, i64 56 store atomic i8 %.0, ptr %48 seq_cst, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] %49 = trunc nuw i8 %.0.i.i.i to i1 br i1 %49, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i.i, label %50 @@ -2215,27 +2218,26 @@ default.unreachable35: ; preds = %2 ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr88drop_in_place$LT$std..sync..mutex..MutexGuard$LT$crossbeam_channel..waker..Waker$GT$$GT$17h7af576d7a64c4377E"(ptr %.0.val, i8 %.8.val) unnamed_addr #0 { - %1 = icmp ne ptr %.0.val, null - tail call void @llvm.assume(i1 %1) - %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 - -4: ; preds = %0 - %5 = load atomic i64, ptr @_ZN3std9panicking11panic_count18GLOBAL_PANIC_COUNT17ha93a1baa6fc65cd0E monotonic, align 8 - %6 = and i64 %5, 9223372036854775807 - %7 = icmp eq i64 %6, 0 - br i1 %7, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i, label %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i - -_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i: ; preds = %4 - %8 = tail call noundef zeroext i1 @_ZN3std9panicking11panic_count17is_zero_slow_path17h658c934b8397a2acE() - 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 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.0.val) ] + %1 = getelementptr inbounds nuw i8, ptr %.0.val, i64 4 + %2 = trunc nuw i8 %.8.val to i1 + br i1 %2, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i, label %3 + +3: ; preds = %0 + %4 = load atomic i64, ptr @_ZN3std9panicking11panic_count18GLOBAL_PANIC_COUNT17ha93a1baa6fc65cd0E monotonic, align 8 + %5 = and i64 %4, 9223372036854775807 + %6 = icmp eq i64 %5, 0 + br i1 %6, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i, label %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i + +_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i: ; preds = %3 + %7 = tail call noundef zeroext i1 @_ZN3std9panicking11panic_count17is_zero_slow_path17h658c934b8397a2acE() + br i1 %7, label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i, label %8 + +8: ; preds = %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i + store atomic i8 1, ptr %1 monotonic, align 1 br label %_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i -_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i: ; preds = %9, %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i, %4, %0 +_ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.exit.i: ; preds = %8, %_ZN3std9panicking11panic_count13count_is_zero17h66cf19443d869469E.exit.i.i, %3, %0 %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$4drop17h4a7cd94354db338dE.exit" diff --git a/bench/mitsuba3/optimized/builder.ll b/bench/mitsuba3/optimized/builder.ll index ac1cf2255fb..2ad95565ee2 100644 --- a/bench/mitsuba3/optimized/builder.ll +++ b/bench/mitsuba3/optimized/builder.ll @@ -2183,7 +2183,7 @@ define dso_local noundef i32 @_ZN6asmjit9_abi_1_1011BaseBuilder5alignENS0_9Align %5 = getelementptr inbounds nuw i8, ptr %0, i64 48 %6 = load ptr, ptr %5, align 8, !tbaa !46 %7 = icmp eq ptr %6, null - br i1 %7, label %55, label %8, !prof !15 + br i1 %7, label %54, label %8, !prof !15 8: ; preds = %3 %9 = getelementptr inbounds nuw i8, ptr %0, i64 240 @@ -2212,70 +2212,69 @@ define dso_local noundef i32 @_ZN6asmjit9_abi_1_1011BaseBuilder5alignENS0_9Align 20: ; preds = %8 %21 = call noundef i32 @_ZN6asmjit9_abi_1_1011BaseEmitter11reportErrorEjPKc(ptr noundef nonnull align 8 dereferenceable(144) %0, i32 noundef 1, ptr noundef null) %22 = icmp eq i32 %21, 0 - br i1 %22, label %23, label %55 + br i1 %22, label %23, label %54 23: ; preds = %20, %12 - %24 = icmp ne ptr %10, null - call void @llvm.assume(i1 %24) - %25 = getelementptr inbounds nuw i8, ptr %0, i64 384 - %26 = load ptr, ptr %25, align 8, !tbaa !63 - %27 = icmp eq ptr %26, null - br i1 %27, label %28, label %37 - -28: ; preds = %23 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 392 - %30 = load ptr, ptr %29, align 8, !tbaa !64 - %31 = icmp eq ptr %30, null - br i1 %31, label %32, label %34 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %10) ] + %24 = getelementptr inbounds nuw i8, ptr %0, i64 384 + %25 = load ptr, ptr %24, align 8, !tbaa !63 + %26 = icmp eq ptr %25, null + br i1 %26, label %27, label %36 + +27: ; preds = %23 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 392 + %29 = load ptr, ptr %28, align 8, !tbaa !64 + %30 = icmp eq ptr %29, null + br i1 %30, label %31, label %33 + +28: ; preds = %27 + store ptr %10, ptr %28, align 8, !tbaa !64 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 400 + br label %43 -32: ; preds = %28 - store ptr %10, ptr %29, align 8, !tbaa !64 - %33 = getelementptr inbounds nuw i8, ptr %0, i64 400 - br label %44 +32: ; preds = %27 + %34 = getelementptr inbounds nuw i8, ptr %10, i64 8 + store ptr %29, ptr %34, align 8, !tbaa !16 + %35 = load ptr, ptr %28, align 8, !tbaa !64 + store ptr %10, ptr %35, align 8, !tbaa !16 + br label %43 -34: ; preds = %28 - %35 = getelementptr inbounds nuw i8, ptr %10, i64 8 - store ptr %30, ptr %35, align 8, !tbaa !16 - %36 = load ptr, ptr %29, align 8, !tbaa !64 - store ptr %10, ptr %36, align 8, !tbaa !16 - br label %44 +34: ; preds = %23 + %35 = getelementptr inbounds nuw i8, ptr %25, i64 8 + %38 = load ptr, ptr %35, align 8, !tbaa !16 + store ptr %25, ptr %10, align 8, !tbaa !16 + %39 = getelementptr inbounds nuw i8, ptr %10, i64 8 + store ptr %38, ptr %39, align 8, !tbaa !16 + store ptr %10, ptr %37, align 8, !tbaa !16 + %40 = icmp eq ptr %38, null + %41 = getelementptr inbounds nuw i8, ptr %0, i64 400 + %42 = select i1 %40, ptr %41, ptr %38 + br label %43 -37: ; preds = %23 - %38 = getelementptr inbounds nuw i8, ptr %26, i64 8 - %39 = load ptr, ptr %38, align 8, !tbaa !16 - store ptr %26, ptr %10, align 8, !tbaa !16 - %40 = getelementptr inbounds nuw i8, ptr %10, i64 8 - store ptr %39, ptr %40, align 8, !tbaa !16 - store ptr %10, ptr %38, align 8, !tbaa !16 - %41 = icmp eq ptr %39, null - %42 = getelementptr inbounds nuw i8, ptr %0, i64 400 - %43 = select i1 %41, ptr %42, ptr %39 - br label %44 +37: ; preds = %36, %33, %31 + %44 = phi ptr [ %32, %31 ], [ %28, %33 ], [ %42, %36 ] + store ptr %10, ptr %44, align 8, !tbaa !16 + %45 = getelementptr inbounds nuw i8, ptr %10, i64 17 + %46 = load i8, ptr %45, align 1, !tbaa !61 + %47 = or i8 %46, -128 + store i8 %47, ptr %45, align 1, !tbaa !61 + %48 = getelementptr inbounds nuw i8, ptr %10, i64 16 + %49 = load i8, ptr %48, align 8, !tbaa !16 + %50 = icmp eq i8 %49, 2 + br i1 %50, label %51, label %44 + +51: ; preds = %43 + %52 = getelementptr inbounds nuw i8, ptr %0, i64 409 + store i8 1, ptr %52, align 1, !tbaa !65 + br label %53 -44: ; preds = %37, %34, %32 - %45 = phi ptr [ %33, %32 ], [ %29, %34 ], [ %43, %37 ] - store ptr %10, ptr %45, align 8, !tbaa !16 - %46 = getelementptr inbounds nuw i8, ptr %10, i64 17 - %47 = load i8, ptr %46, align 1, !tbaa !61 - %48 = or i8 %47, -128 - store i8 %48, ptr %46, align 1, !tbaa !61 - %49 = getelementptr inbounds nuw i8, ptr %10, i64 16 - %50 = load i8, ptr %49, align 8, !tbaa !16 - %51 = icmp eq i8 %50, 2 - br i1 %51, label %52, label %54 - -52: ; preds = %44 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 409 - store i8 1, ptr %53, align 1, !tbaa !65 +44: ; preds = %51, %43 + store ptr %10, ptr %24, align 8, !tbaa !63 br label %54 -54: ; preds = %52, %44 - store ptr %10, ptr %25, align 8, !tbaa !63 - br label %55 - -55: ; preds = %54, %20, %3 - %56 = phi i32 [ 5, %3 ], [ 0, %54 ], [ %21, %20 ] - ret i32 %56 +54: ; preds = %53, %20, %3 + %55 = phi i32 [ 5, %3 ], [ 0, %53 ], [ %21, %20 ] + ret i32 %55 } ; Function Attrs: mustprogress uwtable diff --git a/bench/mitsuba3/optimized/rapass.ll b/bench/mitsuba3/optimized/rapass.ll index 20ba5b7c9b5..706fba41e74 100644 --- a/bench/mitsuba3/optimized/rapass.ll +++ b/bench/mitsuba3/optimized/rapass.ll @@ -1499,8 +1499,8 @@ define hidden noundef i32 @_ZN6asmjit9_abi_1_1010BaseRAPass18buildCFGDominatorsE br label %32 32: ; preds = %100, %30 - %33 = phi i64 [ %31, %30 ], [ %35, %100 ] - %34 = phi i8 [ 0, %30 ], [ %101, %100 ] + %33 = phi i64 [ %31, %30 ], [ %35, %99 ] + %34 = phi i8 [ 0, %30 ], [ %101, %99 ] %35 = add nsw i64 %33, -1 %36 = load ptr, ptr %21, align 8, !tbaa !9 %37 = getelementptr inbounds nuw ptr, ptr %36, i64 %35 @@ -1591,24 +1591,23 @@ define hidden noundef i32 @_ZN6asmjit9_abi_1_1010BaseRAPass18buildCFGDominatorsE br i1 %90, label %100, label %91 91: ; preds = %.loopexit18 - %92 = icmp ne ptr %87, null - tail call void @llvm.assume(i1 %92) - br i1 %9, label %99, label %93 - -93: ; preds = %91 - %94 = getelementptr inbounds nuw i8, ptr %38, i64 8 - %95 = load i32, ptr %94, align 8, !tbaa !144 - %96 = getelementptr inbounds nuw i8, ptr %87, i64 8 - %97 = load i32, ptr %96, align 8, !tbaa !144 - %98 = tail call noundef i32 (ptr, ptr, ...) @_ZN6asmjit9_abi_1_106Logger4logfEPKcz(ptr noundef nonnull align 8 dereferenceable(20) %7, ptr noundef nonnull @.str.6, i32 noundef %95, i32 noundef %97) #17 - br label %99 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %87) ] + br i1 %9, label %98, label %92 + +92: ; preds = %91 + %93 = getelementptr inbounds nuw i8, ptr %38, i64 8 + %94 = load i32, ptr %93, align 8, !tbaa !144 + %95 = getelementptr inbounds nuw i8, ptr %87, i64 8 + %96 = load i32, ptr %95, align 8, !tbaa !144 + %97 = tail call noundef i32 (ptr, ptr, ...) @_ZN6asmjit9_abi_1_106Logger4logfEPKcz(ptr noundef nonnull align 8 dereferenceable(20) %7, ptr noundef nonnull @.str.6, i32 noundef %94, i32 noundef %96) #17 + br label %98 -99: ; preds = %93, %91 +99: ; preds = %92, %91 store ptr %87, ptr %88, align 8, !tbaa !168 br label %100 100: ; preds = %99, %.loopexit18, %32 - %101 = phi i8 [ %34, %32 ], [ 1, %99 ], [ %34, %.loopexit18 ] + %101 = phi i8 [ %34, %32 ], [ 1, %98 ], [ %34, %.loopexit18 ] %102 = icmp eq i64 %35, 0 br i1 %102, label %23, label %32 diff --git a/bench/opencv/optimized/node.ll b/bench/opencv/optimized/node.ll index 785e72dd0c1..1733d189587 100644 --- a/bench/opencv/optimized/node.ll +++ b/bench/opencv/optimized/node.ll @@ -908,8 +908,6 @@ _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i: ; preds = %30, %2 br label %_ZNK3ade6HandleINS_4EdgeEEptEv.exit _ZNK3ade6HandleINS_4EdgeEEptEv.exit: ; preds = %18, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i, %33 - %34 = icmp ne ptr %14, null - tail call void @llvm.assume(i1 %34) tail call void @_ZNK3ade4Edge7srcNodeEv(ptr dead_on_unwind writable sret(%"class.ade::Handle.55") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %14) ret void } @@ -980,8 +978,6 @@ _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i: ; preds = %30, %2 br label %_ZNK3ade6HandleINS_4EdgeEEptEv.exit _ZNK3ade6HandleINS_4EdgeEEptEv.exit: ; preds = %18, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i, %33 - %34 = icmp ne ptr %14, null - tail call void @llvm.assume(i1 %34) tail call void @_ZNK3ade4Edge7dstNodeEv(ptr dead_on_unwind writable sret(%"class.ade::Handle.55") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %14) ret void } diff --git a/bench/opencv/optimized/ransac_solvers.ll b/bench/opencv/optimized/ransac_solvers.ll index 114c1abbf31..855b7a5c61e 100644 --- a/bench/opencv/optimized/ransac_solvers.ll +++ b/bench/opencv/optimized/ransac_solvers.ll @@ -11039,8 +11039,7 @@ _ZNSt6vectorIN2cv3MatESaIS1_EED2Ev.exit427: ; preds = %.thread1322, %_ZSt8 call void @llvm.experimental.noalias.scope.decl(metadata !450) %730 = load ptr, ptr %729, align 8, !tbaa !426, !noalias !453, !nonnull !102, !noundef !102 %731 = call ptr @__dynamic_cast(ptr nonnull %730, ptr nonnull @_ZTIN2cv4usac7SamplerE, ptr nonnull @_ZTIN2cv4usac13ProsacSamplerE, i64 0) #28, !noalias !453 - %.not.not.i.i = icmp ne ptr %731, null - call void @llvm.assume(i1 %.not.not.i.i) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %731) ] %732 = getelementptr inbounds nuw i8, ptr %0, i64 72 %733 = load ptr, ptr %732, align 8, !tbaa !43, !noalias !453 %.not.i.i.i.i.i428 = icmp eq ptr %733, null @@ -12656,8 +12655,7 @@ _ZNSt13_Bvector_baseISaIbEED2Ev.exit600: ; preds = %_ZNSt6vectorIfSaIfE call void @llvm.experimental.noalias.scope.decl(metadata !495) %1297 = load ptr, ptr %1296, align 8, !tbaa !428, !noalias !498, !nonnull !102, !noundef !102 %1298 = call ptr @__dynamic_cast(ptr nonnull %1297, ptr nonnull @_ZTIN2cv4usac10DegeneracyE, ptr nonnull @_ZTIN2cv4usac21FundamentalDegeneracyE, i64 0) #28, !noalias !498 - %.not.not.i.i601 = icmp ne ptr %1298, null - call void @llvm.assume(i1 %.not.not.i.i601) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1298) ] %1299 = getelementptr inbounds nuw i8, ptr %0, i64 120 %1300 = load ptr, ptr %1299, align 8, !tbaa !43, !noalias !498 %.not.i.i.i.i.i602 = icmp eq ptr %1300, null @@ -22933,8 +22931,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit880: ; preds = %33 call void @llvm.experimental.noalias.scope.decl(metadata !642) %3374 = load ptr, ptr %3373, align 8, !tbaa !645, !noalias !646, !nonnull !102, !noundef !102 %3375 = call ptr @__dynamic_cast(ptr nonnull %3374, ptr nonnull @_ZTIN2cv4usac11TerminationE, ptr nonnull @_ZTIN2cv4usac25ProsacTerminationCriteriaE, i64 0) #28, !noalias !646 - %.not.not.i.i = icmp ne ptr %3375, null - call void @llvm.assume(i1 %.not.not.i.i) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %3375) ] %3376 = getelementptr inbounds nuw i8, ptr %0, i64 88 %3377 = load ptr, ptr %3376, align 8, !tbaa !43, !noalias !646 %.not.i.i.i.i.i881 = icmp eq ptr %3377, null @@ -32845,8 +32842,7 @@ _ZNSt6vectorIS_IiSaIiEESaIS1_EE12emplace_backIJRS1_EEEvDpOT_.exit: ; preds = %11 call void @llvm.experimental.noalias.scope.decl(metadata !841) %161 = load ptr, ptr %160, align 8, !tbaa !645, !noalias !844, !nonnull !102, !noundef !102 %162 = call ptr @__dynamic_cast(ptr nonnull %161, ptr nonnull @_ZTIN2cv4usac11TerminationE, ptr nonnull @_ZTIN2cv4usac25ProsacTerminationCriteriaE, i64 0) #28, !noalias !844 - %.not.not.i.i = icmp ne ptr %162, null - call void @llvm.assume(i1 %.not.not.i.i) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %162) ] %163 = getelementptr inbounds nuw i8, ptr %160, i64 8 %164 = load ptr, ptr %163, align 8, !tbaa !43, !noalias !844 %.not.i.i.i.i.i = icmp eq ptr %164, null diff --git a/bench/openssl/optimized/ml_kem_codecs.ll b/bench/openssl/optimized/ml_kem_codecs.ll index 7d805530b52..1e9f090a3d5 100644 --- a/bench/openssl/optimized/ml_kem_codecs.ll +++ b/bench/openssl/optimized/ml_kem_codecs.ll @@ -465,7 +465,7 @@ declare void @CRYPTO_free(ptr noundef, ptr noundef, i32 noundef) local_unnamed_a declare void @PKCS8_PRIV_KEY_INFO_free(ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable -define noundef i32 @ossl_ml_kem_i2d_pubkey(ptr noundef %0, ptr noundef captures(address_is_null) %1) local_unnamed_addr #0 { +define noundef i32 @ossl_ml_kem_i2d_pubkey(ptr noundef %0, ptr noundef captures(none) %1) local_unnamed_addr #0 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 64 %4 = load ptr, ptr %3, align 8, !tbaa !48 %.not = icmp eq ptr %4, null @@ -483,8 +483,7 @@ define noundef i32 @ossl_ml_kem_i2d_pubkey(ptr noundef %0, ptr noundef captures( %9 = load ptr, ptr %0, align 8, !tbaa !49 %10 = getelementptr inbounds nuw i8, ptr %9, i64 24 %11 = load i64, ptr %10, align 8, !tbaa !3 - %.not13 = icmp ne ptr %1, null - tail call void @llvm.assume(i1 %.not13) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %12 = tail call noalias ptr @CRYPTO_malloc(i64 noundef %11, ptr noundef nonnull @.str, i32 noundef 293) #7 store ptr %12, ptr %1, align 8, !tbaa !14 %13 = icmp eq ptr %12, null diff --git a/bench/openssl/optimized/quic_impl.ll b/bench/openssl/optimized/quic_impl.ll index c4ed02d04d4..819cb33d471 100644 --- a/bench/openssl/optimized/quic_impl.ll +++ b/bench/openssl/optimized/quic_impl.ll @@ -7487,7 +7487,7 @@ ql_listen.exit: ; preds = %qctx_lock_for_io.ex %50 = call ptr @ossl_quic_engine_get0_reactor(ptr noundef %.val32.val) #12 %51 = call i32 @ossl_quic_reactor_block_until_pred(ptr noundef %50, ptr noundef nonnull @quic_accept_connection_wait, ptr noundef %48, i32 noundef 0) #12 %52 = icmp slt i32 %51, 1 - br i1 %52, label %110, label %qctx_maybe_autotick.exit + br i1 %52, label %109, label %qctx_maybe_autotick.exit 53: ; preds = %43, %42 %.val31 = load ptr, ptr %3, align 8, !tbaa !157 @@ -7523,7 +7523,7 @@ qctx_maybe_autotick.exit: ; preds = %54, %qctx_should_au %67 = load ptr, ptr %66, align 8, !tbaa !139 %68 = call i32 @ossl_quic_port_is_running(ptr noundef %67) #12 %.not28 = icmp eq i32 %68, 0 - br i1 %.not28, label %110, label %69 + br i1 %.not28, label %109, label %69 69: ; preds = %qctx_maybe_autotick.exit %70 = load ptr, ptr %22, align 8, !tbaa !163 @@ -7552,47 +7552,46 @@ qctx_maybe_autotick.exit: ; preds = %54, %qctx_should_au %87 = load ptr, ptr %86, align 8, !tbaa !139 %88 = call ptr @ossl_quic_port_pop_incoming(ptr noundef %87) #12 %89 = icmp eq ptr %88, null - br i1 %89, label %110, label %.thread35 + br i1 %89, label %109, label %.thread35 .thread35: ; preds = %ql_listen.exit, %79, %.thread, %69 %.1 = phi ptr [ %88, %79 ], [ null, %.thread ], [ %73, %69 ], [ %35, %ql_listen.exit ] %90 = call ptr @ossl_quic_channel_get0_tls(ptr noundef %.1) #12 - %91 = icmp ne ptr %90, null - call void @llvm.assume(i1 %91) - %92 = load i32, ptr %90, align 8, !tbaa !31 - %93 = icmp eq i32 %92, 0 - br i1 %93, label %98, label %94 - -94: ; preds = %.thread35 - %95 = and i32 %92, 128 - %96 = icmp ne i32 %95, 0 - call void @llvm.assume(i1 %96) - %97 = call ptr @ossl_quic_obj_get0_handshake_layer(ptr noundef nonnull %90) #12 - br label %98 - -98: ; preds = %.thread35, %94 - %99 = phi ptr [ %97, %94 ], [ %90, %.thread35 ] - %100 = getelementptr inbounds nuw i8, ptr %99, i64 64 - %101 = load ptr, ptr %100, align 8, !tbaa !235 - %102 = load ptr, ptr %22, align 8, !tbaa !163 - %103 = getelementptr inbounds nuw i8, ptr %101, i64 128 - store ptr %102, ptr %103, align 8, !tbaa !135 - %104 = getelementptr inbounds nuw i8, ptr %101, i64 336 - %105 = load i16, ptr %104, align 8 - %106 = and i16 %105, -513 - store i16 %106, ptr %104, align 8 - %107 = call i32 @SSL_up_ref(ptr noundef %102) #12 - %.not30 = icmp eq i32 %107, 0 - br i1 %.not30, label %108, label %110 - -108: ; preds = %98 - call void @SSL_free(ptr noundef nonnull %101) #12 - %109 = call ptr @ossl_quic_channel_get0_tls(ptr noundef %.1) #12 - call void @SSL_free(ptr noundef %109) #12 - br label %110 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %90) ] + %91 = load i32, ptr %90, align 8, !tbaa !31 + %92 = icmp eq i32 %91, 0 + br i1 %92, label %110, label %93 + +93: ; preds = %.thread35 + %94 = and i32 %91, 128 + %95 = icmp ne i32 %94, 0 + call void @llvm.assume(i1 %95) + %96 = call ptr @ossl_quic_obj_get0_handshake_layer(ptr noundef nonnull %90) #12 + br label %97 -110: ; preds = %98, %108, %79, %qctx_maybe_autotick.exit, %45 - %.019 = phi ptr [ null, %79 ], [ %101, %98 ], [ null, %108 ], [ null, %qctx_maybe_autotick.exit ], [ null, %45 ] +110: ; preds = %.thread35, %93 + %.019 = phi ptr [ %96, %93 ], [ %90, %.thread35 ] + %99 = getelementptr inbounds nuw i8, ptr %98, i64 64 + %100 = load ptr, ptr %99, align 8, !tbaa !235 + %101 = load ptr, ptr %22, align 8, !tbaa !163 + %102 = getelementptr inbounds nuw i8, ptr %100, i64 128 + store ptr %101, ptr %102, align 8, !tbaa !135 + %103 = getelementptr inbounds nuw i8, ptr %100, i64 336 + %104 = load i16, ptr %103, align 8 + %105 = and i16 %104, -513 + store i16 %105, ptr %103, align 8 + %106 = call i32 @SSL_up_ref(ptr noundef %101) #12 + %.not30 = icmp eq i32 %106, 0 + br i1 %.not30, label %107, label %109 + +107: ; preds = %97 + call void @SSL_free(ptr noundef nonnull %100) #12 + %108 = call ptr @ossl_quic_channel_get0_tls(ptr noundef %.1) #12 + call void @SSL_free(ptr noundef %108) #12 + br label %109 + +109: ; preds = %97, %107, %79, %qctx_maybe_autotick.exit, %45 + %.019 = phi ptr [ null, %79 ], [ %100, %97 ], [ null, %107 ], [ null, %qctx_maybe_autotick.exit ], [ null, %45 ] %.val33 = load ptr, ptr %3, align 8, !tbaa !157 %111 = getelementptr i8, ptr %.val33, i64 88 %.val33.val = load ptr, ptr %111, align 8, !tbaa !143 @@ -7600,8 +7599,8 @@ qctx_maybe_autotick.exit: ; preds = %54, %qctx_should_au call void @ossl_crypto_mutex_unlock(ptr noundef %112) #12 br label %113 -113: ; preds = %2, %110 - %.0 = phi ptr [ %.019, %110 ], [ null, %2 ] +113: ; preds = %2, %109 + %.0 = phi ptr [ %.019, %109 ], [ null, %2 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) ret ptr %.0 } diff --git a/bench/openssl/optimized/quic_tls_api.ll b/bench/openssl/optimized/quic_tls_api.ll index 297f24aa657..bd3f23b60a8 100644 --- a/bench/openssl/optimized/quic_tls_api.ll +++ b/bench/openssl/optimized/quic_tls_api.ll @@ -449,21 +449,20 @@ declare i32 @ossl_quic_tls_configure(ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable define i32 @SSL_set_quic_tls_transport_params(ptr noundef %0, ptr noundef %1, i64 noundef %2) local_unnamed_addr #0 { - %4 = icmp ne ptr %0, null - tail call void @llvm.assume(i1 %4) - %5 = load i32, ptr %0, align 8, !tbaa !3 - %6 = icmp eq i32 %5, 0 - br i1 %6, label %10, label %7 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] + %4 = load i32, ptr %0, align 8, !tbaa !3 + %5 = icmp eq i32 %4, 0 + br i1 %5, label %10, label %6 7: ; preds = %3 - %8 = and i32 %5, 128 + %8 = and i32 %4, 128 %.not = icmp ne i32 %8, 0 tail call void @llvm.assume(i1 %.not) %9 = tail call ptr @ossl_quic_obj_get0_handshake_layer(ptr noundef nonnull %0) #5 br label %10 10: ; preds = %3, %7 - %11 = phi ptr [ %0, %3 ], [ %9, %7 ] + %11 = phi ptr [ %0, %3 ], [ %9, %6 ] %12 = getelementptr inbounds nuw i8, ptr %11, i64 344 %13 = load ptr, ptr %12, align 8, !tbaa !81 %14 = icmp eq ptr %13, null @@ -480,7 +479,7 @@ define i32 @SSL_set_quic_tls_transport_params(ptr noundef %0, ptr noundef %1, i6 br label %18 18: ; preds = %16, %15 - %.0 = phi i32 [ 0, %15 ], [ %17, %16 ] + %.0 = phi i32 [ 0, %14 ], [ %17, %15 ] ret i32 %.0 } diff --git a/bench/openusd/optimized/testHdDataSource.ll b/bench/openusd/optimized/testHdDataSource.ll index 1c0caee952e..66fcaa6c043 100644 --- a/bench/openusd/optimized/testHdDataSource.ll +++ b/bench/openusd/optimized/testHdDataSource.ll @@ -14408,8 +14408,7 @@ define dso_local noundef zeroext i1 @_Z33TestRetainedSmallVectorDataSourcev() lo call void @llvm.experimental.noalias.scope.decl(metadata !42) %74 = load ptr, ptr %9, align 8, !noalias !45, !nonnull !46, !noundef !46 %75 = call ptr @__dynamic_cast(ptr nonnull %74, ptr nonnull @_ZTIN32pxrInternal_v0_24__pxrReserved__16HdDataSourceBaseE, ptr nonnull @_ZTIN32pxrInternal_v0_24__pxrReserved__32HdRetainedTypedSampledDataSourceIiEE, i64 0) #22, !noalias !45 - %.not.i.i = icmp ne ptr %75, null - call void @llvm.assume(i1 %.not.i.i) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %75) ] store ptr %75, ptr %12, align 8, !alias.scope !45 %76 = getelementptr inbounds nuw i8, ptr %12, i64 8 %77 = getelementptr inbounds nuw i8, ptr %9, i64 8 @@ -14452,8 +14451,7 @@ _ZN32pxrInternal_v0_24__pxrReserved__32HdRetainedTypedSampledDataSourceIiE4CastE call void @llvm.experimental.noalias.scope.decl(metadata !50) %94 = load ptr, ptr %10, align 8, !noalias !53, !nonnull !46, !noundef !46 %95 = call ptr @__dynamic_cast(ptr nonnull %94, ptr nonnull @_ZTIN32pxrInternal_v0_24__pxrReserved__16HdDataSourceBaseE, ptr nonnull @_ZTIN32pxrInternal_v0_24__pxrReserved__32HdRetainedTypedSampledDataSourceIiEE, i64 0) #22, !noalias !53 - %.not.i.i43 = icmp ne ptr %95, null - call void @llvm.assume(i1 %.not.i.i43) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %95) ] store ptr %95, ptr %13, align 8, !alias.scope !53 %96 = getelementptr inbounds nuw i8, ptr %13, i64 8 %97 = getelementptr inbounds nuw i8, ptr %10, i64 8 @@ -14496,8 +14494,7 @@ _ZN32pxrInternal_v0_24__pxrReserved__32HdRetainedTypedSampledDataSourceIiE4CastE call void @llvm.experimental.noalias.scope.decl(metadata !57) %114 = load ptr, ptr %11, align 8, !noalias !60, !nonnull !46, !noundef !46 %115 = call ptr @__dynamic_cast(ptr nonnull %114, ptr nonnull @_ZTIN32pxrInternal_v0_24__pxrReserved__16HdDataSourceBaseE, ptr nonnull @_ZTIN32pxrInternal_v0_24__pxrReserved__32HdRetainedTypedSampledDataSourceIiEE, i64 0) #22, !noalias !60 - %.not.i.i48 = icmp ne ptr %115, null - call void @llvm.assume(i1 %.not.i.i48) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %115) ] store ptr %115, ptr %14, align 8, !alias.scope !60 %116 = getelementptr inbounds nuw i8, ptr %14, i64 8 %117 = getelementptr inbounds nuw i8, ptr %11, i64 8 diff --git a/bench/pingora-rs/optimized/9ivpbe6von87vkj0l3ykagsem.ll b/bench/pingora-rs/optimized/9ivpbe6von87vkj0l3ykagsem.ll index 865c308d8a3..9418d0f8803 100644 --- a/bench/pingora-rs/optimized/9ivpbe6von87vkj0l3ykagsem.ll +++ b/bench/pingora-rs/optimized/9ivpbe6von87vkj0l3ykagsem.ll @@ -133,6 +133,7 @@ define hidden { i64, ptr } @_ZN5tokio2io11async_write10AsyncWrite19poll_write_ve 9: ; preds = %6 %10 = getelementptr inbounds nuw i8, ptr %7, i64 16 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %7) ] %11 = getelementptr i8, ptr %7, i64 8 %12 = load i64, ptr %11, align 8, !noalias !9, !noundef !8 %.not.i = icmp eq i64 %12, 0 @@ -145,10 +146,9 @@ define hidden { i64, ptr } @_ZN5tokio2io11async_write10AsyncWrite19poll_write_ve "_ZN4core6option15Option$LT$T$GT$6map_or17h1a055a8159305d80E.exit": ; preds = %6, %13 %.sroa.3.0.i = phi i64 [ %12, %13 ], [ 0, %6 ] %.sroa.02.0.i = phi ptr [ %.val.i, %13 ], [ inttoptr (i64 1 to ptr), %6 ] - %14 = icmp ne ptr %.sroa.02.0.i, null - tail call void @llvm.assume(i1 %14) - %15 = tail call { i64, ptr } @"_ZN89_$LT$pingora_proxy..subrequest..DummyIO$u20$as$u20$tokio..io..async_write..AsyncWrite$GT$10poll_write17hf05cd47417d7183cE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noalias noundef nonnull align 8 dereferenceable(32) %1, ptr noalias noundef nonnull readonly align 1 %.sroa.02.0.i, i64 noundef %.sroa.3.0.i) - ret { i64, ptr } %15 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.02.0.i) ] + %14 = tail call { i64, ptr } @"_ZN89_$LT$pingora_proxy..subrequest..DummyIO$u20$as$u20$tokio..io..async_write..AsyncWrite$GT$10poll_write17hf05cd47417d7183cE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, ptr noalias noundef nonnull align 8 dereferenceable(32) %1, ptr noalias noundef nonnull readonly align 1 %.sroa.02.0.i, i64 noundef %.sroa.3.0.i) + ret { i64, ptr } %14 } ; Function Attrs: nonlazybind uwtable @@ -177,6 +177,7 @@ define hidden noundef nonnull ptr @"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$4gr br i1 %13, label %.loopexit, label %.preheader .preheader: ; preds = %"_ZN5tokio4sync4mpsc5block14Block$LT$T$GT$3new17h5b8de3a0a9a5239bE.exit" + call void @llvm.assume(i1 true) [ "nonnull"(ptr %5) ] %14 = getelementptr inbounds nuw i8, ptr %12, i64 6656 %15 = load i64, ptr %14, align 8, !noundef !8 %16 = add i64 %15, 32 diff --git a/bench/pola-rs/optimized/0vv5nrmroubc6gns0tdninfa0.ll b/bench/pola-rs/optimized/0vv5nrmroubc6gns0tdninfa0.ll index 5f4b93fd241..673f8199cb7 100644 --- a/bench/pola-rs/optimized/0vv5nrmroubc6gns0tdninfa0.ll +++ b/bench/pola-rs/optimized/0vv5nrmroubc6gns0tdninfa0.ll @@ -21,6 +21,7 @@ define internal void @"_ZN3std4sync6poison4once4Once15call_once_force28_$u7b$$u7 br i1 %.not, label %12, label %4, !prof !5 4: ; preds = %2 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.0.copyload) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !6) tail call void @llvm.experimental.noalias.scope.decl(metadata !9) %5 = load ptr, ptr %.sroa.0.0.copyload, align 8, !alias.scope !12, !noundef !3 @@ -35,10 +36,8 @@ define internal void @"_ZN3std4sync6poison4once4Once15call_once_force28_$u7b$$u7 unreachable "_ZN3std4sync9once_lock17OnceLock$LT$T$GT$10initialize28_$u7b$$u7b$closure$u7d$$u7d$17hc48fc75216420739E.exit": ; preds = %4 - %9 = icmp ne ptr %7, null - tail call void @llvm.assume(i1 %9) - %10 = icmp ne ptr %.sroa.5.sroa.0.0.copyload, null - tail call void @llvm.assume(i1 %10) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %7) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.5.sroa.0.0.copyload) ] store ptr %5, ptr %.sroa.5.sroa.0.0.copyload, align 8 %11 = getelementptr inbounds nuw i8, ptr %.sroa.5.sroa.0.0.copyload, i64 8 store ptr %7, ptr %11, align 8 @@ -89,6 +88,7 @@ define internal void @"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.s br i1 %.not.i.i, label %9, label %4, !prof !5 4: ; preds = %2 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.0.copyload.i.i) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !23) tail call void @llvm.experimental.noalias.scope.decl(metadata !26) %5 = load ptr, ptr %.sroa.0.0.copyload.i.i, align 8, !alias.scope !29, !noalias !30, !noundef !3 @@ -107,10 +107,8 @@ define internal void @"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.s unreachable _ZN4core3ops8function6FnOnce9call_once17h056f857c880df310E.exit: ; preds = %4 - %10 = icmp ne ptr %7, null - tail call void @llvm.assume(i1 %10) - %11 = icmp ne ptr %.sroa.5.sroa.0.0.copyload.i.i, null - tail call void @llvm.assume(i1 %11) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %7) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.5.sroa.0.0.copyload.i.i) ] store ptr %5, ptr %.sroa.5.sroa.0.0.copyload.i.i, align 8, !noalias !30 %12 = getelementptr inbounds nuw i8, ptr %.sroa.5.sroa.0.0.copyload.i.i, i64 8 store ptr %7, ptr %12, align 8, !noalias !30 diff --git a/bench/pola-rs/optimized/5529vdmdygdg4sx1xlpwmczeg.ll b/bench/pola-rs/optimized/5529vdmdygdg4sx1xlpwmczeg.ll index 773a0064233..5c4ef8a6b9b 100644 --- a/bench/pola-rs/optimized/5529vdmdygdg4sx1xlpwmczeg.ll +++ b/bench/pola-rs/optimized/5529vdmdygdg4sx1xlpwmczeg.ll @@ -21,6 +21,7 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: nonlazybind uwtable define hidden noundef ptr @"_ZN3std6thread5local17LocalKey$LT$T$GT$4with17h334be6ccbd10af4cE"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %0) unnamed_addr #0 personality ptr @rust_eh_personality { %.val = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %2 = tail call noundef ptr %.val(ptr noalias noundef align 8 dereferenceable_or_null(16) null) %3 = icmp eq ptr %2, null br i1 %3, label %4, label %5 @@ -40,6 +41,7 @@ define hidden void @"_ZN3std6thread5local17LocalKey$LT$T$GT$4with17h77173e52ce54 %4 = alloca [136 x i8], align 8 %.val = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 tail call void @llvm.experimental.noalias.scope.decl(metadata !4) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %5 = tail call noundef ptr %.val(ptr noalias noundef align 4 dereferenceable_or_null(16) null), !noalias !4 %6 = icmp eq ptr %5, null br i1 %6, label %16, label %7 @@ -95,6 +97,7 @@ define hidden void @"_ZN3std6thread5local17LocalKey$LT$T$GT$4with17hb1e965b06dc0 %4 = alloca [64 x i8], align 8 %.val = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 tail call void @llvm.experimental.noalias.scope.decl(metadata !10) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %5 = tail call noundef ptr %.val(ptr noalias noundef align 4 dereferenceable_or_null(16) null), !noalias !10 %6 = icmp eq ptr %5, null br i1 %6, label %16, label %7 @@ -149,6 +152,7 @@ define hidden void @"_ZN3std6thread5local17LocalKey$LT$T$GT$4with17heaed4184b911 %5 = alloca [24 x i8], align 8 %6 = alloca [16 x i8], align 8 %.val = load ptr, ptr %1, align 8, !nonnull !3, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %7 = tail call noundef ptr %.val(ptr noalias noundef align 8 dereferenceable_or_null(128) null), !noalias !16 %8 = icmp eq ptr %7, null br i1 %8, label %39, label %9 @@ -442,6 +446,8 @@ define hidden void @"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec. %.val.i.i = load ptr, ptr %9, align 8, !alias.scope !56, !noalias !57, !nonnull !3, !noundef !3 %10 = getelementptr inbounds nuw i8, ptr %1, i64 24 %.val3.i.i = load ptr, ptr %10, align 8, !alias.scope !56, !noalias !57, !nonnull !3, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3.i.i) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i.i) ] %11 = ptrtoint ptr %.val3.i.i to i64 %12 = ptrtoint ptr %.val.i.i to i64 %13 = sub nuw i64 %11, %12 @@ -486,6 +492,8 @@ define hidden void @"_ZN5alloc3vec16in_place_collect108_$LT$impl$u20$alloc..vec. %.val.i.i.i.i = load ptr, ptr %27, align 8, !alias.scope !73, !noalias !74, !nonnull !3, !noundef !3 %28 = getelementptr inbounds nuw i8, ptr %7, i64 24 %.val3.i.i.i.i = load ptr, ptr %28, align 8, !alias.scope !73, !noalias !74, !nonnull !3, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3.i.i.i.i) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i.i.i.i) ] %29 = ptrtoint ptr %.val3.i.i.i.i to i64 %30 = ptrtoint ptr %.val.i.i.i.i to i64 %31 = sub nuw i64 %29, %30 @@ -630,6 +638,7 @@ define hidden void @"_ZN61_$LT$$u5b$V$u5d$$u20$as$u20$alloc..slice..Concat$LT$T$ %.val = load ptr, ptr %.sroa.0.010, align 8, !nonnull !3, !align !86, !noundef !3 %28 = getelementptr i8, ptr %.sroa.0.010, i64 8 %.val6 = load i64, ptr %28, align 8, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %29 = load i64, ptr %5, align 8, !range !34, !alias.scope !87, !noundef !3 %30 = sub i64 %29, %26 %31 = icmp ugt i64 %.val6, %30 @@ -963,6 +972,7 @@ define hidden noundef align 8 dereferenceable_or_null(72) ptr @"_ZN7slotmap5basi %13 = load ptr, ptr %12, align 8, !nonnull !3 %14 = getelementptr inbounds nuw { { [9 x i64] }, i32, [1 x i32] }, ptr %13, i64 %10 %15 = extractvalue { i32, i32 } %6, 0 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %14) ] %16 = getelementptr inbounds nuw i8, ptr %14, i64 72 %17 = load i32, ptr %16, align 8, !alias.scope !115, !noundef !3 %18 = icmp eq i32 %17, %15 @@ -996,6 +1006,7 @@ define hidden noundef nonnull align 8 dereferenceable(72) ptr @"_ZN89_$LT$slotma 13: ; preds = %4 %14 = getelementptr inbounds nuw { { [9 x i64] }, i32, [1 x i32] }, ptr %.val, i64 %11 %15 = extractvalue { i32, i32 } %9, 0 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %14) ] %16 = getelementptr inbounds nuw i8, ptr %14, i64 72 %17 = load i32, ptr %16, align 8, !alias.scope !118, !noundef !3 %18 = icmp eq i32 %17, %15 @@ -1032,6 +1043,7 @@ define hidden noundef nonnull align 8 dereferenceable(72) ptr @"_ZN92_$LT$slotma %14 = load ptr, ptr %13, align 8, !alias.scope !121, !nonnull !3 %15 = getelementptr inbounds nuw { { [9 x i64] }, i32, [1 x i32] }, ptr %14, i64 %11 %16 = extractvalue { i32, i32 } %7, 0 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %15) ] %17 = getelementptr inbounds nuw i8, ptr %15, i64 72 %18 = load i32, ptr %17, align 8, !alias.scope !124, !noalias !121, !noundef !3 %19 = icmp eq i32 %18, %16 diff --git a/bench/pola-rs/optimized/5ery43j47n3swq9jsoogxo0r0.ll b/bench/pola-rs/optimized/5ery43j47n3swq9jsoogxo0r0.ll index 8df5d8d26bb..3c371bf7f2f 100644 --- a/bench/pola-rs/optimized/5ery43j47n3swq9jsoogxo0r0.ll +++ b/bench/pola-rs/optimized/5ery43j47n3swq9jsoogxo0r0.ll @@ -81,30 +81,29 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(argmem: read, inaccessiblemem: write) uwtable define hidden noundef i32 @"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h35768d8aae598695E"(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %2) unnamed_addr #0 personality ptr @rust_eh_personality { - %4 = icmp ne ptr %1, null - tail call void @llvm.assume(i1 %4) - %5 = icmp eq ptr %0, %1 - br i1 %5, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h68279598991a4ca2E.exit", label %6 - -6: ; preds = %3 - %7 = ptrtoint ptr %1 to i64 - %8 = ptrtoint ptr %0 to i64 - %9 = sub nuw i64 %7, %8 - %10 = lshr exact i64 %9, 2 - br label %11 - -11: ; preds = %11, %6 - %.sroa.07.0.i = phi i32 [ %2, %6 ], [ %.sroa.0.0.i.sroa.speculated.i.i.i, %11 ] - %.sroa.09.0.i = phi i64 [ 0, %6 ], [ %13, %11 ] - %12 = getelementptr inbounds nuw i32, ptr %0, i64 %.sroa.09.0.i - %.val.i = load i32, ptr %12, align 4, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] + %4 = icmp eq ptr %0, %1 + br i1 %4, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h68279598991a4ca2E.exit", label %5 + +5: ; preds = %3 + %6 = ptrtoint ptr %1 to i64 + %7 = ptrtoint ptr %0 to i64 + %8 = sub nuw i64 %6, %7 + %9 = lshr exact i64 %8, 2 + br label %10 + +10: ; preds = %10, %5 + %.sroa.07.0.i = phi i32 [ %2, %5 ], [ %.sroa.0.0.i.sroa.speculated.i.i.i, %10 ] + %.sroa.07.0.i = phi i64 [ 0, %5 ], [ %12, %10 ] + %11 = getelementptr inbounds nuw i32, ptr %0, i64 %.sroa.09.0.i + %.val.i = load i32, ptr %11, align 4, !noundef !3 %.sroa.0.0.i.sroa.speculated.i.i.i = tail call noundef i32 @llvm.umax.i32(i32 %.sroa.07.0.i, i32 %.val.i) %13 = add nuw i64 %.sroa.09.0.i, 1 - %14 = icmp eq i64 %13, %10 - br i1 %14, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h68279598991a4ca2E.exit", label %11 + %14 = icmp eq i64 %13, %9 + br i1 %14, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h68279598991a4ca2E.exit", label %10 -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h68279598991a4ca2E.exit": ; preds = %11, %3 - %.sroa.04.0.i = phi i32 [ %2, %3 ], [ %.sroa.0.0.i.sroa.speculated.i.i.i, %11 ] +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h68279598991a4ca2E.exit": ; preds = %10, %3 + %.sroa.04.0.i = phi i32 [ %2, %3 ], [ %.sroa.0.0.i.sroa.speculated.i.i.i, %10 ] ret i32 %.sroa.04.0.i } @@ -149,6 +148,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %.val = load ptr, ptr %3, align 8, !nonnull !3, !align !8, !noundef !3 %4 = getelementptr i8, ptr %3, i64 8 %.val1 = load i64, ptr %4, align 8, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %5 = tail call noundef zeroext i1 @"_ZN40_$LT$str$u20$as$u20$core..fmt..Debug$GT$3fmt17hcf6a5cb102847ddcE"(ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1, ptr noalias noundef nonnull align 8 dereferenceable(24) %1) ret i1 %5 } @@ -343,11 +343,13 @@ define internal void @"_ZN4core3ptr71drop_in_place$LT$alloc..boxed..Box$LT$polar br label %31 "_ZN4core3ptr46drop_in_place$LT$polars_error..PolarsError$GT$17h9d30786684d9210fE.exit": ; preds = %.invoke, %5, %"_ZN4core3ptr66drop_in_place$LT$alloc..sync..Arc$LT$std..io..error..Error$GT$$GT$17haa627bd948fa0910E.exit" + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] tail call void @_RNvCsjH7bwORMyv9_7___rustc14___rust_dealloc(ptr noundef nonnull %2, i64 noundef 64, i64 noundef 8) #15 ret void 31: ; preds = %29, %12, %17, %24 %eh.lpad-body = phi { ptr, i32 } [ %30, %29 ], [ %25, %24 ], [ %13, %17 ], [ %13, %12 ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] tail call void @_RNvCsjH7bwORMyv9_7___rustc14___rust_dealloc(ptr noundef nonnull %2, i64 noundef 64, i64 noundef 8) #15 resume { ptr, i32 } %eh.lpad-body } @@ -421,12 +423,14 @@ define internal void @"_ZN4core3ptr85drop_in_place$LT$alloc..boxed..Box$LT$polar to label %"_ZN4core3ptr60drop_in_place$LT$polars_core..datatypes..dtype..DataType$GT$17h14f360565a6e873aE.exit" unwind label %29 "_ZN4core3ptr60drop_in_place$LT$polars_core..datatypes..dtype..DataType$GT$17h14f360565a6e873aE.exit": ; preds = %.invoke12, %.invoke, %1, %4, %8, %16, %12, %23, %19, %27 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] tail call void @_RNvCsjH7bwORMyv9_7___rustc14___rust_dealloc(ptr noundef nonnull %2, i64 noundef 48, i64 noundef 16) #15 ret void 29: ; preds = %.invoke12, %.invoke, %27, %8 %30 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] tail call void @_RNvCsjH7bwORMyv9_7___rustc14___rust_dealloc(ptr noundef nonnull %2, i64 noundef 48, i64 noundef 16) #15 resume { ptr, i32 } %30 } diff --git a/bench/proxygen/optimized/Huffman.ll b/bench/proxygen/optimized/Huffman.ll index 77131495044..230ed45680a 100644 --- a/bench/proxygen/optimized/Huffman.ll +++ b/bench/proxygen/optimized/Huffman.ll @@ -644,12 +644,7 @@ if.else: ; preds = %for.body %sub.ptr.rhs.cast.i.i.i.i = ptrtoint ptr %7 to i64 %sub.ptr.sub.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i %cmp.i.i = icmp ugt i64 %sub.ptr.sub.i.i.i.i, 3 - br i1 %cmp.i.i, label %if.then.i.i, label %if.else.i.i - -if.then.i.i: ; preds = %if.else - %cmp.i.i.i = icmp ne ptr %7, null - tail call void @llvm.assume(i1 %cmp.i.i.i) - br label %_ZN5folly2io6detail8WritableINS0_13QueueAppenderEE7writeBEIjEEvT_.exit + br i1 %cmp.i.i, label %_ZN5folly2io6detail8WritableINS0_13QueueAppenderEE7writeBEIjEEvT_.exit, label %if.else.i.i if.else.i.i: ; preds = %if.else %8 = load ptr, ptr %queue_.i.i.i.i, align 8 @@ -698,13 +693,14 @@ if.then.i.i.i.i.i: ; preds = %_ZN5folly10IOBufQue br label %_ZN5folly2io13QueueAppender9writeSlowIjEENSt9enable_ifIXsr3std13is_arithmeticIT_EE5valueEvE4typeES4_m.exit.i.i _ZN5folly2io13QueueAppender9writeSlowIjEENSt9enable_ifIXsr3std13is_arithmeticIT_EE5valueEvE4typeES4_m.exit.i.i: ; preds = %if.then.i.i.i.i.i, %_ZN5folly10IOBufQueue11preallocateEmmm.exit.i.i.i - %18 = load ptr, ptr %buf, align 8, !nonnull !8, !noundef !8 + %18 = load ptr, ptr %buf, align 8 br label %_ZN5folly2io6detail8WritableINS0_13QueueAppenderEE7writeBEIjEEvT_.exit -_ZN5folly2io6detail8WritableINS0_13QueueAppenderEE7writeBEIjEEvT_.exit: ; preds = %if.then.i.i, %_ZN5folly2io13QueueAppender9writeSlowIjEENSt9enable_ifIXsr3std13is_arithmeticIT_EE5valueEvE4typeES4_m.exit.i.i - %.sink.i.i = phi ptr [ %18, %_ZN5folly2io13QueueAppender9writeSlowIjEENSt9enable_ifIXsr3std13is_arithmeticIT_EE5valueEvE4typeES4_m.exit.i.i ], [ %7, %if.then.i.i ] +_ZN5folly2io6detail8WritableINS0_13QueueAppenderEE7writeBEIjEEvT_.exit: ; preds = %if.else, %_ZN5folly2io13QueueAppender9writeSlowIjEENSt9enable_ifIXsr3std13is_arithmeticIT_EE5valueEvE4typeES4_m.exit.i.i + %.sink.i.i = phi ptr [ %18, %_ZN5folly2io13QueueAppender9writeSlowIjEENSt9enable_ifIXsr3std13is_arithmeticIT_EE5valueEvE4typeES4_m.exit.i.i ], [ %7, %if.else ] %19 = tail call noundef i32 @llvm.bswap.i32(i32 %or21) - store i32 %19, ptr %.sink.i.i, align 1 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sink.i.i) ] + store i32 %19, ptr %.sink4.i.i, align 1 %.pn.i.i = load ptr, ptr %buf, align 8 %storemerge.i.i = getelementptr inbounds nuw i8, ptr %.pn.i.i, i64 4 store ptr %storemerge.i.i, ptr %buf, align 8 @@ -720,7 +716,7 @@ for.inc: ; preds = %if.then, %_ZN5folly %wbits.1 = phi i8 [ %conv11, %if.then ], [ %conv15, %_ZN5folly2io6detail8WritableINS0_13QueueAppenderEE7writeBEIjEEvT_.exit ] %inc = add nuw i64 %i.038, 1 %exitcond.not = icmp eq i64 %inc, %sub.ptr.sub.i - br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !9 + br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !8 for.end: ; preds = %for.inc %20 = and i8 %wbits.1, 7 @@ -770,7 +766,7 @@ if.then.i.i32: ; preds = %if.then46 br label %if.end.i.i if.end.i.i: ; preds = %if.then.i.i32, %if.then46 - %buf.addr.0.i.i = phi ptr [ %add.ptr.i.i, %if.then.i.i32 ], [ %w, %if.then46 ] + %buf.addr.0.i.i = phi ptr [ %add.ptr.i.i, %if.then.i.i ], [ %w, %if.then46 ] %sub.i.i = sub nsw i64 %conv54, %.sroa.speculated24.i.i %cmp4.not29.i.i = icmp eq i64 %sub.i.i, 0 br i1 %cmp4.not29.i.i, label %_ZN5folly2io6detail8WritableINS0_13QueueAppenderEE4pushEPKhm.exit, label %while.body.lr.ph.i.i @@ -825,7 +821,7 @@ _ZN5folly10IOBufQueue11preallocateEmmm.exit.i.i: ; preds = %if.end.i.i.i, %if.t %add.ptr14.i.i = getelementptr inbounds i8, ptr %buf.addr.131.i.i, i64 %31 %sub16.i.i = sub i64 %storemerge30.i.i, %31 %cmp4.not.i.i = icmp eq i64 %sub16.i.i, 0 - br i1 %cmp4.not.i.i, label %_ZN5folly2io6detail8WritableINS0_13QueueAppenderEE4pushEPKhm.exit, label %while.body.i.i, !llvm.loop !10 + br i1 %cmp4.not.i.i, label %_ZN5folly2io6detail8WritableINS0_13QueueAppenderEE4pushEPKhm.exit, label %while.body.i.i, !llvm.loop !9 _ZN5folly2io6detail8WritableINS0_13QueueAppenderEE4pushEPKhm.exit: ; preds = %_ZN5folly10IOBufQueue11preallocateEmmm.exit.i.i, %if.end.i.i %conv55 = zext nneg i8 %shr48 to i32 @@ -866,7 +862,7 @@ for.body: ; preds = %for.body.lr.ph, %fo %add = add i32 %totalBits.09, %conv %inc = add nuw i64 %i.08, 1 %exitcond.not = icmp eq i64 %inc, %sub.ptr.sub.i - br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !11 + br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !10 for.end: ; preds = %for.body, %entry %totalBits.0.lcssa = phi i32 [ 0, %entry ], [ %add, %for.body ] @@ -903,7 +899,7 @@ entry: %ref.tmp = alloca %"class.proxygen::huffman::HuffTree", align 8 %0 = load atomic i8, ptr @_ZGVZN8proxygen7huffman8huffTreeEvE8huffTree acquire, align 8 %guard.uninitialized = icmp eq i8 %0, 0 - br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !12 + br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !11 init.check: ; preds = %entry %1 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN8proxygen7huffman8huffTreeEvE8huffTree) #27 @@ -1113,7 +1109,7 @@ if.then3: ; preds = %if.else call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp.i.i.i.i) %0 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 %guard.uninitialized.i.i.i.i = icmp eq i8 %0, 0 - br i1 %guard.uninitialized.i.i.i.i, label %init.check.i.i.i.i, label %_ZN5folly10canNallocxEv.exit.i, !prof !12 + br i1 %guard.uninitialized.i.i.i.i, label %init.check.i.i.i.i, label %_ZN5folly10canNallocxEv.exit.i, !prof !11 init.check.i.i.i.i: ; preds = %if.then3 %1 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #27 @@ -1241,7 +1237,7 @@ if.end.i: ; preds = %if.end7 call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp.i.i.i.i) %9 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 %guard.uninitialized.i.i.i.i = icmp eq i8 %9, 0 - br i1 %guard.uninitialized.i.i.i.i, label %init.check.i.i.i.i, label %_ZN5folly10canNallocxEv.exit.i, !prof !12 + br i1 %guard.uninitialized.i.i.i.i, label %init.check.i.i.i.i, label %_ZN5folly10canNallocxEv.exit.i, !prof !11 init.check.i.i.i.i: ; preds = %if.end.i %10 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #27 @@ -1301,7 +1297,7 @@ entry: call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp.i.i) %0 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS_13usingJEMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 %guard.uninitialized.i.i = icmp eq i8 %0, 0 - br i1 %guard.uninitialized.i.i, label %init.check.i.i, label %_ZN5folly13usingJEMallocEv.exit, !prof !12 + br i1 %guard.uninitialized.i.i, label %init.check.i.i, label %_ZN5folly13usingJEMallocEv.exit, !prof !11 init.check.i.i: ; preds = %entry %1 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS_13usingJEMallocEvE11InitializerE3getESt12memory_orderE2rv) #27 @@ -1325,7 +1321,7 @@ lor.rhs: ; preds = %_ZN5folly13usingJEM call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp.i.i1) %3 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS_13usingTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 %guard.uninitialized.i.i2 = icmp eq i8 %3, 0 - br i1 %guard.uninitialized.i.i2, label %init.check.i.i4, label %_ZN5folly13usingTCMallocEv.exit, !prof !12 + br i1 %guard.uninitialized.i.i2, label %init.check.i.i4, label %_ZN5folly13usingTCMallocEv.exit, !prof !11 init.check.i.i4: ; preds = %lor.rhs %4 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS_13usingTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #27 @@ -1402,7 +1398,7 @@ if.end14: ; preds = %if.end %12 = load volatile i64, ptr %11, align 8 %13 = load atomic i8, ptr @_ZGVZZN5folly13usingJEMallocEvENK11InitializerclEvE3ptr acquire, align 8 %guard.uninitialized = icmp eq i8 %13, 0 - br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !12 + br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !11 init.check: ; preds = %if.end14 %14 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZZN5folly13usingJEMallocEvENK11InitializerclEvE3ptr) #27 @@ -1493,7 +1489,7 @@ terminate.lpad.i: ; preds = %if.end _ZN5folly26getTCMallocNumericPropertyEPKcPm.exit: ; preds = %if.end %5 = load atomic i8, ptr @_ZGVZZN5folly13usingTCMallocEvENK11InitializerclEvE3ptr acquire, align 8 %guard.uninitialized = icmp eq i8 %5, 0 - br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !12 + br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !11 init.check: ; preds = %_ZN5folly26getTCMallocNumericPropertyEPKcPm.exit %6 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZZN5folly13usingTCMallocEvENK11InitializerclEvE3ptr) #27 @@ -1622,7 +1618,7 @@ if.then3: ; preds = %if.end call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp.i.i.i.i) %1 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 %guard.uninitialized.i.i.i.i = icmp eq i8 %1, 0 - br i1 %guard.uninitialized.i.i.i.i, label %init.check.i.i.i.i, label %_ZN5folly10canNallocxEv.exit.i, !prof !12 + br i1 %guard.uninitialized.i.i.i.i, label %init.check.i.i.i.i, label %_ZN5folly10canNallocxEv.exit.i, !prof !11 init.check.i.i.i.i: ; preds = %if.then3 %2 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #27 @@ -1886,7 +1882,7 @@ if.end.i: ; preds = %if.end7 call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp.i.i.i.i) %9 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 %guard.uninitialized.i.i.i.i = icmp eq i8 %9, 0 - br i1 %guard.uninitialized.i.i.i.i, label %init.check.i.i.i.i, label %_ZN5folly10canNallocxEv.exit.i, !prof !12 + br i1 %guard.uninitialized.i.i.i.i, label %init.check.i.i.i.i, label %_ZN5folly10canNallocxEv.exit.i, !prof !11 init.check.i.i.i.i: ; preds = %if.end.i %10 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #27 @@ -2024,8 +2020,7 @@ attributes #32 = { nounwind allocsize(1) } !5 = !{!"llvm.loop.mustprogress"} !6 = distinct !{!6, !5} !7 = distinct !{!7, !5} -!8 = !{} +!8 = distinct !{!8, !5} !9 = distinct !{!9, !5} !10 = distinct !{!10, !5} -!11 = distinct !{!11, !5} -!12 = !{!"branch_weights", i32 1, i32 1048575} +!11 = !{!"branch_weights", i32 1, i32 1048575} diff --git a/bench/proxygen/optimized/QPACKHeaderTable.ll b/bench/proxygen/optimized/QPACKHeaderTable.ll index 9396746a86e..b9ef5357ecc 100644 --- a/bench/proxygen/optimized/QPACKHeaderTable.ll +++ b/bench/proxygen/optimized/QPACKHeaderTable.ll @@ -933,12 +933,15 @@ if.end20.i: ; preds = %while.end.i if.end: ; preds = %land.rhs.i.i.i.i, %while.body.i, %if.end.i.i.i.i.i %arrayidx.i.i.i.i.le = getelementptr inbounds nuw %"union.std::aligned_storage<4, 4>::type", ptr %rawItems_.i.i, i64 %conv9.i - %20 = load ptr, ptr %names_, align 8, !nonnull !12, !noundef !12 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %arrayidx.i.i.i.i.le) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %arrayidx.i.i.i.i.le) ] + %20 = load ptr, ptr %names_, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %20) ] %21 = load i32, ptr %arrayidx.i.i.i.i.le, align 4 %idx.ext8.i.i = zext i32 %21 to i64 %add.ptr9.i.i = getelementptr inbounds nuw %"struct.std::pair", ptr %20, i64 %idx.ext8.i.i %second = getelementptr inbounds nuw i8, ptr %add.ptr9.i.i, i64 8 - %22 = load ptr, ptr %second, align 8, !noalias !13 + %22 = load ptr, ptr %second, align 8, !noalias !12 %cmp.i.i.i34.not57 = icmp eq ptr %second, %22 br i1 %cmp.i.i.i34.not57, label %for.end, label %for.body.lr.ph @@ -978,9 +981,9 @@ for.body.us: ; preds = %for.body.lr.ph.spli for.inc.us: ; preds = %for.body.us %29 = load ptr, ptr %_M_prev.i.i.us, align 8 - %30 = load ptr, ptr %second, align 8, !noalias !13 + %30 = load ptr, ptr %second, align 8, !noalias !12 %cmp.i.i.i34.not.us = icmp eq ptr %29, %30 - br i1 %cmp.i.i.i34.not.us, label %for.end, label %for.body.us, !llvm.loop !16 + br i1 %cmp.i.i.i34.not.us, label %for.end, label %for.body.us, !llvm.loop !15 for.body.lr.ph.split: ; preds = %for.body.lr.ph br i1 %allowVulnerable, label %for.body.lr.ph.split.split.us, label %for.body @@ -1010,7 +1013,7 @@ for.body.us61.us: ; preds = %for.body.lr.ph.spli for.inc.us67.us: ; preds = %for.body.us61.us %cmp.i.i.i34.not.us69.us = icmp eq ptr %32, %22 - br i1 %cmp.i.i.i34.not.us69.us, label %for.end, label %for.body.us61.us, !llvm.loop !16 + br i1 %cmp.i.i.i34.not.us69.us, label %for.end, label %for.body.us61.us, !llvm.loop !15 for.body.us61: ; preds = %for.body.lr.ph.split.split.us, %for.inc.us67 %indexIt.sroa.0.058.us63 = phi ptr [ %36, %for.inc.us67 ], [ %second, %for.body.lr.ph.split.split.us ] @@ -1042,7 +1045,7 @@ land.rhs.i.i.us: ; preds = %for.body.us61 for.inc.us67: ; preds = %land.rhs.i.i.us, %for.body.us61 %cmp.i.i.i34.not.us69 = icmp eq ptr %36, %22 - br i1 %cmp.i.i.i34.not.us69, label %for.end, label %for.body.us61, !llvm.loop !16 + br i1 %cmp.i.i.i34.not.us69, label %for.end, label %for.body.us61, !llvm.loop !15 for.body: ; preds = %for.body.lr.ph.split, %for.inc %41 = phi ptr [ %50, %for.inc ], [ %22, %for.body.lr.ph.split ] @@ -1089,7 +1092,7 @@ if.then15: ; preds = %_ZNSt11char_traitsI if.then15.for.inc_crit_edge: ; preds = %if.then15 %.pre = load ptr, ptr %_M_prev.i.i, align 8 - %.pre96 = load ptr, ptr %second, align 8, !noalias !13 + %.pre96 = load ptr, ptr %second, align 8, !noalias !12 br label %for.inc if.then19: ; preds = %if.then15, %land.rhs.i.i.us, %for.body.us61.us, %for.body.us, %for.body.us.us @@ -1102,14 +1105,14 @@ for.inc: ; preds = %if.then15.for.inc_c %51 = phi ptr [ %.pre, %if.then15.for.inc_crit_edge ], [ %42, %for.body ], [ %42, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] %encoderHasUnackedEntry.1 = phi i8 [ 1, %if.then15.for.inc_crit_edge ], [ %encoderHasUnackedEntry.059, %for.body ], [ %encoderHasUnackedEntry.059, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i ] %cmp.i.i.i34.not = icmp eq ptr %51, %50 - br i1 %cmp.i.i.i34.not, label %for.end.loopexit87, label %for.body, !llvm.loop !16 + br i1 %cmp.i.i.i34.not, label %for.end.loopexit87, label %for.body, !llvm.loop !15 for.end.loopexit87: ; preds = %for.inc %52 = zext nneg i8 %encoderHasUnackedEntry.1 to i32 br label %for.end for.end: ; preds = %for.inc.us67, %for.inc.us67.us, %for.inc.us, %for.end.loopexit87, %if.end - %encoderHasUnackedEntry.0.lcssa = phi i32 [ 0, %if.end ], [ 0, %for.inc.us67.us ], [ 1, %for.inc.us ], [ %52, %for.end.loopexit87 ], [ 0, %for.inc.us67 ] + %encoderHasUnackedEntry.0.lcssa = phi i32 [ 0, %_ZNK5folly3f146detail21VectorContainerPolicyIN8proxygen15HPACKHeaderNameENSt7__cxx114listIjSaIjEEEvvvSt17integral_constantIbLb1EEE13makeConstIterERKNS1_11F14ItemIterIPNS1_8F14ChunkIjEEEE.exit ], [ 0, %for.inc.us67.us ], [ 1, %for.inc.us ], [ %52, %for.end.loopexit87 ], [ 0, %for.inc.us67 ] %. = sub nsw i32 0, %encoderHasUnackedEntry.0.lcssa br label %return @@ -1715,7 +1718,7 @@ while.body: ; preds = %land.rhs %cmp5 = icmp ult i32 %inc14, %14 %cmp6 = icmp ult i32 %add, %needed %or.cond = select i1 %cmp5, i1 %cmp6, i1 false - br i1 %or.cond, label %land.lhs.true7, label %while.end, !llvm.loop !17 + br i1 %or.cond, label %land.lhs.true7, label %while.end, !llvm.loop !16 while.end: ; preds = %land.rhs, %while.body, %land.lhs.true7, %if.end %cmp6.lcssa = phi i1 [ %cmp610, %if.end ], [ true, %land.lhs.true7 ], [ %cmp6, %while.body ], [ true, %land.rhs ] @@ -1791,11 +1794,11 @@ _ZN8proxygen16QPACKHeaderTable8canIndexERKNS_15HPACKHeaderNameEN5folly5RangeIPKc br i1 %call8.i, label %if.then40, label %return if.then40: ; preds = %land.rhs.i, %_ZN8proxygen16QPACKHeaderTable8canIndexERKNS_15HPACKHeaderNameEN5folly5RangeIPKcEE.exit - %9 = load ptr, ptr %value, align 8, !noalias !18 - %10 = load i8, ptr %arrayidx.i.i.i.i.i, align 1, !noalias !18 + %9 = load ptr, ptr %value, align 8, !noalias !17 + %10 = load i8, ptr %arrayidx.i.i.i.i.i, align 1, !noalias !17 %cmp.i.i.i.i.i = icmp ult i8 %10, 64 %cond.i.i.i.i.i = select i1 %cmp.i.i.i.i.i, ptr %value, ptr %9 - %11 = load i64, ptr %size_.i.i.i, align 8, !noalias !18 + %11 = load i64, ptr %size_.i.i.i, align 8, !noalias !17 %conv.i.i.i.i = zext i8 %10 to i64 %sub.i.i.i.i = sub nsw i64 23, %conv.i.i.i.i %cmp.i.i.i.i6 = icmp ult i8 %10, 24 @@ -2294,7 +2297,7 @@ while.body.i.i.i.i.i.i: ; preds = %for.body, %while.bo %2 = load ptr, ptr %__cur.05.i.i.i.i.i.i, align 8 tail call void @_ZdlPv(ptr noundef nonnull %__cur.05.i.i.i.i.i.i) #31 %cmp.not.i.i.i.i.i.i = icmp eq ptr %2, %second.i.i.i - br i1 %cmp.not.i.i.i.i.i.i, label %_ZNSt7__cxx114listIjSaIjEED2Ev.exit.i.i.i, label %while.body.i.i.i.i.i.i, !llvm.loop !21 + br i1 %cmp.not.i.i.i.i.i.i, label %_ZNSt7__cxx114listIjSaIjEED2Ev.exit.i.i.i, label %while.body.i.i.i.i.i.i, !llvm.loop !20 _ZNSt7__cxx114listIjSaIjEED2Ev.exit.i.i.i: ; preds = %while.body.i.i.i.i.i.i, %for.body %3 = load ptr, ptr %arrayidx, align 8 @@ -2335,7 +2338,7 @@ _ZNSt16allocator_traitsISaISt4pairIKN8proxygen15HPACKHeaderNameENSt7__cxx114list store ptr null, ptr %arrayidx, align 8 %inc = add nuw i64 %i.04, 1 %exitcond.not = icmp eq i64 %inc, %size - br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !22 + br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !21 for.end: ; preds = %_ZNSt16allocator_traitsISaISt4pairIKN8proxygen15HPACKHeaderNameENSt7__cxx114listIjSaIjEEEEEE7destroyIS8_EEvRS9_PT_.exit, %entry ret void @@ -2574,7 +2577,7 @@ if.end.i: ; preds = %entry call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp.i.i.i.i) %0 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 %guard.uninitialized.i.i.i.i = icmp eq i8 %0, 0 - br i1 %guard.uninitialized.i.i.i.i, label %init.check.i.i.i.i, label %_ZN5folly10canNallocxEv.exit.i, !prof !23 + br i1 %guard.uninitialized.i.i.i.i, label %init.check.i.i.i.i, label %_ZN5folly10canNallocxEv.exit.i, !prof !22 init.check.i.i.i.i: ; preds = %if.end.i %1 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #28 @@ -2645,7 +2648,7 @@ entry: call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp.i.i) %0 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS_13usingJEMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 %guard.uninitialized.i.i = icmp eq i8 %0, 0 - br i1 %guard.uninitialized.i.i, label %init.check.i.i, label %_ZN5folly13usingJEMallocEv.exit, !prof !23 + br i1 %guard.uninitialized.i.i, label %init.check.i.i, label %_ZN5folly13usingJEMallocEv.exit, !prof !22 init.check.i.i: ; preds = %entry %1 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS_13usingJEMallocEvE11InitializerE3getESt12memory_orderE2rv) #28 @@ -2669,7 +2672,7 @@ lor.rhs: ; preds = %_ZN5folly13usingJEM call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp.i.i1) %3 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS_13usingTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 %guard.uninitialized.i.i2 = icmp eq i8 %3, 0 - br i1 %guard.uninitialized.i.i2, label %init.check.i.i4, label %_ZN5folly13usingTCMallocEv.exit, !prof !23 + br i1 %guard.uninitialized.i.i2, label %init.check.i.i4, label %_ZN5folly13usingTCMallocEv.exit, !prof !22 init.check.i.i4: ; preds = %lor.rhs %4 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS_13usingTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #28 @@ -2737,7 +2740,7 @@ if.end14: ; preds = %if.end %12 = load volatile i64, ptr %11, align 8 %13 = load atomic i8, ptr @_ZGVZZN5folly13usingJEMallocEvENK11InitializerclEvE3ptr acquire, align 8 %guard.uninitialized = icmp eq i8 %13, 0 - br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !23 + br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !22 init.check: ; preds = %if.end14 %14 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZZN5folly13usingJEMallocEvENK11InitializerclEvE3ptr) #28 @@ -2828,7 +2831,7 @@ terminate.lpad.i: ; preds = %if.end _ZN5folly26getTCMallocNumericPropertyEPKcPm.exit: ; preds = %if.end %5 = load atomic i8, ptr @_ZGVZZN5folly13usingTCMallocEvENK11InitializerclEvE3ptr acquire, align 8 %guard.uninitialized = icmp eq i8 %5, 0 - br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !23 + br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !22 init.check: ; preds = %_ZN5folly26getTCMallocNumericPropertyEPKcPm.exit %6 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZZN5folly13usingTCMallocEvENK11InitializerclEvE3ptr) #28 @@ -2960,7 +2963,7 @@ if.end.i: ; preds = %if.end7 call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp.i.i.i.i) %9 = load atomic i8, ptr @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv acquire, align 8 %guard.uninitialized.i.i.i.i = icmp eq i8 %9, 0 - br i1 %guard.uninitialized.i.i.i.i, label %init.check.i.i.i.i, label %_ZN5folly10canNallocxEv.exit.i, !prof !23 + br i1 %guard.uninitialized.i.i.i.i, label %init.check.i.i.i.i, label %_ZN5folly10canNallocxEv.exit.i, !prof !22 init.check.i.i.i.i: ; preds = %if.end.i %10 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN5folly6detail14FastStaticBoolIZNS0_23usingJEMallocOrTCMallocEvE11InitializerE3getESt12memory_orderE2rv) #28 @@ -3236,15 +3239,14 @@ attributes #34 = { nounwind allocsize(0) } !9 = distinct !{!9, !8} !10 = distinct !{!10, !8} !11 = distinct !{!11, !8} -!12 = !{} -!13 = !{!14} -!14 = distinct !{!14, !15, !"_ZNKSt7__cxx114listIjSaIjEE4rendEv: %agg.result"} -!15 = distinct !{!15, !"_ZNKSt7__cxx114listIjSaIjEE4rendEv"} +!12 = !{!13} +!13 = distinct !{!13, !14, !"_ZNKSt7__cxx114listIjSaIjEE4rendEv: %agg.result"} +!14 = distinct !{!14, !"_ZNKSt7__cxx114listIjSaIjEE4rendEv"} +!15 = distinct !{!15, !8} !16 = distinct !{!16, !8} -!17 = distinct !{!17, !8} -!18 = !{!19} -!19 = distinct !{!19, !20, !"_ZNK8proxygen11HPACKHeader4copyEv: %agg.result"} -!20 = distinct !{!20, !"_ZNK8proxygen11HPACKHeader4copyEv"} +!17 = !{!18} +!18 = distinct !{!18, !19, !"_ZNK8proxygen11HPACKHeader4copyEv: %agg.result"} +!19 = distinct !{!19, !"_ZNK8proxygen11HPACKHeader4copyEv"} +!20 = distinct !{!20, !8} !21 = distinct !{!21, !8} -!22 = distinct !{!22, !8} -!23 = !{!"branch_weights", i32 1, i32 1048575} +!22 = !{!"branch_weights", i32 1, i32 1048575} diff --git a/bench/pyo3-rs/optimized/5a36ggkdtm8ke8bq.ll b/bench/pyo3-rs/optimized/5a36ggkdtm8ke8bq.ll index 1e84dd27fae..69ba384bc50 100644 --- a/bench/pyo3-rs/optimized/5a36ggkdtm8ke8bq.ll +++ b/bench/pyo3-rs/optimized/5a36ggkdtm8ke8bq.ll @@ -93,7 +93,7 @@ define void @_ZN8pyo3_ffi8datetime17PyDateTime_IMPORT17hb5076f9810e237b1E() unna 9: ; preds = %6 %10 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #11, !noalias !5 + call void @_ZN4core9panicking16panic_in_cleanup17hd62aa59d1fda1c9fE() #12, !noalias !5 unreachable common.resume: ; preds = %16, %19, %6 @@ -112,21 +112,25 @@ common.resume: ; preds = %16, %19, %6 16: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h1901a67b92b931bbE.exit" %17 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %12) ] store i8 0, ptr %12, align 1 %18 = icmp eq i64 %14, 0 br i1 %18, label %common.resume, label %19 19: ; preds = %16 - tail call void @__rust_dealloc(ptr noundef nonnull %12, i64 noundef range(i64 1, 0) %14, i64 noundef 1) #12 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %12) ] + tail call void @__rust_dealloc(ptr noundef nonnull %12, i64 noundef range(i64 1, 0) %14, i64 noundef 1) #13 br label %common.resume 20: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h1901a67b92b931bbE.exit" + call void @llvm.assume(i1 true) [ "nonnull"(ptr %12) ] store i8 0, ptr %12, align 1 %21 = icmp eq i64 %14, 0 br i1 %21, label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h66c7b83b18eb3a5cE.exit4", label %22 22: ; preds = %20 - tail call void @__rust_dealloc(ptr noundef nonnull %12, i64 noundef range(i64 1, 0) %14, i64 noundef 1) #12 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %12) ] + tail call void @__rust_dealloc(ptr noundef nonnull %12, i64 noundef range(i64 1, 0) %14, i64 noundef 1) #13 br label %"_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h66c7b83b18eb3a5cE.exit4" "_ZN4core3ptr47drop_in_place$LT$alloc..ffi..c_str..CString$GT$17h66c7b83b18eb3a5cE.exit4": ; preds = %20, %22 @@ -194,6 +198,9 @@ declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr no ; Function Attrs: cold noreturn nonlazybind uwtable declare void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(24), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #5 +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #6 + ; Function Attrs: nounwind nonlazybind allockind("free") uwtable declare void @__rust_dealloc(ptr allocptr noundef, i64 noundef, i64 noundef) unnamed_addr #6 @@ -227,13 +234,14 @@ attributes #2 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x attributes #3 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } 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 = { nounwind nonlazybind allockind("free") uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #7 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #6 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #7 = { nounwind nonlazybind allockind("free") uwtable "alloc-family"="__rust_alloc" "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #8 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #9 = { noreturn } -attributes #10 = { cold } -attributes #11 = { cold noreturn nounwind } -attributes #12 = { nounwind } +attributes #9 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #10 = { noreturn } +attributes #11 = { cold } +attributes #12 = { cold noreturn nounwind } +attributes #13 = { nounwind } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/qdrant-rs/optimized/23nlkzsh9fgdn4zq.ll b/bench/qdrant-rs/optimized/23nlkzsh9fgdn4zq.ll index a1d976b91a6..ecab116ed91 100644 --- a/bench/qdrant-rs/optimized/23nlkzsh9fgdn4zq.ll +++ b/bench/qdrant-rs/optimized/23nlkzsh9fgdn4zq.ll @@ -104,6 +104,7 @@ define hidden void @_ZN3std10sys_common4once5futex4Once4call17h77a8a08035c8bad9E %28 = getelementptr inbounds nuw i8, ptr %7, i64 8 store i32 1, ptr %28, align 8 %.val = load ptr, ptr %2, align 8, !nonnull !9, !align !10, !noundef !9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %29 = load ptr, ptr %.val, align 8, !align !10, !noundef !9 store ptr null, ptr %.val, align 8 %30 = icmp eq ptr %29, null @@ -118,6 +119,7 @@ define hidden void @_ZN3std10sys_common4once5futex4Once4call17h77a8a08035c8bad9E 32: ; preds = %.split19.us %.val.i = load ptr, ptr %29, align 8, !nonnull !9, !align !10, !noundef !9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %33 = invoke noundef i64 @_ZN6common3cpu12get_num_cpus17h977909401643c6caE() to label %36 unwind label %34 @@ -216,6 +218,9 @@ declare void @llvm.lifetime.start.p0(ptr captures(none)) #6 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(ptr captures(none)) #6 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #7 + ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #7 @@ -229,9 +234,10 @@ attributes #3 = { inlinehint mustprogress nofree norecurse nosync nounwind nonla attributes #4 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #5 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #7 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } -attributes #8 = { noreturn } -attributes #9 = { cold noreturn nounwind } +attributes #7 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #8 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } +attributes #9 = { noreturn } +attributes #10 = { cold noreturn nounwind } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/qdrant-rs/optimized/242gbngcvruxs88t.ll b/bench/qdrant-rs/optimized/242gbngcvruxs88t.ll index 0b3a8bf5398..87625a11068 100644 --- a/bench/qdrant-rs/optimized/242gbngcvruxs88t.ll +++ b/bench/qdrant-rs/optimized/242gbngcvruxs88t.ll @@ -175,6 +175,7 @@ define { ptr, i64 } @_ZN6common3cpu9CpuBudget3new17h4641c308df318575E(i64 %0) un store i64 1, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.3.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(40) %.sroa.3, i64 40, i1 false) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %3) ] %4 = insertvalue { ptr, i64 } poison, ptr %3, 0 %5 = insertvalue { ptr, i64 } %4, i64 %0, 1 ret { ptr, i64 } %5 @@ -321,6 +322,7 @@ _ZN6common3cpu14get_cpu_budget17h98b86ed8cdaa4d53E.exit: ; preds = %0, %4, %6, % store i64 1, ptr %.sroa.2.0..sroa_idx.i, align 8 %.sroa.3.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %17, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.3.0..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(40) %.sroa.3.i, i64 40, i1 false) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %17) ] %18 = insertvalue { ptr, i64 } poison, ptr %17, 0 %19 = insertvalue { ptr, i64 } %18, i64 %16, 1 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.3.i) @@ -571,6 +573,9 @@ declare void @_ZN15thread_priority4unix27set_current_thread_priority17h314f853b5 ; Function Attrs: inlinehint nonlazybind uwtable declare void @"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hf3fb010157cee8d6E"(ptr sret({ i32, [5 x i32] }) align 8, ptr align 8) unnamed_addr #4 +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #9 + ; Function Attrs: nonlazybind uwtable declare zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h3926bd7f0c49eda5E"(ptr align 8, ptr align 8) unnamed_addr #0 @@ -601,12 +606,13 @@ attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argm attributes #6 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #7 = { mustprogress nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } attributes #8 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #9 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } -attributes #10 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #9 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #10 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } attributes #11 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #12 = { cold } -attributes #13 = { cold noreturn nounwind } -attributes #14 = { noreturn } +attributes #12 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #13 = { cold } +attributes #14 = { cold noreturn nounwind } +attributes #15 = { noreturn } !llvm.module.flags = !{!0, !1} !llvm.ident = !{!2} diff --git a/bench/qdrant-rs/optimized/pgs97hhgng8x0qz.ll b/bench/qdrant-rs/optimized/pgs97hhgng8x0qz.ll index 1665f6f4bfe..49e0be53df9 100644 --- a/bench/qdrant-rs/optimized/pgs97hhgng8x0qz.ll +++ b/bench/qdrant-rs/optimized/pgs97hhgng8x0qz.ll @@ -452,6 +452,7 @@ _ZN4core5slice4sort20provide_sorted_batch17h009278cd587dc262E.exit: ; preds = %. br label %.invoke198 162: ; preds = %159 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.pre137) ] %163 = getelementptr inbounds { i64, i64 }, ptr %.pre137, i64 %.sroa.4.0.i46.ph %164 = load i64, ptr %163, align 8, !noundef !14 %165 = getelementptr inbounds nuw i8, ptr %163, i64 8 @@ -483,6 +484,7 @@ _ZN4core5slice4sort20provide_sorted_batch17h009278cd587dc262E.exit: ; preds = %. unreachable 171: ; preds = %162 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.pre137) ] %172 = getelementptr inbounds { i64, i64 }, ptr %.pre137, i64 %167 %173 = load i64, ptr %172, align 8, !noundef !14 %174 = getelementptr inbounds nuw i8, ptr %172, i64 8 @@ -569,6 +571,7 @@ _ZN4core5slice4sort20provide_sorted_batch17h009278cd587dc262E.exit: ; preds = %. %.02819.i = phi ptr [ %214, %.lr.ph.i56 ], [ %188, %196 ] %.sroa.0.118.i = phi ptr [ %217, %.lr.ph.i56 ], [ %14, %196 ] %.sroa.18.217.i = phi ptr [ %212, %.lr.ph.i56 ], [ %187, %196 ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.118.i) ] %.028.val.i = load i32, ptr %.02819.i, align 4, !alias.scope !53, !noundef !14 %.val36.i = load i32, ptr %.sroa.0.118.i, align 4, !noalias !53, !noundef !14 %210 = icmp ult i32 %.028.val.i, %.val36.i @@ -593,7 +596,8 @@ _ZN4core5slice4sort20provide_sorted_batch17h009278cd587dc262E.exit: ; preds = %. %220 = ptrtoint ptr %.sroa.10.1.i to i64 %221 = ptrtoint ptr %.sroa.0.0.i55 to i64 %222 = sub nuw i64 %220, %221 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.18.1.i, ptr align 4 %.sroa.0.0.i55, i64 %222, i1 false), !noalias !56 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.18.1.i, ptr nonnull align 4 %.sroa.0.0.i55, i64 %222, i1 false), !noalias !56 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.pre137) ] %223 = add i64 %173, %164 store i64 %223, ptr %172, align 8 store i64 %166, ptr %174, align 8 diff --git a/bench/quantlib/optimized/gaussian1dcapfloorengine.ll b/bench/quantlib/optimized/gaussian1dcapfloorengine.ll index 05c449c13fd..2640dd5ce12 100644 --- a/bench/quantlib/optimized/gaussian1dcapfloorengine.ll +++ b/bench/quantlib/optimized/gaussian1dcapfloorengine.ll @@ -2096,16 +2096,19 @@ lpad273: ; preds = %invoke.cont280 invoke.cont280: ; preds = %invoke.cont267, %invoke.cont297 %j271.01155 = phi i64 [ %add, %invoke.cont297 ], [ 0, %invoke.cont267 ] %price.01154 = phi double [ %add299, %invoke.cont297 ], [ 0.000000e+00, %invoke.cont267 ] - %193 = load ptr, ptr %impl_.i.i, align 8, !tbaa !116, !nonnull !27, !noundef !27 + %193 = load ptr, ptr %impl_.i.i, align 8, !tbaa !116 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %193) ] %194 = call noundef nonnull align 8 dereferenceable(152) ptr @__dynamic_cast(ptr nonnull %193, ptr nonnull @_ZTIN8QuantLib13Interpolation4ImplE, ptr nonnull @_ZTIN8QuantLib6detail17CoefficientHolderE, i64 -2) #26 %c_.i = getelementptr inbounds nuw i8, ptr %194, i64 88 %195 = load ptr, ptr %c_.i, align 8, !tbaa !105 %add.ptr.i359 = getelementptr inbounds nuw double, ptr %195, i64 %j271.01155 %196 = load double, ptr %add.ptr.i359, align 8, !tbaa !42 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %193) ] %b_.i = getelementptr inbounds nuw i8, ptr %194, i64 64 %197 = load ptr, ptr %b_.i, align 8, !tbaa !105 %add.ptr.i361 = getelementptr inbounds nuw double, ptr %197, i64 %j271.01155 %198 = load double, ptr %add.ptr.i361, align 8, !tbaa !42 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %193) ] %a_.i = getelementptr inbounds nuw i8, ptr %194, i64 40 %199 = load ptr, ptr %a_.i, align 8, !tbaa !105 %add.ptr.i363 = getelementptr inbounds nuw double, ptr %199, i64 %j271.01155 @@ -2162,16 +2165,19 @@ lpad307: ; preds = %invoke.cont377, %co br label %ehcleanup385 invoke.cont336: ; preds = %if.then304 - %215 = load ptr, ptr %impl_.i.i, align 8, !tbaa !116, !nonnull !27, !noundef !27 + %215 = load ptr, ptr %impl_.i.i, align 8, !tbaa !116 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %215) ] %216 = call noundef nonnull align 8 dereferenceable(152) ptr @__dynamic_cast(ptr nonnull %215, ptr nonnull @_ZTIN8QuantLib13Interpolation4ImplE, ptr nonnull @_ZTIN8QuantLib6detail17CoefficientHolderE, i64 -2) #26 %c_.i378 = getelementptr inbounds nuw i8, ptr %216, i64 88 %217 = load ptr, ptr %c_.i378, align 8, !tbaa !105 %add.ptr.i380 = getelementptr inbounds nuw double, ptr %217, i64 %.lcssa1049 %218 = load double, ptr %add.ptr.i380, align 8, !tbaa !42 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %215) ] %b_.i382 = getelementptr inbounds nuw i8, ptr %216, i64 64 %219 = load ptr, ptr %b_.i382, align 8, !tbaa !105 %add.ptr.i384 = getelementptr inbounds nuw double, ptr %219, i64 %.lcssa1049 %220 = load double, ptr %add.ptr.i384, align 8, !tbaa !42 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %215) ] %a_.i386 = getelementptr inbounds nuw i8, ptr %216, i64 40 %221 = load ptr, ptr %a_.i386, align 8, !tbaa !105 %add.ptr.i388 = getelementptr inbounds nuw double, ptr %221, i64 %.lcssa1049 @@ -3098,16 +3104,19 @@ lpad559: ; preds = %invoke.cont566 invoke.cont566: ; preds = %invoke.cont552, %invoke.cont584 %j557.01165 = phi i64 [ %add581, %invoke.cont584 ], [ 0, %invoke.cont552 ] %price556.01164 = phi double [ %add586, %invoke.cont584 ], [ 0.000000e+00, %invoke.cont552 ] - %361 = load ptr, ptr %impl_.i.i624, align 8, !tbaa !116, !nonnull !27, !noundef !27 + %361 = load ptr, ptr %impl_.i.i624, align 8, !tbaa !116 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %361) ] %362 = call noundef nonnull align 8 dereferenceable(152) ptr @__dynamic_cast(ptr nonnull %361, ptr nonnull @_ZTIN8QuantLib13Interpolation4ImplE, ptr nonnull @_ZTIN8QuantLib6detail17CoefficientHolderE, i64 -2) #26 %c_.i625 = getelementptr inbounds nuw i8, ptr %362, i64 88 %363 = load ptr, ptr %c_.i625, align 8, !tbaa !105 %add.ptr.i626 = getelementptr inbounds nuw double, ptr %363, i64 %j557.01165 %364 = load double, ptr %add.ptr.i626, align 8, !tbaa !42 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %361) ] %b_.i628 = getelementptr inbounds nuw i8, ptr %362, i64 64 %365 = load ptr, ptr %b_.i628, align 8, !tbaa !105 %add.ptr.i629 = getelementptr inbounds nuw double, ptr %365, i64 %j557.01165 %366 = load double, ptr %add.ptr.i629, align 8, !tbaa !42 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %361) ] %a_.i631 = getelementptr inbounds nuw i8, ptr %362, i64 40 %367 = load ptr, ptr %a_.i631, align 8, !tbaa !105 %add.ptr.i632 = getelementptr inbounds nuw double, ptr %367, i64 %j557.01165 @@ -3164,14 +3173,17 @@ lpad597: ; preds = %invoke.cont649, %co br label %ehcleanup656 invoke.cont626: ; preds = %if.then593 - %383 = load ptr, ptr %impl_.i.i624, align 8, !tbaa !116, !nonnull !27, !noundef !27 + %383 = load ptr, ptr %impl_.i.i624, align 8, !tbaa !116 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %383) ] %384 = call noundef nonnull align 8 dereferenceable(152) ptr @__dynamic_cast(ptr nonnull %383, ptr nonnull @_ZTIN8QuantLib13Interpolation4ImplE, ptr nonnull @_ZTIN8QuantLib6detail17CoefficientHolderE, i64 -2) #26 %c_.i647 = getelementptr inbounds nuw i8, ptr %384, i64 88 %385 = load ptr, ptr %c_.i647, align 8, !tbaa !105 %386 = load double, ptr %385, align 8, !tbaa !42 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %383) ] %b_.i650 = getelementptr inbounds nuw i8, ptr %384, i64 64 %387 = load ptr, ptr %b_.i650, align 8, !tbaa !105 %388 = load double, ptr %387, align 8, !tbaa !42 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %383) ] %a_.i653 = getelementptr inbounds nuw i8, ptr %384, i64 40 %389 = load ptr, ptr %a_.i653, align 8, !tbaa !105 %390 = load double, ptr %389, align 8, !tbaa !42 diff --git a/bench/quantlib/optimized/gaussian1dmodel.ll b/bench/quantlib/optimized/gaussian1dmodel.ll index a781b79162c..1260f4df13a 100644 --- a/bench/quantlib/optimized/gaussian1dmodel.ll +++ b/bench/quantlib/optimized/gaussian1dmodel.ll @@ -4483,7 +4483,10 @@ invoke.cont60: ; preds = %for.cond.cleanup invoke.cont73.lr.ph: ; preds = %invoke.cont60 %impl_.i.i = getelementptr inbounds nuw i8, ptr %payoff, i64 16 - %25 = load ptr, ptr %impl_.i.i, align 8, !tbaa !180, !nonnull !38, !noundef !38 + %25 = load ptr, ptr %impl_.i.i, align 8, !tbaa !180 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %25) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %25) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %25) ] %.pre = load double, ptr %12, align 8, !tbaa !176 br label %invoke.cont73 @@ -4661,17 +4664,20 @@ if.else: ; preds = %if.then if.end.thread: ; preds = %if.else %impl_.i.i107 = getelementptr inbounds nuw i8, ptr %payoff, i64 16 - %88 = load ptr, ptr %impl_.i.i107, align 8, !tbaa !180, !nonnull !38, !noundef !38 + %88 = load ptr, ptr %impl_.i.i107, align 8, !tbaa !180 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %88) ] %89 = call noundef nonnull align 8 dereferenceable(152) ptr @__dynamic_cast(ptr nonnull %88, ptr nonnull @_ZTIN8QuantLib13Interpolation4ImplE, ptr nonnull @_ZTIN8QuantLib6detail17CoefficientHolderE, i64 -2) #29 %c_.i108 = getelementptr inbounds nuw i8, ptr %89, i64 88 %sub133 = add i64 %13, -2 %90 = load ptr, ptr %c_.i108, align 8, !tbaa !182 %add.ptr.i110 = getelementptr inbounds nuw double, ptr %90, i64 %sub133 %91 = load double, ptr %add.ptr.i110, align 8, !tbaa !176 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %88) ] %b_.i112 = getelementptr inbounds nuw i8, ptr %89, i64 64 %92 = load ptr, ptr %b_.i112, align 8, !tbaa !182 %add.ptr.i114 = getelementptr inbounds nuw double, ptr %92, i64 %sub133 %93 = load double, ptr %add.ptr.i114, align 8, !tbaa !176 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %88) ] %a_.i116 = getelementptr inbounds nuw i8, ptr %89, i64 40 %94 = load ptr, ptr %a_.i116, align 8, !tbaa !182 %add.ptr.i118 = getelementptr inbounds nuw double, ptr %94, i64 %sub133 @@ -4746,14 +4752,17 @@ if.end.thread: ; preds = %if.else invoke.cont167: ; preds = %if.else %impl_.i.i162 = getelementptr inbounds nuw i8, ptr %payoff, i64 16 - %121 = load ptr, ptr %impl_.i.i162, align 8, !tbaa !180, !nonnull !38, !noundef !38 + %121 = load ptr, ptr %impl_.i.i162, align 8, !tbaa !180 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %121) ] %122 = call noundef nonnull align 8 dereferenceable(152) ptr @__dynamic_cast(ptr nonnull %121, ptr nonnull @_ZTIN8QuantLib13Interpolation4ImplE, ptr nonnull @_ZTIN8QuantLib6detail17CoefficientHolderE, i64 -2) #29 %c_.i163 = getelementptr inbounds nuw i8, ptr %122, i64 88 %123 = load ptr, ptr %c_.i163, align 8, !tbaa !182 %124 = load double, ptr %123, align 8, !tbaa !176 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %121) ] %b_.i166 = getelementptr inbounds nuw i8, ptr %122, i64 64 %125 = load ptr, ptr %b_.i166, align 8, !tbaa !182 %126 = load double, ptr %125, align 8, !tbaa !176 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %121) ] %a_.i169 = getelementptr inbounds nuw i8, ptr %122, i64 40 %127 = load ptr, ptr %a_.i169, align 8, !tbaa !182 %128 = load double, ptr %127, align 8, !tbaa !176 diff --git a/bench/quantlib/optimized/gaussian1dnonstandardswaptionengine.ll b/bench/quantlib/optimized/gaussian1dnonstandardswaptionengine.ll index 8416af32cb5..66e1430ec69 100644 --- a/bench/quantlib/optimized/gaussian1dnonstandardswaptionengine.ll +++ b/bench/quantlib/optimized/gaussian1dnonstandardswaptionengine.ll @@ -3847,16 +3847,19 @@ lpad377: ; preds = %invoke.cont384 invoke.cont384: ; preds = %invoke.cont371, %invoke.cont402 %i375.01763 = phi i64 [ %add399, %invoke.cont402 ], [ 0, %invoke.cont371 ] %price.11762 = phi double [ %166, %invoke.cont402 ], [ 0.000000e+00, %invoke.cont371 ] - %154 = load ptr, ptr %impl_.i.i, align 8, !tbaa !167, !nonnull !27, !noundef !27 + %154 = load ptr, ptr %impl_.i.i, align 8, !tbaa !167 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %154) ] %155 = call noundef nonnull align 8 dereferenceable(152) ptr @__dynamic_cast(ptr nonnull %154, ptr nonnull @_ZTIN8QuantLib13Interpolation4ImplE, ptr nonnull @_ZTIN8QuantLib6detail17CoefficientHolderE, i64 -2) #28 %c_.i = getelementptr inbounds nuw i8, ptr %155, i64 88 %156 = load ptr, ptr %c_.i, align 8, !tbaa !69 %add.ptr.i433 = getelementptr inbounds nuw double, ptr %156, i64 %i375.01763 %157 = load double, ptr %add.ptr.i433, align 8, !tbaa !70 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %154) ] %b_.i = getelementptr inbounds nuw i8, ptr %155, i64 64 %158 = load ptr, ptr %b_.i, align 8, !tbaa !69 %add.ptr.i435 = getelementptr inbounds nuw double, ptr %158, i64 %i375.01763 %159 = load double, ptr %add.ptr.i435, align 8, !tbaa !70 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %154) ] %a_.i = getelementptr inbounds nuw i8, ptr %155, i64 40 %160 = load ptr, ptr %a_.i, align 8, !tbaa !69 %add.ptr.i437 = getelementptr inbounds nuw double, ptr %160, i64 %i375.01763 @@ -3913,7 +3916,8 @@ lpad412: ; preds = %invoke.cont482, %in br label %ehcleanup503 if.else440: ; preds = %if.then409 - %179 = load ptr, ptr %impl_.i.i, align 8, !tbaa !167, !nonnull !27, !noundef !27 + %179 = load ptr, ptr %impl_.i.i, align 8, !tbaa !167 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %179) ] %180 = call noundef nonnull align 8 dereferenceable(152) ptr @__dynamic_cast(ptr nonnull %179, ptr nonnull @_ZTIN8QuantLib13Interpolation4ImplE, ptr nonnull @_ZTIN8QuantLib6detail17CoefficientHolderE, i64 -2) #28 %c_.i452 = getelementptr inbounds nuw i8, ptr %180, i64 88 %181 = load ptr, ptr %c_.i452, align 8, !tbaa !69 @@ -3922,10 +3926,12 @@ if.else440: ; preds = %if.then409 invoke.cont443: ; preds = %if.else440 %add.ptr.i454 = getelementptr inbounds nuw double, ptr %181, i64 %.lcssa %182 = load double, ptr %add.ptr.i454, align 8, !tbaa !70 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %179) ] %b_.i456 = getelementptr inbounds nuw i8, ptr %180, i64 64 %183 = load ptr, ptr %b_.i456, align 8, !tbaa !69 %add.ptr.i458 = getelementptr inbounds nuw double, ptr %183, i64 %.lcssa %184 = load double, ptr %add.ptr.i458, align 8, !tbaa !70 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %179) ] %a_.i460 = getelementptr inbounds nuw i8, ptr %180, i64 40 %185 = load ptr, ptr %a_.i460, align 8, !tbaa !69 %add.ptr.i462 = getelementptr inbounds nuw double, ptr %185, i64 %.lcssa @@ -3946,9 +3952,11 @@ if.end479.thread: ; preds = %invoke.cont443 invoke.cont482: ; preds = %if.else440 %192 = load double, ptr %181, align 8, !tbaa !70 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %179) ] %b_.i473 = getelementptr inbounds nuw i8, ptr %180, i64 64 %193 = load ptr, ptr %b_.i473, align 8, !tbaa !69 %194 = load double, ptr %193, align 8, !tbaa !70 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %179) ] %a_.i476 = getelementptr inbounds nuw i8, ptr %180, i64 40 %195 = load ptr, ptr %a_.i476, align 8, !tbaa !69 %196 = load double, ptr %195, align 8, !tbaa !70 @@ -4327,16 +4335,19 @@ lpad626: ; preds = %invoke.cont633 invoke.cont633: ; preds = %invoke.cont620, %invoke.cont651 %i624.01771 = phi i64 [ %add648, %invoke.cont651 ], [ 0, %invoke.cont620 ] %price522.11770 = phi double [ %269, %invoke.cont651 ], [ 0.000000e+00, %invoke.cont620 ] - %257 = load ptr, ptr %impl_.i.i554, align 8, !tbaa !167, !nonnull !27, !noundef !27 + %257 = load ptr, ptr %impl_.i.i554, align 8, !tbaa !167 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %257) ] %258 = call noundef nonnull align 8 dereferenceable(152) ptr @__dynamic_cast(ptr nonnull %257, ptr nonnull @_ZTIN8QuantLib13Interpolation4ImplE, ptr nonnull @_ZTIN8QuantLib6detail17CoefficientHolderE, i64 -2) #28 %c_.i555 = getelementptr inbounds nuw i8, ptr %258, i64 88 %259 = load ptr, ptr %c_.i555, align 8, !tbaa !69 %add.ptr.i556 = getelementptr inbounds nuw double, ptr %259, i64 %i624.01771 %260 = load double, ptr %add.ptr.i556, align 8, !tbaa !70 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %257) ] %b_.i558 = getelementptr inbounds nuw i8, ptr %258, i64 64 %261 = load ptr, ptr %b_.i558, align 8, !tbaa !69 %add.ptr.i559 = getelementptr inbounds nuw double, ptr %261, i64 %i624.01771 %262 = load double, ptr %add.ptr.i559, align 8, !tbaa !70 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %257) ] %a_.i561 = getelementptr inbounds nuw i8, ptr %258, i64 40 %263 = load ptr, ptr %a_.i561, align 8, !tbaa !69 %add.ptr.i562 = getelementptr inbounds nuw double, ptr %263, i64 %i624.01771 @@ -4393,7 +4404,8 @@ lpad664: ; preds = %invoke.cont734, %in br label %ehcleanup755 if.else692: ; preds = %if.then660 - %282 = load ptr, ptr %impl_.i.i554, align 8, !tbaa !167, !nonnull !27, !noundef !27 + %282 = load ptr, ptr %impl_.i.i554, align 8, !tbaa !167 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %282) ] %283 = call noundef nonnull align 8 dereferenceable(152) ptr @__dynamic_cast(ptr nonnull %282, ptr nonnull @_ZTIN8QuantLib13Interpolation4ImplE, ptr nonnull @_ZTIN8QuantLib6detail17CoefficientHolderE, i64 -2) #28 %c_.i577 = getelementptr inbounds nuw i8, ptr %283, i64 88 %284 = load ptr, ptr %c_.i577, align 8, !tbaa !69 @@ -4402,10 +4414,12 @@ if.else692: ; preds = %if.then660 invoke.cont695: ; preds = %if.else692 %add.ptr.i579 = getelementptr inbounds nuw double, ptr %284, i64 %.lcssa1550 %285 = load double, ptr %add.ptr.i579, align 8, !tbaa !70 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %282) ] %b_.i581 = getelementptr inbounds nuw i8, ptr %283, i64 64 %286 = load ptr, ptr %b_.i581, align 8, !tbaa !69 %add.ptr.i583 = getelementptr inbounds nuw double, ptr %286, i64 %.lcssa1550 %287 = load double, ptr %add.ptr.i583, align 8, !tbaa !70 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %282) ] %a_.i585 = getelementptr inbounds nuw i8, ptr %283, i64 40 %288 = load ptr, ptr %a_.i585, align 8, !tbaa !69 %add.ptr.i587 = getelementptr inbounds nuw double, ptr %288, i64 %.lcssa1550 @@ -4426,9 +4440,11 @@ if.end731.thread: ; preds = %invoke.cont695 invoke.cont734: ; preds = %if.else692 %295 = load double, ptr %284, align 8, !tbaa !70 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %282) ] %b_.i598 = getelementptr inbounds nuw i8, ptr %283, i64 64 %296 = load ptr, ptr %b_.i598, align 8, !tbaa !69 %297 = load double, ptr %296, align 8, !tbaa !70 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %282) ] %a_.i601 = getelementptr inbounds nuw i8, ptr %283, i64 40 %298 = load ptr, ptr %a_.i601, align 8, !tbaa !69 %299 = load double, ptr %298, align 8, !tbaa !70 diff --git a/bench/quantlib/optimized/varianceswap.ll b/bench/quantlib/optimized/varianceswap.ll index 2fb4cfda539..c63c2fb0155 100644 --- a/bench/quantlib/optimized/varianceswap.ll +++ b/bench/quantlib/optimized/varianceswap.ll @@ -1045,13 +1045,12 @@ unreachable: ; preds = %invoke.cont13 define void @_ZNK8QuantLib12VarianceSwap12fetchResultsEPKNS_13PricingEngine7resultsE(ptr noundef nonnull align 8 dereferenceable(152) %this, ptr noundef %r) unnamed_addr #6 align 2 { entry: tail call void @_ZNK8QuantLib10Instrument12fetchResultsEPKNS_13PricingEngine7resultsE(ptr noundef nonnull align 8 dereferenceable(104) %this, ptr noundef %r) - %0 = icmp ne ptr %r, null - tail call void @llvm.assume(i1 %0) - %1 = tail call ptr @__dynamic_cast(ptr nonnull %r, ptr nonnull @_ZTIN8QuantLib13PricingEngine7resultsE, ptr nonnull @_ZTIN8QuantLib12VarianceSwap7resultsE, i64 -1) #25 - %variance = getelementptr inbounds nuw i8, ptr %1, i64 80 - %2 = load double, ptr %variance, align 8, !tbaa !62 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %r) ] + %0 = tail call ptr @__dynamic_cast(ptr nonnull %r, ptr nonnull @_ZTIN8QuantLib13PricingEngine7resultsE, ptr nonnull @_ZTIN8QuantLib12VarianceSwap7resultsE, i64 -1) #25 + %variance = getelementptr inbounds nuw i8, ptr %0, i64 80 + %1 = load double, ptr %variance, align 8, !tbaa !62 %variance_ = getelementptr inbounds nuw i8, ptr %this, i64 144 - store double %2, ptr %variance_, align 8, !tbaa !57 + store double %1, ptr %variance_, align 8, !tbaa !57 ret void } diff --git a/bench/quiche-rs/optimized/8qvxqomhv7zamn8arx2q9ya4o.ll b/bench/quiche-rs/optimized/8qvxqomhv7zamn8arx2q9ya4o.ll index 4cadcd881d0..e7f0f911851 100644 --- a/bench/quiche-rs/optimized/8qvxqomhv7zamn8arx2q9ya4o.ll +++ b/bench/quiche-rs/optimized/8qvxqomhv7zamn8arx2q9ya4o.ll @@ -707,8 +707,9 @@ _ZN4core5alloc6layout6Layout6repeat17hfd062edb70f5ec8fE.exit.i: ; preds = %2 br i1 %11, label %"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$14current_memory17h8357e2e2933c373fE.exit.i", label %12 12: ; preds = %_ZN4core5alloc6layout6Layout6repeat17hfd062edb70f5ec8fE.exit.i - %.val39.i = load ptr, ptr %10, align 8, !alias.scope !82, !nonnull !3, !noundef !3 + %.val39.i = load ptr, ptr %10, align 8, !alias.scope !82 %13 = mul nuw nsw i64 %5, 232 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val39.i) ] store ptr %.val39.i, ptr %3, align 8, !alias.scope !85, !noalias !82 %.sroa.5.0..sroa_idx.i41.i = getelementptr inbounds nuw i8, ptr %3, i64 16 store i64 %13, ptr %.sroa.5.0..sroa_idx.i41.i, align 8, !alias.scope !85, !noalias !82 @@ -766,8 +767,9 @@ _ZN4core5alloc6layout6Layout6repeat17hfd062edb70f5ec8fE.exit.i: ; preds = %2 br i1 %11, label %"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$14current_memory17h8357e2e2933c373fE.exit.i", label %12 12: ; preds = %_ZN4core5alloc6layout6Layout6repeat17hfd062edb70f5ec8fE.exit.i - %.val39.i = load ptr, ptr %10, align 8, !alias.scope !89, !nonnull !3, !noundef !3 + %.val39.i = load ptr, ptr %10, align 8, !alias.scope !89 %13 = mul nuw nsw i64 %5, 168 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val39.i) ] store ptr %.val39.i, ptr %3, align 8, !alias.scope !92, !noalias !89 %.sroa.5.0..sroa_idx.i41.i = getelementptr inbounds nuw i8, ptr %3, i64 16 store i64 %13, ptr %.sroa.5.0..sroa_idx.i41.i, align 8, !alias.scope !92, !noalias !89 @@ -815,8 +817,9 @@ define hidden void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17hb0fd2 6: ; preds = %3 %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %.val1 = load ptr, ptr %7, align 8, !nonnull !3, !noundef !3 + %.val1 = load ptr, ptr %7, align 8 %8 = mul nuw i64 %.val, %2 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1) ] tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val1, i64 noundef %8, i64 noundef range(i64 1, -9223372036854775807) %1) #23 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit" @@ -933,8 +936,9 @@ _ZN4core5alloc6layout6Layout6repeat17hfd062edb70f5ec8fE.exit.i: ; preds = %12 br i1 %29, label %"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$14current_memory17h8357e2e2933c373fE.exit.i", label %30 30: ; preds = %_ZN4core5alloc6layout6Layout6repeat17hfd062edb70f5ec8fE.exit.i - %.val39.i = load ptr, ptr %28, align 8, !alias.scope !95, !nonnull !3, !noundef !3 + %.val39.i = load ptr, ptr %28, align 8, !alias.scope !95 %31 = mul nuw i64 %14, %4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val39.i) ] store ptr %.val39.i, ptr %6, align 8, !alias.scope !98, !noalias !95 %.sroa.5.0..sroa_idx.i41.i = getelementptr inbounds nuw i8, ptr %6, i64 16 store i64 %31, ptr %.sroa.5.0..sroa_idx.i41.i, align 8, !alias.scope !98, !noalias !95 diff --git a/bench/quiche-rs/optimized/ef5wjav2twwy2d1ucao7uchw2.ll b/bench/quiche-rs/optimized/ef5wjav2twwy2d1ucao7uchw2.ll index 85d4f8d66f2..fffacfec7ed 100644 --- a/bench/quiche-rs/optimized/ef5wjav2twwy2d1ucao7uchw2.ll +++ b/bench/quiche-rs/optimized/ef5wjav2twwy2d1ucao7uchw2.ll @@ -30,9 +30,10 @@ define hidden noundef i64 @"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter %5 = alloca [8 x i8], align 8 %6 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %8 = load ptr, ptr %7, align 8, !nonnull !3, !noundef !3 + %8 = load ptr, ptr %7, align 8, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %5) store ptr %3, ptr %5, align 8, !noalias !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %8) ] %9 = icmp eq ptr %6, %8 br i1 %9, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h649fa7f3d27dd9a2E.exit", label %10 @@ -58,9 +59,10 @@ define hidden noundef i64 @"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter %20 = getelementptr inbounds nuw i8, ptr %0, i64 16 %21 = load ptr, ptr %20, align 8, !nonnull !3, !noundef !3 %22 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %23 = load ptr, ptr %22, align 8, !nonnull !3, !noundef !3 + %23 = load ptr, ptr %22, align 8, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %4) store ptr %3, ptr %4, align 8, !noalias !7 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %23) ] %24 = icmp eq ptr %21, %23 br i1 %24, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h649fa7f3d27dd9a2E.exit4", label %25 @@ -93,9 +95,10 @@ define hidden noundef i64 @"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter %5 = alloca [8 x i8], align 8 %6 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %8 = load ptr, ptr %7, align 8, !nonnull !3, !noundef !3 + %8 = load ptr, ptr %7, align 8, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %5) store ptr %3, ptr %5, align 8, !noalias !10 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %8) ] %9 = icmp eq ptr %6, %8 br i1 %9, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h9d751ead39484ef2E.exit", label %10 @@ -121,9 +124,10 @@ define hidden noundef i64 @"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter %20 = getelementptr inbounds nuw i8, ptr %0, i64 16 %21 = load ptr, ptr %20, align 8, !nonnull !3, !noundef !3 %22 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %23 = load ptr, ptr %22, align 8, !nonnull !3, !noundef !3 + %23 = load ptr, ptr %22, align 8, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %4) store ptr %3, ptr %4, align 8, !noalias !13 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %23) ] %24 = icmp eq ptr %21, %23 br i1 %24, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h9d751ead39484ef2E.exit4", label %25 @@ -156,9 +160,10 @@ define hidden noundef i64 @"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter %5 = alloca [8 x i8], align 8 %6 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %8 = load ptr, ptr %7, align 8, !nonnull !3, !noundef !3 + %8 = load ptr, ptr %7, align 8, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %5) store ptr %3, ptr %5, align 8, !noalias !16 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %8) ] %9 = icmp eq ptr %6, %8 br i1 %9, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hef43fce312229576E.exit", label %10 @@ -184,9 +189,10 @@ define hidden noundef i64 @"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter %20 = getelementptr inbounds nuw i8, ptr %0, i64 16 %21 = load ptr, ptr %20, align 8, !nonnull !3, !noundef !3 %22 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %23 = load ptr, ptr %22, align 8, !nonnull !3, !noundef !3 + %23 = load ptr, ptr %22, align 8, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %4) store ptr %3, ptr %4, align 8, !noalias !19 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %23) ] %24 = icmp eq ptr %21, %23 br i1 %24, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hef43fce312229576E.exit4", label %25 @@ -307,10 +313,12 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h16389e01dc96481 store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !30 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !30 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.val.i = load ptr, ptr %10, align 8, !noalias !33, !nonnull !3, !noundef !3 %11 = getelementptr inbounds nuw i8, ptr %1, i64 16 %.val1.i = load i64, ptr %11, align 8, !noalias !33, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !36 store i64 %.val1.i, ptr %3, align 8, !noalias !36 call fastcc void @"_ZN71_$LT$core..hash..sip..Hasher$LT$S$GT$$u20$as$u20$core..hash..Hasher$GT$5write17h7ba78031ab13fc7aE"(ptr noalias noundef nonnull align 8 dereferenceable(72) %4, ptr noalias noundef nonnull readonly align 1 %3, i64 noundef 8) @@ -411,6 +419,7 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h1ad0e864dbef2a1 store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !48 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %3, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !48 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] call void @"_ZN97_$LT$tokio_quiche..metrics..labels..QuicInvalidInitialPacketError$u20$as$u20$core..hash..Hash$GT$4hash17he8e12a64870240faE"(ptr noalias noundef nonnull readonly align 1 dereferenceable(1) %1, ptr noalias noundef nonnull align 8 dereferenceable(72) %3) %.sroa.0.0.copyload.i.i = load i64, ptr %3, align 8, !alias.scope !51 %.sroa.10.0.copyload.i.i = load i64, ptr %.sroa.48.0..sroa_idx.i, align 8, !alias.scope !51 @@ -508,10 +517,12 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h1b27a0b97908d3a store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !56 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !56 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.val.i = load ptr, ptr %10, align 8, !noalias !59, !nonnull !3, !noundef !3 %11 = getelementptr inbounds nuw i8, ptr %1, i64 16 %.val1.i = load i64, ptr %11, align 8, !noalias !59, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] call fastcc void @"_ZN71_$LT$core..hash..sip..Hasher$LT$S$GT$$u20$as$u20$core..hash..Hasher$GT$5write17h7ba78031ab13fc7aE"(ptr noalias noundef nonnull align 8 dereferenceable(72) %4, ptr noalias noundef nonnull readonly align 1 %.val.i, i64 noundef %.val1.i) call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !62 store i8 -1, ptr %3, align 1, !noalias !62 @@ -613,9 +624,11 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h349884ae6f8deae store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !81 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !81 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load ptr, ptr %1, align 8, !noalias !84, !nonnull !3, !noundef !3 %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.val1.i = load i64, ptr %10, align 8, !noalias !84, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %11 = getelementptr inbounds nuw i8, ptr %.val.i, i64 16 call fastcc void @"_ZN71_$LT$core..hash..sip..Hasher$LT$S$GT$$u20$as$u20$core..hash..Hasher$GT$5write17h7ba78031ab13fc7aE"(ptr noalias noundef nonnull align 8 dereferenceable(72) %4, ptr noalias noundef nonnull readonly align 1 %11, i64 noundef %.val1.i) call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !87 @@ -720,6 +733,7 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h58a214004060624 store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !104 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %6, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !104 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !107) tail call void @llvm.experimental.noalias.scope.decl(metadata !110) %12 = getelementptr inbounds nuw i8, ptr %1, i64 17 @@ -848,6 +862,7 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h5a0d8effeefcad5 store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !140 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !140 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load i8, ptr %1, align 1, !range !116, !noalias !143, !noundef !3 %10 = zext nneg i8 %.val.i to i64 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !146 @@ -950,6 +965,7 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h655a5ffc4b7255d store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !160 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !160 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load i64, ptr %1, align 8, !noalias !163, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !166 store i64 %.val.i, ptr %3, align 8, !noalias !166 @@ -1051,6 +1067,7 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h6d9fa23c89d4cf3 store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !178 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !178 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load i64, ptr %1, align 8, !noalias !181, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !184 store i64 %.val.i, ptr %3, align 8, !noalias !184 @@ -1152,6 +1169,7 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h867b67c5d795194 store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !196 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !196 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load i64, ptr %1, align 8, !noalias !199, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !202 store i64 %.val.i, ptr %3, align 8, !noalias !202 @@ -1253,9 +1271,11 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h96c975ae2cdab72 store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !212 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !212 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load ptr, ptr %1, align 8, !noalias !215, !nonnull !3, !noundef !3 %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.val1.i = load i64, ptr %10, align 8, !noalias !215, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %11 = getelementptr inbounds nuw i8, ptr %.val.i, i64 16 call fastcc void @"_ZN71_$LT$core..hash..sip..Hasher$LT$S$GT$$u20$as$u20$core..hash..Hasher$GT$5write17h7ba78031ab13fc7aE"(ptr noalias noundef nonnull align 8 dereferenceable(72) %4, ptr noalias noundef nonnull readonly align 1 %11, i64 noundef %.val1.i) call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !218 @@ -1358,6 +1378,7 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h9b0b8cc6f8ab2eb store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !235 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !235 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load i8, ptr %1, align 1, !range !238, !noalias !239, !noundef !3 %10 = zext nneg i8 %.val.i to i64 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !242 @@ -1460,6 +1481,7 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17haf7726d8f37142b store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !256 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !256 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load i8, ptr %1, align 1, !range !259, !noalias !260, !noundef !3 %10 = zext nneg i8 %.val.i to i64 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !263 @@ -1562,9 +1584,11 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17hb5ea6ee04e0a0ab store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !277 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !277 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load ptr, ptr %1, align 8, !noalias !280, !nonnull !3, !noundef !3 %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.val1.i = load i64, ptr %10, align 8, !noalias !280, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %11 = getelementptr inbounds nuw i8, ptr %.val.i, i64 16 call fastcc void @"_ZN71_$LT$core..hash..sip..Hasher$LT$S$GT$$u20$as$u20$core..hash..Hasher$GT$5write17h7ba78031ab13fc7aE"(ptr noalias noundef nonnull align 8 dereferenceable(72) %4, ptr noalias noundef nonnull readonly align 1 %11, i64 noundef %.val1.i) call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !283 @@ -1667,6 +1691,7 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17hb894f5e3cd0868f store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !300 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !300 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load i64, ptr %1, align 8, !noalias !303, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !306 store i64 %.val.i, ptr %3, align 8, !noalias !306 @@ -1768,6 +1793,7 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17hc000e9e36c15750 store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !316 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !316 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load i64, ptr %1, align 8, !noalias !319, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !322 store i64 %.val.i, ptr %3, align 8, !noalias !322 @@ -1869,6 +1895,7 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17hc5a5208e0d7a224 store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !334 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !334 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load i64, ptr %1, align 8, !noalias !337, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !340 store i64 %.val.i, ptr %3, align 8, !noalias !340 @@ -1972,6 +1999,7 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17hf403354d36f8093 store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !352 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %6, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !352 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !355) tail call void @llvm.experimental.noalias.scope.decl(metadata !358) tail call void @llvm.experimental.noalias.scope.decl(metadata !361) @@ -3134,6 +3162,7 @@ _ZN4core4hash3sip9u8to64_le17hdbc674c1681e6e6fE.exit18: ; preds = %91, %93 ; Function Attrs: nonlazybind uwtable define hidden noundef zeroext i1 @"_ZN72_$LT$core..pin..Pin$LT$P$GT$$u20$as$u20$core..future..future..Future$GT$4poll17h7ca37aa47d6afce9E"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %0, ptr noalias noundef align 8 dereferenceable(32) %1) unnamed_addr #0 { %.val = load ptr, ptr %0, align 8, !nonnull !3, !align !27, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %3 = tail call noundef zeroext i1 @"_ZN74_$LT$tokio..time..sleep..Sleep$u20$as$u20$core..future..future..Future$GT$4poll17hae5b2de500a97bfaE"(ptr noundef nonnull align 8 %.val, ptr noalias noundef nonnull align 8 dereferenceable(32) %1) ret i1 %3 } @@ -3176,6 +3205,7 @@ define hidden noundef ptr @"_ZN88_$LT$prometools..serde..top..StructSerializer$u %.val = load ptr, ptr %3, align 8, !nonnull !3, !noundef !3 %21 = getelementptr inbounds nuw i8, ptr %3, i64 8 %.val32 = load i64, ptr %21, align 8, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %22 = getelementptr inbounds nuw i8, ptr %.val, i64 16 %23 = tail call noundef ptr @"_ZN84_$LT$prometools..serde..value..ValueSerializer$u20$as$u20$serde..ser..Serializer$GT$13serialize_str17hd407fed70cb2436eE"(ptr noundef nonnull align 1 %18, ptr noalias noundef nonnull readonly align 8 dereferenceable(80) %20, ptr noalias noundef nonnull readonly align 1 %22, i64 noundef %.val32) br label %24 @@ -3267,6 +3297,7 @@ define hidden noundef ptr @"_ZN88_$LT$prometools..serde..top..StructSerializer$u %.val = load ptr, ptr %21, align 8, !nonnull !3, !noundef !3 %22 = getelementptr inbounds nuw i8, ptr %3, i64 16 %.val32 = load i64, ptr %22, align 8, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %23 = tail call noundef ptr @"_ZN84_$LT$prometools..serde..value..ValueSerializer$u20$as$u20$serde..ser..Serializer$GT$13serialize_str17hd407fed70cb2436eE"(ptr noundef nonnull align 1 %18, ptr noalias noundef nonnull readonly align 8 dereferenceable(80) %20, ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val32) br label %24 @@ -3573,6 +3604,7 @@ define hidden noalias noundef ptr @"_ZN95_$LT$std..io..cursor..Cursor$LT$alloc.. _ZN3std2io6cursor15reserve_and_pad17h6a89407623b28e46E.exit.i: ; preds = %18, %13 %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val9.i = load ptr, ptr %23, align 8, !alias.scope !417, !noalias !424, !nonnull !3, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val9.i) ] %24 = getelementptr inbounds nuw i8, ptr %.val9.i, i64 %.val.i tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %24, ptr nonnull readonly align 1 %1, i64 %2, i1 false), !noalias !414 %25 = add i64 %.val.i, %2 diff --git a/bench/quiche-rs/optimized/f0vxo8kdo04wz5kbvnjzws46n.ll b/bench/quiche-rs/optimized/f0vxo8kdo04wz5kbvnjzws46n.ll index b220ee27b53..677833fdff4 100644 --- a/bench/quiche-rs/optimized/f0vxo8kdo04wz5kbvnjzws46n.ll +++ b/bench/quiche-rs/optimized/f0vxo8kdo04wz5kbvnjzws46n.ll @@ -271,9 +271,10 @@ define hidden noundef i64 @"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter %5 = alloca [8 x i8], align 8 %6 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %8 = load ptr, ptr %7, align 8, !nonnull !3, !noundef !3 + %8 = load ptr, ptr %7, align 8, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %5) store ptr %3, ptr %5, align 8, !noalias !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %8) ] %9 = icmp eq ptr %6, %8 br i1 %9, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h8bb7aaf3d4e5c8bcE.exit", label %10 @@ -299,9 +300,10 @@ define hidden noundef i64 @"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter %20 = getelementptr inbounds nuw i8, ptr %0, i64 16 %21 = load ptr, ptr %20, align 8, !nonnull !3, !noundef !3 %22 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %23 = load ptr, ptr %22, align 8, !nonnull !3, !noundef !3 + %23 = load ptr, ptr %22, align 8, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %4) store ptr %3, ptr %4, align 8, !noalias !7 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %23) ] %24 = icmp eq ptr %21, %23 br i1 %24, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h8bb7aaf3d4e5c8bcE.exit4", label %25 @@ -708,6 +710,7 @@ define internal noundef zeroext i1 @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Displ define hidden { i64, i64 } @"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h36cd24b3ca078315E"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %0, i64 noundef %1, ptr noalias noundef readonly align 8 dereferenceable(16) %2) unnamed_addr #0 { %4 = load ptr, ptr %0, align 8, !nonnull !3, !align !112, !noundef !3 %.val = load ptr, ptr %4, align 8, !nonnull !3, !align !112, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %5 = load ptr, ptr %.val, align 8, !noalias !113, !nonnull !3, !align !112, !noundef !3 %6 = getelementptr inbounds nuw i8, ptr %5, i64 80 %7 = load ptr, ptr %6, align 8, !noalias !113, !nonnull !3, !noundef !3 @@ -869,9 +872,12 @@ define internal fastcc noundef zeroext i1 @"_ZN4core3str7pattern13simd_contains2 27: ; preds = %26 %28 = add i64 %.sroa.9.0.i.us, 1 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %25) ] %29 = getelementptr inbounds nuw i8, ptr %25, i64 %.sroa.9.0.i.us + call void @llvm.assume(i1 true) [ "nonnull"(ptr %12) ] %30 = getelementptr inbounds nuw i8, ptr %12, i64 %.sroa.9.0.i.us %31 = load i8, ptr %29, align 1, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %30) ] %32 = load i8, ptr %30, align 1, !alias.scope !134, !noalias !131, !noundef !3 %.not12.i.us = icmp eq i8 %31, %32 br i1 %.not12.i.us, label %26, label %_ZN4core3str7pattern14small_slice_eq17h93367e4799060334E.exit.thread.loopexit.us @@ -953,10 +959,12 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h93a854afdaeb285 store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !144 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !144 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.val.i = load ptr, ptr %10, align 8, !noalias !147, !nonnull !3, !noundef !3 %11 = getelementptr inbounds nuw i8, ptr %1, i64 16 %.val1.i = load i64, ptr %11, align 8, !noalias !147, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !150 store i64 %.val1.i, ptr %3, align 8, !noalias !150 call fastcc void @"_ZN71_$LT$std..hash..random..DefaultHasher$u20$as$u20$core..hash..Hasher$GT$5write17h16e314fb9560002cE"(ptr noalias noundef nonnull align 8 dereferenceable(72) %4, ptr noalias noundef nonnull readonly align 1 %3, i64 noundef 8) @@ -1058,6 +1066,7 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h97f7ef3dbadfbe6 store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !162 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %5, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !162 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !165 store i64 %2, ptr %4, align 8, !noalias !165 call fastcc void @"_ZN71_$LT$std..hash..random..DefaultHasher$u20$as$u20$core..hash..Hasher$GT$5write17h16e314fb9560002cE"(ptr noalias noundef nonnull align 8 dereferenceable(72) %5, ptr noalias noundef nonnull readonly align 1 %4, i64 noundef 8), !noalias !175 @@ -1159,6 +1168,7 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17hac54f8c4e6feaef store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !181 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !181 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load i64, ptr %1, align 8, !noalias !184, !noundef !3 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !187 store i64 %.val.i, ptr %3, align 8, !noalias !187 @@ -1540,6 +1550,7 @@ define hidden noundef nonnull align 8 ptr @"_ZN61_$LT$serde_json..error..Error$u call void @llvm.lifetime.start.p0(ptr nonnull %4) tail call void @llvm.experimental.noalias.scope.decl(metadata !201) tail call void @llvm.experimental.noalias.scope.decl(metadata !204) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !207 call void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$15try_allocate_in17hf2643b92c386aa41E"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %3, i64 noundef %1, i1 noundef zeroext false, i64 noundef 1, i64 noundef 1), !noalias !207 %5 = load i64, ptr %3, align 8, !range !108, !noalias !207, !noundef !3 @@ -1669,6 +1680,7 @@ define hidden noundef nonnull align 8 ptr @"_ZN62_$LT$serde_json..error..Error$u call void @llvm.lifetime.start.p0(ptr nonnull %4) tail call void @llvm.experimental.noalias.scope.decl(metadata !262) tail call void @llvm.experimental.noalias.scope.decl(metadata !265) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !268 call void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$15try_allocate_in17hf2643b92c386aa41E"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %3, i64 noundef %1, i1 noundef zeroext false, i64 noundef 1, i64 noundef 1), !noalias !268 %5 = load i64, ptr %3, align 8, !range !108, !noalias !268, !noundef !3 @@ -1781,6 +1793,7 @@ define hidden void @"_ZN6quiche9range_buf17RangeBuf$LT$F$GT$9split_off17h98dbeae 15: ; preds = %3 %.val = load ptr, ptr %1, align 8, !nonnull !3, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %16 = atomicrmw add ptr %.val, i64 1 monotonic, align 8 %17 = icmp slt i64 %16, 0 br i1 %17, label %18, label %19 @@ -3175,6 +3188,7 @@ _ZN4core3str7pattern13simd_contains17he2e01193d3743636E.exit.i: ; preds = %250, %93 = add nuw nsw i64 %74, 1 %94 = icmp samesign ne i64 %93, %57 tail call void @llvm.assume(i1 %94) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %90) ] %95 = load i8, ptr %90, align 1, !noalias !448, !noundef !3 %96 = shl nuw nsw i32 %92, 6 %97 = and i8 %95, 63 @@ -3192,6 +3206,7 @@ _ZN4core3str7pattern13simd_contains17he2e01193d3743636E.exit.i: ; preds = %250, %104 = add nuw nsw i64 %74, 2 %105 = icmp samesign ne i64 %104, %57 tail call void @llvm.assume(i1 %105) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %103) ] %106 = load i8, ptr %103, align 1, !noalias !448, !noundef !3 %107 = shl nuw nsw i32 %98, 6 %108 = and i8 %106, 63 @@ -3207,6 +3222,7 @@ _ZN4core3str7pattern13simd_contains17he2e01193d3743636E.exit.i: ; preds = %250, %115 = add nuw nsw i64 %74, 3 %116 = icmp samesign ne i64 %115, %57 tail call void @llvm.assume(i1 %116) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %114) ] %117 = load i8, ptr %114, align 1, !noalias !448, !noundef !3 %118 = shl nuw nsw i32 %92, 18 %119 = and i32 %118, 1835008 @@ -4542,8 +4558,11 @@ define hidden void @_ZN3h3i19encode_header_block17h83321b2f7ae84fbfE(ptr dead_on 76: ; preds = %74 %77 = add i64 %75, 1 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %73) ] %78 = getelementptr inbounds nuw i8, ptr %73, i64 %75 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %67) ] %79 = getelementptr inbounds nuw i8, ptr %67, i64 %75 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %79) ] %.val.i.i.i = load i8, ptr %78, align 1, !noalias !580, !noundef !3 %.val5.i.i.i = load i8, ptr %79, align 1, !noalias !580, !noundef !3 %80 = add i8 %.val5.i.i.i, -65 diff --git a/bench/quinn-rs/optimized/94z0rmq3mlh67s9f6xgkqgoqb.ll b/bench/quinn-rs/optimized/94z0rmq3mlh67s9f6xgkqgoqb.ll index 44c22b01271..e0eedb6daa0 100644 --- a/bench/quinn-rs/optimized/94z0rmq3mlh67s9f6xgkqgoqb.ll +++ b/bench/quinn-rs/optimized/94z0rmq3mlh67s9f6xgkqgoqb.ll @@ -56,6 +56,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %3 = alloca [8 x i8], align 8 %4 = load ptr, ptr %0, align 8, !nonnull !3, !align !4, !noundef !3 %.val = load ptr, ptr %4, align 8, !nonnull !3, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !5 store ptr %.val, ptr %3, align 8, !noalias !5 %5 = call noundef zeroext i1 @"_ZN54_$LT$$BP$const$u20$T$u20$as$u20$core..fmt..Pointer$GT$3fmt17h0f8d257a9ce4c8b8E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %3, ptr noalias noundef nonnull align 8 dereferenceable(24) %1) @@ -67,6 +68,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17hec414442bf54fec9E"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %0, ptr noalias noundef align 8 dereferenceable(24) %1) unnamed_addr #0 { %3 = load ptr, ptr %0, align 8, !nonnull !3, !align !4, !noundef !3 %.val = load ptr, ptr %3, align 8, !nonnull !3, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %4 = getelementptr inbounds nuw i8, ptr %.val, i64 16 %5 = tail call noundef zeroext i1 @"_ZN86_$LT$tokio..runtime..scheduler..current_thread..Handle$u20$as$u20$core..fmt..Debug$GT$3fmt17h89ff6ac5f5a15ff2E"(ptr noundef nonnull align 8 %4, ptr noalias noundef nonnull align 8 dereferenceable(24) %1) ret i1 %5 @@ -380,8 +382,7 @@ define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8buil call void @llvm.lifetime.start.p0(ptr nonnull %4) store ptr %8, ptr %4, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %11 = icmp ne ptr %10, null - call void @llvm.assume(i1 %11) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %10) ] store ptr %10, ptr %3, align 8 %12 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders8DebugMap5entry17hada7ef8221dc89edE(ptr noalias noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 1 %4, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.d16563b45468e483725d44465c1d4f32.7, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.d16563b45468e483725d44465c1d4f32.8) call void @llvm.lifetime.end.p0(ptr nonnull %3) @@ -440,11 +441,13 @@ define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8buil 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 hidden noundef range(i64 0, 1152921504606846976) i64 @_ZN4core4iter8adapters3zip27TrustedRandomAccessNoCoerce4size17h05245f1b60dba1daE(ptr noalias noundef readonly align 8 captures(none) dereferenceable(16) %0) unnamed_addr #1 { %.val = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val1 = load ptr, ptr %2, align 8, !nonnull !3, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %3 = ptrtoint ptr %.val1 to i64 %4 = ptrtoint ptr %.val to i64 %5 = sub nuw i64 %3, %4 @@ -452,11 +455,13 @@ define hidden noundef range(i64 0, 1152921504606846976) i64 @_ZN4core4iter8adapt ret i64 %6 } -; 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 range(i64 0, 256204778801521551) i64 @_ZN4core4iter8adapters3zip27TrustedRandomAccessNoCoerce4size17h3c4fe4c0ac4c4c04E(ptr noalias noundef readonly align 8 captures(none) dereferenceable(16) %0) unnamed_addr #1 { %.val = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val1 = load ptr, ptr %2, align 8, !nonnull !3, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %3 = ptrtoint ptr %.val1 to i64 %4 = ptrtoint ptr %.val to i64 %5 = sub nuw i64 %3, %4 @@ -483,6 +488,7 @@ define hidden void @"_ZN5alloc11collections5btree3map25IntoIter$LT$K$C$V$C$A$GT$ 10: ; preds = %8 %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 8 %.sroa.2.0.copyload.i = load i64, ptr %.sroa.2.0..sroa_idx.i, align 8, !noalias !22 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %9) ] %11 = load ptr, ptr %9, align 8, !noalias !25, !noundef !3 %.not.i.i4.i.i = icmp eq ptr %11, null br i1 %.not.i.i4.i.i, label %"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Dying$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$16deallocating_end17h6423e49bbc7095ceE.exit.i", label %.lr.ph.i.i @@ -642,6 +648,7 @@ define hidden void @"_ZN5alloc11collections5btree3map25IntoIter$LT$K$C$V$C$A$GT$ 10: ; preds = %8 %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 8 %.sroa.2.0.copyload.i = load i64, ptr %.sroa.2.0..sroa_idx.i, align 8, !noalias !58 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %9) ] %11 = load ptr, ptr %9, align 8, !noalias !61, !noundef !3 %.not.i.i4.i.i = icmp eq ptr %11, null br i1 %.not.i.i4.i.i, label %"_ZN5alloc11collections5btree8navigate263_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Dying$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..Edge$GT$$GT$16deallocating_end17hf21932443fedf91cE.exit.i", label %.lr.ph.i.i @@ -1302,7 +1309,7 @@ declare void @llvm.lifetime.end.p0(ptr captures(none)) #9 declare void @llvm.experimental.noalias.scope.decl(metadata) #10 attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #1 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #1 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(read, inaccessiblemem: write, target_mem0: none, target_mem1: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #4 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } diff --git a/bench/raft-rs/optimized/co15qijodcfgouonod77sxo2v.ll b/bench/raft-rs/optimized/co15qijodcfgouonod77sxo2v.ll index 6b12b8d7540..d76830d8ebe 100644 --- a/bench/raft-rs/optimized/co15qijodcfgouonod77sxo2v.ll +++ b/bench/raft-rs/optimized/co15qijodcfgouonod77sxo2v.ll @@ -40,6 +40,7 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: nonlazybind uwtable define hidden void @_ZN3std3env3var17h1aa5320d34507570E(ptr dead_on_unwind noalias noundef writable sret([32 x i8]) align 8 captures(none) dereferenceable(32) %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) unnamed_addr #0 personality ptr @rust_eh_personality { + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] tail call void @_ZN3std3env4_var17hab6bfcdd7c8600aeE(ptr noalias noundef nonnull sret([32 x i8]) align 8 captures(none) dereferenceable(32) %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) ret void } @@ -575,6 +576,7 @@ define hidden void @_ZN5alloc3str17join_generic_copy17ha626a64902a2a2f3E(ptr dea %.val = load ptr, ptr %56, align 8, !nonnull !3, !noundef !3 %57 = getelementptr i8, ptr %1, i64 16 %.val90 = load i64, ptr %57, align 8, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %58 = getelementptr inbounds nuw i8, ptr %.val, i64 %.val90 invoke void @"_ZN132_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$$RF$T$C$core..slice..iter..Iter$LT$T$GT$$GT$$GT$11spec_extend17hf7bf2c8c90fc11c6E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull %.val, ptr noundef nonnull %58, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.248a150cfb6d17530aed19b80d6c6424.26) to label %59 unwind label %49 @@ -625,8 +627,11 @@ define hidden void @_ZN5alloc3str17join_generic_copy17ha626a64902a2a2f3E(ptr dea %.sroa.06.1321 = phi ptr [ %71, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h44bff27bd06e0be4E.exit108" ], [ %63, %.preheader279 ] %.sroa.27.1320 = phi i64 [ %72, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h44bff27bd06e0be4E.exit108" ], [ %64, %.preheader279 ] %.sroa.0153.0319 = phi ptr [ %70, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h44bff27bd06e0be4E.exit108" ], [ %22, %.preheader279 ] - %67 = getelementptr i8, ptr %.sroa.0153.0319, i64 16 - %.val92 = load i64, ptr %67, align 8, !noundef !3 + %67 = getelementptr i8, ptr %.sroa.0153.0319, i64 8 + %.val92 = load ptr, ptr %67, align 8, !nonnull !3, !noundef !3 + %68 = getelementptr i8, ptr %.sroa.0153.0319, i64 16 + %.val92 = load i64, ptr %68, align 8, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val91) ] %.not85 = icmp ugt i64 %.val92, %.sroa.27.1320 br i1 %.not85, label %68, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h44bff27bd06e0be4E.exit108", !prof !37 @@ -635,8 +640,6 @@ define hidden void @_ZN5alloc3str17join_generic_copy17ha626a64902a2a2f3E(ptr dea br label %.invoke "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h44bff27bd06e0be4E.exit108": ; preds = %.lr.ph322 - %69 = getelementptr i8, ptr %.sroa.0153.0319, i64 8 - %.val91 = load ptr, ptr %69, align 8, !nonnull !3, !noundef !3 %70 = getelementptr inbounds nuw i8, ptr %.sroa.0153.0319, i64 24 %71 = getelementptr inbounds nuw i8, ptr %.sroa.06.1321, i64 %.val92 %72 = sub nuw i64 %.sroa.27.1320, %.val92 @@ -653,6 +656,7 @@ define hidden void @_ZN5alloc3str17join_generic_copy17ha626a64902a2a2f3E(ptr dea %.val93 = load ptr, ptr %75, align 8, !nonnull !3, !noundef !3 %76 = getelementptr i8, ptr %.sroa.0154.0314, i64 16 %.val94 = load i64, ptr %76, align 8, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val93) ] %.not81 = icmp eq i64 %.sroa.27.2315, 0 br i1 %.not81, label %77, label %78, !prof !37 @@ -688,6 +692,7 @@ define hidden void @_ZN5alloc3str17join_generic_copy17ha626a64902a2a2f3E(ptr dea %.val95 = load ptr, ptr %87, align 8, !nonnull !3, !noundef !3 %88 = getelementptr i8, ptr %.sroa.0156.0309, i64 16 %.val96 = load i64, ptr %88, align 8, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val95) ] %89 = icmp ugt i64 %.sroa.27.3310, 1 br i1 %89, label %91, label %90, !prof !86 @@ -723,6 +728,7 @@ define hidden void @_ZN5alloc3str17join_generic_copy17ha626a64902a2a2f3E(ptr dea %.val97 = load ptr, ptr %100, align 8, !nonnull !3, !noundef !3 %101 = getelementptr i8, ptr %.sroa.0158.0304, i64 16 %.val98 = load i64, ptr %101, align 8, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val97) ] %102 = icmp ugt i64 %.sroa.27.4305, 2 br i1 %102, label %104, label %103, !prof !86 @@ -757,6 +763,7 @@ define hidden void @_ZN5alloc3str17join_generic_copy17ha626a64902a2a2f3E(ptr dea %.val99 = load ptr, ptr %112, align 8, !nonnull !3, !noundef !3 %113 = getelementptr i8, ptr %.sroa.0160.0301, i64 16 %.val100 = load i64, ptr %113, align 8, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val99) ] %114 = icmp ugt i64 %.sroa.27.5302, 3 br i1 %114, label %116, label %115, !prof !86 @@ -792,6 +799,7 @@ define hidden void @_ZN5alloc3str17join_generic_copy17ha626a64902a2a2f3E(ptr dea %.val101 = load ptr, ptr %125, align 8, !nonnull !3, !noundef !3 %126 = getelementptr i8, ptr %.sroa.0162.0324, i64 16 %.val102 = load i64, ptr %126, align 8, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val101) ] %.not88 = icmp ugt i64 %4, %.sroa.27.0325 br i1 %.not88, label %127, label %128, !prof !37 @@ -801,6 +809,7 @@ define hidden void @_ZN5alloc3str17join_generic_copy17ha626a64902a2a2f3E(ptr dea 128: ; preds = %.lr.ph327 %129 = sub nuw i64 %.sroa.27.0325, %4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.06.0326) ] call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %.sroa.06.0326, ptr nonnull readonly align 1 %3, i64 %4, i1 false), !alias.scope !111 %.not89 = icmp ugt i64 %.val102, %129 br i1 %.not89, label %130, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h44bff27bd06e0be4E.exit148", !prof !37 @@ -810,11 +819,11 @@ define hidden void @_ZN5alloc3str17join_generic_copy17ha626a64902a2a2f3E(ptr dea br label %.invoke .invoke: ; preds = %68, %77, %81, %90, %94, %103, %106, %115, %119, %127, %130 - %.sink.sroa.phi = phi ptr [ %.sink.sroa.gep, %68 ], [ %.sink.sroa.gep391, %77 ], [ %.sink.sroa.gep392, %81 ], [ %.sink.sroa.gep393, %90 ], [ %.sink.sroa.gep394, %94 ], [ %.sink.sroa.gep395, %103 ], [ %.sink.sroa.gep396, %106 ], [ %.sink.sroa.gep397, %115 ], [ %.sink.sroa.gep398, %119 ], [ %.sink.sroa.gep399, %127 ], [ %.sink.sroa.gep400, %130 ] - %.sink.sroa.phi401 = phi ptr [ %.sink.sroa.gep402, %68 ], [ %.sink.sroa.gep403, %77 ], [ %.sink.sroa.gep404, %81 ], [ %.sink.sroa.gep405, %90 ], [ %.sink.sroa.gep406, %94 ], [ %.sink.sroa.gep407, %103 ], [ %.sink.sroa.gep408, %106 ], [ %.sink.sroa.gep409, %115 ], [ %.sink.sroa.gep410, %119 ], [ %.sink.sroa.gep411, %127 ], [ %.sink.sroa.gep412, %130 ] - %.sink.sroa.phi413 = phi ptr [ %.sink.sroa.gep414, %68 ], [ %.sink.sroa.gep415, %77 ], [ %.sink.sroa.gep416, %81 ], [ %.sink.sroa.gep417, %90 ], [ %.sink.sroa.gep418, %94 ], [ %.sink.sroa.gep419, %103 ], [ %.sink.sroa.gep420, %106 ], [ %.sink.sroa.gep421, %115 ], [ %.sink.sroa.gep422, %119 ], [ %.sink.sroa.gep423, %127 ], [ %.sink.sroa.gep424, %130 ] - %.sink.sroa.phi425 = phi ptr [ %.sink.sroa.gep426, %68 ], [ %.sink.sroa.gep427, %77 ], [ %.sink.sroa.gep428, %81 ], [ %.sink.sroa.gep429, %90 ], [ %.sink.sroa.gep430, %94 ], [ %.sink.sroa.gep431, %103 ], [ %.sink.sroa.gep432, %106 ], [ %.sink.sroa.gep433, %115 ], [ %.sink.sroa.gep434, %119 ], [ %.sink.sroa.gep435, %127 ], [ %.sink.sroa.gep436, %130 ] - %.sink = phi ptr [ %17, %68 ], [ %16, %77 ], [ %15, %81 ], [ %14, %90 ], [ %13, %94 ], [ %12, %103 ], [ %11, %106 ], [ %10, %115 ], [ %9, %119 ], [ %8, %127 ], [ %7, %130 ] + %.sink.sroa.phi = phi ptr [ %.sink.sroa.gep, %69 ], [ %.sink.sroa.gep391, %77 ], [ %.sink.sroa.gep392, %81 ], [ %.sink.sroa.gep393, %90 ], [ %.sink.sroa.gep394, %94 ], [ %.sink.sroa.gep395, %103 ], [ %.sink.sroa.gep396, %106 ], [ %.sink.sroa.gep397, %115 ], [ %.sink.sroa.gep398, %119 ], [ %.sink.sroa.gep399, %127 ], [ %.sink.sroa.gep400, %130 ] + %.sink.sroa.phi401 = phi ptr [ %.sink.sroa.gep402, %69 ], [ %.sink.sroa.gep403, %77 ], [ %.sink.sroa.gep404, %81 ], [ %.sink.sroa.gep405, %90 ], [ %.sink.sroa.gep406, %94 ], [ %.sink.sroa.gep407, %103 ], [ %.sink.sroa.gep408, %106 ], [ %.sink.sroa.gep409, %115 ], [ %.sink.sroa.gep410, %119 ], [ %.sink.sroa.gep411, %127 ], [ %.sink.sroa.gep412, %130 ] + %.sink.sroa.phi413 = phi ptr [ %.sink.sroa.gep414, %69 ], [ %.sink.sroa.gep415, %77 ], [ %.sink.sroa.gep416, %81 ], [ %.sink.sroa.gep417, %90 ], [ %.sink.sroa.gep418, %94 ], [ %.sink.sroa.gep419, %103 ], [ %.sink.sroa.gep420, %106 ], [ %.sink.sroa.gep421, %115 ], [ %.sink.sroa.gep422, %119 ], [ %.sink.sroa.gep423, %127 ], [ %.sink.sroa.gep424, %130 ] + %.sink.sroa.phi425 = phi ptr [ %.sink.sroa.gep426, %69 ], [ %.sink.sroa.gep427, %77 ], [ %.sink.sroa.gep428, %81 ], [ %.sink.sroa.gep429, %90 ], [ %.sink.sroa.gep430, %94 ], [ %.sink.sroa.gep431, %103 ], [ %.sink.sroa.gep432, %106 ], [ %.sink.sroa.gep433, %115 ], [ %.sink.sroa.gep434, %119 ], [ %.sink.sroa.gep435, %127 ], [ %.sink.sroa.gep436, %130 ] + %.sink = phi ptr [ %17, %69 ], [ %16, %77 ], [ %15, %81 ], [ %14, %90 ], [ %13, %94 ], [ %12, %103 ], [ %11, %106 ], [ %10, %115 ], [ %9, %119 ], [ %8, %127 ], [ %7, %130 ] store ptr @anon.248a150cfb6d17530aed19b80d6c6424.18, ptr %.sink, align 8 store i64 1, ptr %.sink.sroa.phi, align 8 store ptr null, ptr %.sink.sroa.phi401, align 8 diff --git a/bench/rayon-rs/optimized/3gtpnk30hls61mxx.ll b/bench/rayon-rs/optimized/3gtpnk30hls61mxx.ll index 663dd38b664..f21122cb1b2 100644 --- a/bench/rayon-rs/optimized/3gtpnk30hls61mxx.ll +++ b/bench/rayon-rs/optimized/3gtpnk30hls61mxx.ll @@ -64,7 +64,7 @@ _ZN5rayon3str18find_char_midpoint17h6911442dcb4bfac0E.exit: ; preds = %12, %16 br i1 %23, label %28, label %24 24: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha20072214ca7ea98E.exit.i", %19 - call void @_ZN4core3str16slice_error_fail17hae3b26614aa3049fE(ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2, i64 noundef 0, i64 noundef range(i64 1, 0) %.0.i, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.3d131fa51848d5b1ae8500cd42c0b3a9.1) #6, !noalias !12 + call void @_ZN4core3str16slice_error_fail17hae3b26614aa3049fE(ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2, i64 noundef 0, i64 noundef range(i64 1, 0) %.0.i, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.3d131fa51848d5b1ae8500cd42c0b3a9.1) #7, !noalias !12 unreachable 25: ; preds = %_ZN5rayon3str18find_char_midpoint17h6911442dcb4bfac0E.exit, %_ZN5rayon3str18find_char_midpoint17h6911442dcb4bfac0E.exit.thread @@ -78,6 +78,7 @@ _ZN5rayon3str18find_char_midpoint17h6911442dcb4bfac0E.exit: ; preds = %12, %16 28: ; preds = %19, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha20072214ca7ea98E.exit.i" %29 = getelementptr inbounds i8, ptr %1, i64 %.0.i %30 = sub i64 %2, %.0.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %29) ] store ptr %1, ptr %0, align 8 %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.0.i, ptr %31, align 8 @@ -152,7 +153,7 @@ _ZN5rayon3str18find_char_midpoint17h6911442dcb4bfac0E.exit: ; preds = %14, %18 br i1 %25, label %29, label %26 26: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha20072214ca7ea98E.exit.i", %21 - call void @_ZN4core3str16slice_error_fail17hae3b26614aa3049fE(ptr noalias noundef nonnull readonly align 1 %5, i64 noundef %7, i64 noundef 0, i64 noundef range(i64 1, 0) %.0.i, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.3d131fa51848d5b1ae8500cd42c0b3a9.1) #6, !noalias !24 + call void @_ZN4core3str16slice_error_fail17hae3b26614aa3049fE(ptr noalias noundef nonnull readonly align 1 %5, i64 noundef %7, i64 noundef 0, i64 noundef range(i64 1, 0) %.0.i, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.3d131fa51848d5b1ae8500cd42c0b3a9.1) #7, !noalias !24 unreachable 27: ; preds = %_ZN5rayon3str18find_char_midpoint17h6911442dcb4bfac0E.exit, %_ZN5rayon3str18find_char_midpoint17h6911442dcb4bfac0E.exit.thread @@ -164,6 +165,7 @@ _ZN5rayon3str18find_char_midpoint17h6911442dcb4bfac0E.exit: ; preds = %14, %18 29: ; preds = %21, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha20072214ca7ea98E.exit.i" %30 = getelementptr inbounds i8, ptr %5, i64 %.0.i %31 = sub i64 %7, %.0.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %30) ] %32 = getelementptr inbounds nuw i8, ptr %1, i64 16 %33 = load i64, ptr %32, align 8, !noundef !14 %34 = add i64 %33, %.0.i @@ -242,7 +244,7 @@ _ZN5rayon3str18find_char_midpoint17h6911442dcb4bfac0E.exit: ; preds = %12, %16 br i1 %23, label %28, label %24 24: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha20072214ca7ea98E.exit.i", %19 - call void @_ZN4core3str16slice_error_fail17hae3b26614aa3049fE(ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2, i64 noundef 0, i64 noundef range(i64 1, 0) %.0.i, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.3d131fa51848d5b1ae8500cd42c0b3a9.1) #6, !noalias !34 + call void @_ZN4core3str16slice_error_fail17hae3b26614aa3049fE(ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2, i64 noundef 0, i64 noundef range(i64 1, 0) %.0.i, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.3d131fa51848d5b1ae8500cd42c0b3a9.1) #7, !noalias !34 unreachable 25: ; preds = %_ZN5rayon3str18find_char_midpoint17h6911442dcb4bfac0E.exit, %_ZN5rayon3str18find_char_midpoint17h6911442dcb4bfac0E.exit.thread @@ -256,6 +258,7 @@ _ZN5rayon3str18find_char_midpoint17h6911442dcb4bfac0E.exit: ; preds = %12, %16 28: ; preds = %19, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha20072214ca7ea98E.exit.i" %29 = getelementptr inbounds i8, ptr %1, i64 %.0.i %30 = sub i64 %2, %.0.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %29) ] store ptr %1, ptr %0, align 8 %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.0.i, ptr %31, align 8 @@ -327,7 +330,7 @@ _ZN5rayon3str18find_char_midpoint17h6911442dcb4bfac0E.exit: ; preds = %12, %16 br i1 %23, label %28, label %24 24: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha20072214ca7ea98E.exit.i", %19 - call void @_ZN4core3str16slice_error_fail17hae3b26614aa3049fE(ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2, i64 noundef 0, i64 noundef range(i64 1, 0) %.0.i, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.3d131fa51848d5b1ae8500cd42c0b3a9.1) #6, !noalias !44 + call void @_ZN4core3str16slice_error_fail17hae3b26614aa3049fE(ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2, i64 noundef 0, i64 noundef range(i64 1, 0) %.0.i, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.3d131fa51848d5b1ae8500cd42c0b3a9.1) #7, !noalias !44 unreachable 25: ; preds = %_ZN5rayon3str18find_char_midpoint17h6911442dcb4bfac0E.exit, %_ZN5rayon3str18find_char_midpoint17h6911442dcb4bfac0E.exit.thread @@ -341,6 +344,7 @@ _ZN5rayon3str18find_char_midpoint17h6911442dcb4bfac0E.exit: ; preds = %12, %16 28: ; preds = %19, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha20072214ca7ea98E.exit.i" %29 = getelementptr inbounds i8, ptr %1, i64 %.0.i %30 = sub i64 %2, %.0.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %29) ] store ptr %1, ptr %0, align 8 %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.0.i, ptr %31, align 8 @@ -364,6 +368,9 @@ define void @"_ZN5rayon3str77_$LT$impl$u20$rayon..str..private..Pattern$u20$for$ ret void } +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #2 + ; Function Attrs: cold noreturn nonlazybind uwtable declare void @_ZN4core3str16slice_error_fail17hae3b26614aa3049fE(ptr noalias noundef nonnull readonly align 1, i64 noundef, i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #2 @@ -387,11 +394,12 @@ declare void @llvm.lifetime.end.p0(ptr captures(none)) #5 attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #2 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #4 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #5 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { noreturn } +attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #3 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #5 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #6 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #7 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/rayon-rs/optimized/4ho2e9t13rrkhaa8.ll b/bench/rayon-rs/optimized/4ho2e9t13rrkhaa8.ll index ac804a543f7..c1c1c8567ae 100644 --- a/bench/rayon-rs/optimized/4ho2e9t13rrkhaa8.ll +++ b/bench/rayon-rs/optimized/4ho2e9t13rrkhaa8.ll @@ -14,32 +14,31 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: nonlazybind uwtable define hidden void @"_ZN132_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$$RF$T$C$core..slice..iter..Iter$LT$T$GT$$GT$$GT$11spec_extend17ha43a06245ab7360bE.llvm.10518328448262610784"(ptr noalias noundef align 8 dereferenceable(24) %0, ptr noundef nonnull %1, ptr noundef %2) unnamed_addr #0 { - %4 = icmp ne ptr %2, null - tail call void @llvm.assume(i1 %4) - %5 = ptrtoint ptr %2 to i64 - %6 = ptrtoint ptr %1 to i64 - %7 = sub nuw i64 %5, %6 - %8 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %9 = load i64, ptr %8, align 8, !alias.scope !4, !noundef !7 - %10 = load i64, ptr %0, align 8, !alias.scope !4, !noundef !7 - %11 = sub i64 %10, %9 - %12 = icmp ugt i64 %7, %11 - br i1 %12, label %13, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h9143d68ca1389f62E.llvm.10518328448262610784.exit" - -13: ; preds = %3 - tail call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h006f831228e4b58bE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %9, i64 noundef %7) - %.pre = load i64, ptr %8, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] + %4 = ptrtoint ptr %2 to i64 + %5 = ptrtoint ptr %1 to i64 + %6 = sub nuw i64 %4, %5 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %8 = load i64, ptr %7, align 8, !alias.scope !4, !noundef !7 + %9 = load i64, ptr %0, align 8, !alias.scope !4, !noundef !7 + %10 = sub i64 %9, %8 + %11 = icmp ugt i64 %6, %10 + br i1 %11, label %12, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h9143d68ca1389f62E.llvm.10518328448262610784.exit" + +12: ; preds = %3 + tail call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h006f831228e4b58bE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %8, i64 noundef %6) + %.pre = load i64, ptr %7, align 8 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h9143d68ca1389f62E.llvm.10518328448262610784.exit" -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h9143d68ca1389f62E.llvm.10518328448262610784.exit": ; preds = %3, %13 - %14 = phi i64 [ %9, %3 ], [ %.pre, %13 ] +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h9143d68ca1389f62E.llvm.10518328448262610784.exit": ; preds = %3, %12 + %14 = phi i64 [ %8, %3 ], [ %.pre, %12 ] %15 = getelementptr inbounds nuw i8, ptr %0, i64 8 %16 = load ptr, ptr %15, align 8, !nonnull !7, !noundef !7 %17 = getelementptr inbounds i8, ptr %16, i64 %14 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %17, ptr nonnull align 1 %1, i64 %7, i1 false) - %18 = load i64, ptr %8, align 8, !noundef !7 - %19 = add i64 %18, %7 - store i64 %19, ptr %8, align 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %17, ptr nonnull align 1 %1, i64 %6, i1 false) + %18 = load i64, ptr %7, align 8, !noundef !7 + %19 = add i64 %18, %6 + store i64 %19, ptr %7, align 8 ret void } diff --git a/bench/rayon-rs/optimized/4k8zt5cv4x2jivhi.ll b/bench/rayon-rs/optimized/4k8zt5cv4x2jivhi.ll index 758901c018b..739777aefec 100644 --- a/bench/rayon-rs/optimized/4k8zt5cv4x2jivhi.ll +++ b/bench/rayon-rs/optimized/4k8zt5cv4x2jivhi.ll @@ -61,10 +61,11 @@ define hidden void @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h2c83d87f31 %3 = load i64, ptr %0, align 8, !noundef !4 %4 = and i64 %3, -8 %5 = inttoptr i64 %4 to ptr - %6 = load ptr, ptr %5, align 8, !nonnull !4, !noundef !4 + %6 = load ptr, ptr %5, align 8, !noundef !4 %7 = getelementptr inbounds nuw i8, ptr %5, i64 8 %8 = load i64, ptr %7, align 8, !noundef !4 call void @llvm.lifetime.start.p0(ptr nonnull %2) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %6) ] store ptr %6, ptr %2, align 8 %9 = getelementptr inbounds nuw i8, ptr %2, i64 8 store i64 %8, ptr %9, align 8 @@ -74,11 +75,13 @@ define hidden void @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h2c83d87f31 10: ; preds = %1 %11 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %5) ] call void @__rust_dealloc(ptr noundef nonnull %5, i64 noundef 16, i64 noundef 8) #19 resume { ptr, i32 } %11 "_ZN15crossbeam_epoch5guard5Guard15defer_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h389c90f79e7d37dcE.exit": ; preds = %1 call void @llvm.lifetime.end.p0(ptr nonnull %2) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %5) ] call void @__rust_dealloc(ptr noundef nonnull %5, i64 noundef 16, i64 noundef 8) #19 ret void } @@ -90,10 +93,11 @@ define hidden void @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h94c2fe8421 %4 = load i64, ptr %3, align 8, !noundef !4 %5 = and i64 %4, -8 %6 = inttoptr i64 %5 to ptr - %7 = load ptr, ptr %6, align 8, !nonnull !4, !noundef !4 + %7 = load ptr, ptr %6, align 8, !noundef !4 %8 = getelementptr inbounds nuw i8, ptr %6, i64 8 %9 = load i64, ptr %8, align 8, !noundef !4 call void @llvm.lifetime.start.p0(ptr nonnull %2) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %7) ] store ptr %7, ptr %2, align 8 %10 = getelementptr inbounds nuw i8, ptr %2, i64 8 store i64 %9, ptr %10, align 8 @@ -103,13 +107,17 @@ define hidden void @_ZN15crossbeam_epoch8deferred8Deferred3new4call17h94c2fe8421 11: ; preds = %1 %12 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %6) ] call void @__rust_dealloc(ptr noundef nonnull %6, i64 noundef 16, i64 noundef 8) #19 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %3) ] call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef 8, i64 noundef 8) #19 resume { ptr, i32 } %12 13: ; preds = %1 call void @llvm.lifetime.end.p0(ptr nonnull %2) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %6) ] call void @__rust_dealloc(ptr noundef nonnull %6, i64 noundef 16, i64 noundef 8) #19 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %3) ] call void @__rust_dealloc(ptr noundef nonnull %3, i64 noundef 8, i64 noundef 8) #19 ret void } @@ -803,6 +811,7 @@ _ZN10rayon_core8registry12WorkerThread10wait_until17hfd0b4b8b47e514f2E.exit: ; p 9: ; preds = %8 %10 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %3) ] %11 = load ptr, ptr %3, align 8, !invariant.load !4, !nonnull !4 invoke void %11(ptr noundef nonnull align 1 %2) to label %21 unwind label %12 @@ -810,6 +819,8 @@ _ZN10rayon_core8registry12WorkerThread10wait_until17hfd0b4b8b47e514f2E.exit: ; p 12: ; preds = %9 %13 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %3) ] %14 = getelementptr inbounds nuw i8, ptr %3, i64 8 %15 = load i64, ptr %14, align 8, !range !19, !invariant.load !4 %16 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -824,6 +835,8 @@ _ZN10rayon_core8registry12WorkerThread10wait_until17hfd0b4b8b47e514f2E.exit: ; p br label %.body 21: ; preds = %9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %3) ] %22 = getelementptr inbounds nuw i8, ptr %3, i64 8 %23 = load i64, ptr %22, align 8, !range !19, !invariant.load !4 %24 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -1180,6 +1193,7 @@ define hidden void @_ZN10rayon_core5latch10CountLatch3new17hd2fc7d765e79c2b4E(pt 4: ; preds = %2 %5 = getelementptr inbounds nuw i8, ptr %1, i64 272 %.val.i = load ptr, ptr %5, align 16, !noalias !69, !nonnull !4, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %6 = atomicrmw add ptr %.val.i, i64 1 monotonic, align 8, !noalias !69 %7 = icmp slt i64 %6, 0 br i1 %7, label %8, label %"_ZN68_$LT$alloc..sync..Arc$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hc6f63d21865d5022E.exit.i" @@ -1214,6 +1228,7 @@ define void @_ZN10rayon_core5latch10CountLatch10with_count17h7b8f7be430f1b6bbE(p 5: ; preds = %3 %6 = getelementptr inbounds nuw i8, ptr %2, i64 272 %.val = load ptr, ptr %6, align 16, !nonnull !4, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %7 = atomicrmw add ptr %.val, i64 1 monotonic, align 8 %8 = icmp slt i64 %7, 0 br i1 %8, label %9, label %"_ZN68_$LT$alloc..sync..Arc$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17hc6f63d21865d5022E.exit" diff --git a/bench/re2/optimized/regexp.ll b/bench/re2/optimized/regexp.ll index 078ab1f6e9b..1fff577d3a2 100644 --- a/bench/re2/optimized/regexp.ll +++ b/bench/re2/optimized/regexp.ll @@ -583,16 +583,13 @@ _ZN4absl7debian218container_internal12raw_hash_mapINS1_17FlatHashMapPolicyIPN3re %15 = phi ptr [ %.pre20.i, %if.then.i ], [ %6, %for.body.i.i ] %16 = phi ptr [ %.pre.i, %if.then.i ], [ %2, %for.body.i.i ] %retval.sroa.0.0.i15.i = phi i64 [ %call33.i.i, %if.then.i ], [ %and.i.i.i, %for.body.i.i ] - %cmp.not.i.i = icmp eq ptr %16, null - br i1 %cmp.not.i.i, label %cond.false.i.i, label %land.lhs.true.i.i - -land.lhs.true.i.i: ; preds = %_ZN4absl7debian218container_internal12raw_hash_mapINS1_17FlatHashMapPolicyIPN3re26RegexpEiEENS1_6HashEqIS6_vE4HashENS9_2EqESaISt4pairIKS6_iEEE16try_emplace_implIS6_JEEESC_INS1_12raw_hash_setIS7_SA_SB_SF_E8iteratorEbEOT_DpOT0_.exit %add.ptr.i4.i = getelementptr inbounds i8, ptr %16, i64 %retval.sroa.0.0.i15.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %add.ptr.i4.i) ] %17 = load i8, ptr %add.ptr.i4.i, align 1 %cmp.i.i.i = icmp sgt i8 %17, -1 br i1 %cmp.i.i.i, label %_ZNK4absl7debian218container_internal12raw_hash_setINS1_17FlatHashMapPolicyIPN3re26RegexpEiEENS1_6HashEqIS6_vE4HashENS9_2EqESaISt4pairIKS6_iEEE8iteratordeEv.exit, label %cond.false.i.i -cond.false.i.i: ; preds = %land.lhs.true.i.i, %_ZN4absl7debian218container_internal12raw_hash_mapINS1_17FlatHashMapPolicyIPN3re26RegexpEiEENS1_6HashEqIS6_vE4HashENS9_2EqESaISt4pairIKS6_iEEE16try_emplace_implIS6_JEEESC_INS1_12raw_hash_setIS7_SA_SB_SF_E8iteratorEbEOT_DpOT0_.exit +cond.false.i.i: ; preds = %_ZN4absl7debian218container_internal12raw_hash_mapINS1_17FlatHashMapPolicyIPN3re26RegexpEiEENS1_6HashEqIS6_vE4HashENS9_2EqESaISt4pairIKS6_iEEE16try_emplace_implIS6_JEEESC_INS1_12raw_hash_setIS7_SA_SB_SF_E8iteratorEbEOT_DpOT0_.exit tail call void @llvm.trap() unreachable @@ -859,10 +856,7 @@ if.end29.i.i: ; preds = %for.end.i.i _ZN4absl7debian218container_internal12raw_hash_setINS1_17FlatHashMapPolicyIPN3re26RegexpEiEENS1_6HashEqIS6_vE4HashENS9_2EqESaISt4pairIKS6_iEEE4findIS6_EENSG_8iteratorERKT_.exit: ; preds = %for.body.i.i %add.ptr.i.i.i = getelementptr inbounds i8, ptr %2, i64 %and.i.i.i - %cmp.i.i = icmp eq ptr %2, null - br i1 %cmp.i.i, label %return, label %lor.lhs.false.i.i - -lor.lhs.false.i.i: ; preds = %_ZN4absl7debian218container_internal12raw_hash_setINS1_17FlatHashMapPolicyIPN3re26RegexpEiEENS1_6HashEqIS6_vE4HashENS9_2EqESaISt4pairIKS6_iEEE4findIS6_EENSG_8iteratorERKT_.exit + call void @llvm.assume(i1 true) [ "nonnull"(ptr %add.ptr.i.i.i) ] %13 = load i8, ptr %add.ptr.i.i.i, align 1 %cmp.i.i.i = icmp sgt i8 %13, -1 br i1 %cmp.i.i.i, label %_ZN4absl7debian218container_internal12AssertIsFullEPa.exit.i, label %cond.false.i.i @@ -921,8 +915,8 @@ _ZN4absl7debian218container_internal12raw_hash_setINS1_17FlatHashMapPolicyIPN3re store i64 %add16.i.i, ptr %settings_.i.i.i, align 8 br label %return -return: ; preds = %for.end.i.i, %_ZN4absl7debian218container_internal12raw_hash_setINS1_17FlatHashMapPolicyIPN3re26RegexpEiEENS1_6HashEqIS6_vE4HashENS9_2EqESaISt4pairIKS6_iEEE4findIS6_EENSG_8iteratorERKT_.exit, %_ZN4absl7debian218container_internal12raw_hash_setINS1_17FlatHashMapPolicyIPN3re26RegexpEiEENS1_6HashEqIS6_vE4HashENS9_2EqESaISt4pairIKS6_iEEE5eraseENSG_8iteratorE.exit - %retval.0 = phi i64 [ 1, %_ZN4absl7debian218container_internal12raw_hash_setINS1_17FlatHashMapPolicyIPN3re26RegexpEiEENS1_6HashEqIS6_vE4HashENS9_2EqESaISt4pairIKS6_iEEE5eraseENSG_8iteratorE.exit ], [ 0, %_ZN4absl7debian218container_internal12raw_hash_setINS1_17FlatHashMapPolicyIPN3re26RegexpEiEENS1_6HashEqIS6_vE4HashENS9_2EqESaISt4pairIKS6_iEEE4findIS6_EENSG_8iteratorERKT_.exit ], [ 0, %for.end.i.i ] +return: ; preds = %for.end.i.i, %_ZN4absl7debian218container_internal12raw_hash_setINS1_17FlatHashMapPolicyIPN3re26RegexpEiEENS1_6HashEqIS6_vE4HashENS9_2EqESaISt4pairIKS6_iEEE5eraseENSG_8iteratorE.exit + %retval.0 = phi i64 [ 1, %_ZN4absl7debian218container_internal12raw_hash_setINS1_17FlatHashMapPolicyIPN3re26RegexpEiEENS1_6HashEqIS6_vE4HashENS9_2EqESaISt4pairIKS6_iEEE5eraseENSG_8iteratorE.exit ], [ 0, %for.end.i.i ] ret i64 %retval.0 } @@ -1122,16 +1116,13 @@ _ZN4absl7debian218container_internal12raw_hash_mapINS1_17FlatHashMapPolicyIPN3re %24 = phi ptr [ %.pre20.i.i, %call33.i.i.i.noexc ], [ %16, %for.body.i.i.i ] %25 = phi ptr [ %.pre.i.i, %call33.i.i.i.noexc ], [ %12, %for.body.i.i.i ] %retval.sroa.0.0.i15.i.i = phi i64 [ %call33.i.i.i46, %call33.i.i.i.noexc ], [ %and.i.i.i.i, %for.body.i.i.i ] - %cmp.not.i.i.i = icmp eq ptr %25, null - br i1 %cmp.not.i.i.i, label %cond.false.i.i.i, label %land.lhs.true.i.i.i - -land.lhs.true.i.i.i: ; preds = %_ZN4absl7debian218container_internal12raw_hash_mapINS1_17FlatHashMapPolicyIPN3re26RegexpEiEENS1_6HashEqIS6_vE4HashENS9_2EqESaISt4pairIKS6_iEEE16try_emplace_implIS6_JEEESC_INS1_12raw_hash_setIS7_SA_SB_SF_E8iteratorEbEOT_DpOT0_.exit.i %add.ptr.i4.i.i = getelementptr inbounds i8, ptr %25, i64 %retval.sroa.0.0.i15.i.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %add.ptr.i4.i.i) ] %26 = load i8, ptr %add.ptr.i4.i.i, align 1 %cmp.i.i.i.i = icmp sgt i8 %26, -1 br i1 %cmp.i.i.i.i, label %invoke.cont3.i, label %cond.false.i.i.i -cond.false.i.i.i: ; preds = %land.lhs.true.i.i.i, %_ZN4absl7debian218container_internal12raw_hash_mapINS1_17FlatHashMapPolicyIPN3re26RegexpEiEENS1_6HashEqIS6_vE4HashENS9_2EqESaISt4pairIKS6_iEEE16try_emplace_implIS6_JEEESC_INS1_12raw_hash_setIS7_SA_SB_SF_E8iteratorEbEOT_DpOT0_.exit.i +cond.false.i.i.i: ; preds = %_ZN4absl7debian218container_internal12raw_hash_mapINS1_17FlatHashMapPolicyIPN3re26RegexpEiEENS1_6HashEqIS6_vE4HashENS9_2EqESaISt4pairIKS6_iEEE16try_emplace_implIS6_JEEESC_INS1_12raw_hash_setIS7_SA_SB_SF_E8iteratorEbEOT_DpOT0_.exit.i call void @llvm.trap() unreachable diff --git a/bench/regex-rs/optimized/3q3ceyp25m3d5uar.ll b/bench/regex-rs/optimized/3q3ceyp25m3d5uar.ll index f90b006805d..f3dc5902fa8 100644 --- a/bench/regex-rs/optimized/3q3ceyp25m3d5uar.ll +++ b/bench/regex-rs/optimized/3q3ceyp25m3d5uar.ll @@ -56,6 +56,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !11 call void @_ZN4core3fmt9Formatter10debug_list17h1616b9a56f5bf339E(ptr noalias noundef nonnull sret({ { ptr, i8, i8, [6 x i8] } }) align 8 captures(none) dereferenceable(16) %4, ptr noalias noundef nonnull align 8 dereferenceable(64) %1), !noalias !15 %8 = getelementptr inbounds i8, ptr %5, i64 %7 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %8) ] %9 = icmp eq i64 %7, 0 br i1 %9, label %"_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..Debug$GT$3fmt17h4613671e274b1b60E.exit", label %.lr.ph.i.i @@ -380,6 +381,7 @@ define void @"_ZN80_$LT$alloc..borrow..Cow$LT$str$GT$$u20$as$u20$regex..regex..s %4 = getelementptr inbounds nuw i8, ptr %1, i64 16 %.val1 = load i64, ptr %4, align 8, !alias.scope !95, !noundef !4 tail call void @llvm.experimental.noalias.scope.decl(metadata !100) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %5 = getelementptr inbounds i8, ptr %.val, i64 %.val1 %6 = tail call noundef ptr @_ZN4core4sync6atomic11atomic_load17h705600093d4b62c0E.llvm.15639794734364571569(ptr noundef nonnull @_ZN6memchr4arch6x86_646memchr10memchr_raw2FN17h16b0072529d6b791E, i8 noundef 0), !noalias !103 %7 = tail call { i64, ptr } %6(i8 noundef 36, ptr noundef nonnull readonly align 1 %.val, ptr noundef nonnull readonly %5), !noalias !110 @@ -420,6 +422,7 @@ define void @"_ZN84_$LT$$RF$alloc..borrow..Cow$LT$str$GT$$u20$as$u20$regex..rege define void @"_ZN84_$LT$$RF$alloc..borrow..Cow$LT$str$GT$$u20$as$u20$regex..regex..string..Replacer$GT$12no_expansion17hec643b6db3fd41ccE"(ptr noalias noundef writeonly sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) initializes((0, 8)) %0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %1) unnamed_addr #0 personality ptr @rust_eh_personality { %.val = load ptr, ptr %1, align 8, !nonnull !4, !align !19, !noundef !4 tail call void @llvm.experimental.noalias.scope.decl(metadata !121) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %.pn1.in.i.i.i.i = getelementptr inbounds nuw i8, ptr %.val, i64 16 %.pn1.i.i.i.i = load i64, ptr %.pn1.in.i.i.i.i, align 8, !alias.scope !124, !noalias !121, !noundef !4 %.pn3.in.i.i.i.i = getelementptr inbounds nuw i8, ptr %.val, i64 8 @@ -546,7 +549,7 @@ define void @_ZN5regex8regexset6string8RegexSet5empty17h8a63d6d8e63de650E(ptr no 9: ; preds = %7 %10 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #13, !noalias !173 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #14, !noalias !173 unreachable common.resume: ; preds = %.body, %7 @@ -595,7 +598,7 @@ _ZN5regex8builders6string15RegexSetBuilder5build17hffb6420d29d8fa68E.exit: ; pre 20: ; preds = %17 %21 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #13, !noalias !181 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #14, !noalias !181 unreachable 22: ; preds = %_ZN5regex8builders6string15RegexSetBuilder5build17hffb6420d29d8fa68E.exit @@ -874,6 +877,9 @@ declare noundef zeroext i1 @_ZN4core3fmt9Formatter9write_fmt17heacf5dba8c40948fE ; Function Attrs: nonlazybind uwtable declare void @"_ZN67_$LT$regex..builders..Builder$u20$as$u20$core..default..Default$GT$7default17hea6e786948e237ffE"(ptr noalias 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 captures(none) dereferenceable(160)) unnamed_addr #0 +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #8 + ; Function Attrs: nonlazybind uwtable declare hidden void @_ZN5regex8builders7Builder17build_many_string17hec7233caad9e5720E(ptr noalias noundef sret({ ptr, [3 x i64] }) align 8 captures(none) dereferenceable(32), ptr noalias noundef readonly align 8 dereferenceable(160)) unnamed_addr #0 @@ -924,13 +930,14 @@ attributes #4 = { mustprogress nofree norecurse nosync nounwind nonlazybind will attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #6 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #7 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #8 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #9 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #8 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #9 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #10 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #11 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } -attributes #12 = { cold } -attributes #13 = { cold noreturn nounwind } -attributes #14 = { noreturn } +attributes #11 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #12 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } +attributes #13 = { cold } +attributes #14 = { cold noreturn nounwind } +attributes #15 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/regex-rs/optimized/4p7mqoqm6h8kkgbs.ll b/bench/regex-rs/optimized/4p7mqoqm6h8kkgbs.ll index 307e56b1a19..f4baa006b36 100644 --- a/bench/regex-rs/optimized/4p7mqoqm6h8kkgbs.ll +++ b/bench/regex-rs/optimized/4p7mqoqm6h8kkgbs.ll @@ -87,32 +87,30 @@ define hidden { i32, ptr } @"_ZN119_$LT$regex_automata..util..primitives..WithPa ; Function Attrs: nonlazybind uwtable define hidden void @"_ZN14regex_automata4util10primitives26WithPatternIDIter$LT$I$GT$3new17h164bef4487389f03E"(ptr noalias noundef writeonly sret({ { ptr, ptr }, { i64, i64 } }) align 8 captures(none) dereferenceable(32) initializes((0, 32)) %0, ptr noundef nonnull %1, ptr noundef %2) unnamed_addr #1 personality ptr @rust_eh_personality { - %4 = icmp ne ptr %2, null - tail call void @llvm.assume(i1 %4) - %5 = ptrtoint ptr %2 to i64 - %6 = ptrtoint ptr %1 to i64 - %7 = sub nuw i64 %5, %6 - %8 = udiv exact i64 %7, 24 - %9 = tail call { i64, i64 } @_ZN14regex_automata4util10primitives9PatternID4iter17h1c20efa7ef38c895E(i64 noundef %8) - %10 = extractvalue { i64, i64 } %9, 0 - %11 = extractvalue { i64, i64 } %9, 1 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] + %4 = ptrtoint ptr %2 to i64 + %5 = ptrtoint ptr %1 to i64 + %6 = sub nuw i64 %4, %5 + %7 = udiv exact i64 %6, 24 + %8 = tail call { i64, i64 } @_ZN14regex_automata4util10primitives9PatternID4iter17h1c20efa7ef38c895E(i64 noundef %7) + %9 = extractvalue { i64, i64 } %8, 0 + %10 = extractvalue { i64, i64 } %9, 1 store ptr %1, ptr %0, align 8 %12 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %2, ptr %12, align 8 %13 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i64 %9, ptr %12, align 8 + %13 = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %10, ptr %13, align 8 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i64 %11, ptr %14, align 8 ret void } ; Function Attrs: nonlazybind uwtable define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList7entries17h638ebb64988d77fbE(ptr noalias noundef returned align 8 dereferenceable(16) %0, ptr noundef nonnull %1, ptr noundef readnone captures(address) %2) unnamed_addr #1 personality ptr @rust_eh_personality { %4 = alloca ptr, align 8 - %5 = icmp ne ptr %2, null - tail call void @llvm.assume(i1 %5) - %6 = icmp eq ptr %1, %2 - br i1 %6, label %._crit_edge, label %.lr.ph + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] + %5 = icmp eq ptr %1, %2 + br i1 %5, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.lr.ph, %3 ret ptr %0 @@ -131,10 +129,9 @@ define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8buil ; Function Attrs: nonlazybind uwtable define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList7entries17hb2f13a246b67dd1fE(ptr noalias noundef returned align 8 dereferenceable(16) %0, ptr noundef nonnull %1, ptr noundef readnone captures(address) %2) unnamed_addr #1 personality ptr @rust_eh_personality { %4 = alloca ptr, align 8 - %5 = icmp ne ptr %2, null - tail call void @llvm.assume(i1 %5) - %6 = icmp eq ptr %1, %2 - br i1 %6, label %._crit_edge, label %.lr.ph + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] + %5 = icmp eq ptr %1, %2 + br i1 %5, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.lr.ph, %3 ret ptr %0 diff --git a/bench/regex-rs/optimized/gbxkn0az9l87aop.ll b/bench/regex-rs/optimized/gbxkn0az9l87aop.ll index 9bc6c8f86bf..340430026ae 100644 --- a/bench/regex-rs/optimized/gbxkn0az9l87aop.ll +++ b/bench/regex-rs/optimized/gbxkn0az9l87aop.ll @@ -495,6 +495,7 @@ _ZN4core5slice4sort20provide_sorted_batch17h0d7e2195e03eaf6dE.exit: ; preds = %. br label %.invoke217 173: ; preds = %170 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.pre154) ] %174 = getelementptr inbounds { i64, i64 }, ptr %.pre154, i64 %.sroa.4.0.i52.ph %175 = load i64, ptr %174, align 8, !noundef !14 %176 = getelementptr inbounds nuw i8, ptr %174, i64 8 @@ -526,6 +527,7 @@ _ZN4core5slice4sort20provide_sorted_batch17h0d7e2195e03eaf6dE.exit: ; preds = %. unreachable 182: ; preds = %173 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.pre154) ] %183 = getelementptr inbounds { i64, i64 }, ptr %.pre154, i64 %178 %184 = load i64, ptr %183, align 8, !noundef !14 %185 = getelementptr inbounds nuw i8, ptr %183, i64 8 @@ -618,6 +620,7 @@ _ZN4core5slice4sort20provide_sorted_batch17h0d7e2195e03eaf6dE.exit: ; preds = %. %.02818.i = phi ptr [ %231, %.lr.ph.i63 ], [ %199, %207 ] %.sroa.0.117.i = phi ptr [ %234, %.lr.ph.i63 ], [ %14, %207 ] %.sroa.18.216.i = phi ptr [ %229, %.lr.ph.i63 ], [ %198, %207 ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.117.i) ] %.028.val.i = load i64, ptr %.02818.i, align 8, !alias.scope !100, !noalias !101, !noundef !14 %224 = getelementptr i8, ptr %.02818.i, i64 24 %.028.val35.i = load i64, ptr %224, align 8, !alias.scope !86 @@ -648,7 +651,8 @@ _ZN4core5slice4sort20provide_sorted_batch17h0d7e2195e03eaf6dE.exit: ; preds = %. %237 = ptrtoint ptr %.sroa.10.1.i to i64 %238 = ptrtoint ptr %.sroa.0.0.i62 to i64 %239 = sub nuw i64 %237, %238 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %.sroa.18.1.i, ptr align 8 %.sroa.0.0.i62, i64 %239, i1 false), !noalias !102 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %.sroa.18.1.i, ptr nonnull align 8 %.sroa.0.0.i62, i64 %239, i1 false), !noalias !102 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.pre154) ] %240 = add i64 %184, %175 store i64 %240, ptr %183, align 8 store i64 %177, ptr %185, align 8 @@ -1214,6 +1218,7 @@ _ZN4core5slice4sort20provide_sorted_batch17hfd7792d2e61b7fbbE.exit: ; preds = %. br label %.invoke221 175: ; preds = %172 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.pre155) ] %176 = getelementptr inbounds { i64, i64 }, ptr %.pre155, i64 %.sroa.4.0.i52.ph %177 = load i64, ptr %176, align 8, !noundef !14 %178 = getelementptr inbounds nuw i8, ptr %176, i64 8 @@ -1245,6 +1250,7 @@ _ZN4core5slice4sort20provide_sorted_batch17hfd7792d2e61b7fbbE.exit: ; preds = %. unreachable 184: ; preds = %175 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.pre155) ] %185 = getelementptr inbounds { i64, i64 }, ptr %.pre155, i64 %180 %186 = load i64, ptr %185, align 8, !noundef !14 %187 = getelementptr inbounds nuw i8, ptr %185, i64 8 @@ -1349,6 +1355,7 @@ _ZN4core3ops8function5FnMut8call_mut17hc471639bb37c37ffE.exit.thread.i: ; preds %.02829.i = phi ptr [ %239, %_ZN4core3ops8function5FnMut8call_mut17hc471639bb37c37ffE.exit43.thread.i ], [ %201, %209 ] %.sroa.0.128.i = phi ptr [ %242, %_ZN4core3ops8function5FnMut8call_mut17hc471639bb37c37ffE.exit43.thread.i ], [ %13, %209 ] %.sroa.18.227.i = phi ptr [ %237, %_ZN4core3ops8function5FnMut8call_mut17hc471639bb37c37ffE.exit43.thread.i ], [ %200, %209 ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.128.i) ] %.028.val.i = load i8, ptr %.02829.i, align 1, !alias.scope !183, !noundef !14 %.val.i65 = load i8, ptr %.sroa.0.128.i, align 1, !noalias !183, !noundef !14 %230 = icmp ult i8 %.028.val.i, %.val.i65 @@ -1390,7 +1397,8 @@ _ZN4core3ops8function5FnMut8call_mut17hc471639bb37c37ffE.exit43.thread.i: ; pred %245 = ptrtoint ptr %.sroa.10.1.i to i64 %246 = ptrtoint ptr %.sroa.0.0.i63 to i64 %247 = sub nuw i64 %245, %246 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %.sroa.18.1.i, ptr align 1 %.sroa.0.0.i63, i64 %247, i1 false), !noalias !186 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %.sroa.18.1.i, ptr nonnull align 1 %.sroa.0.0.i63, i64 %247, i1 false), !noalias !186 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.pre155) ] %248 = add i64 %186, %177 store i64 %248, ptr %185, align 8 store i64 %179, ptr %187, align 8 @@ -1960,6 +1968,7 @@ _ZN4core5slice4sort20provide_sorted_batch17h43f6f797a37a05edE.exit: ; preds = %. br label %.invoke221 175: ; preds = %172 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.pre155) ] %176 = getelementptr inbounds { i64, i64 }, ptr %.pre155, i64 %.sroa.4.0.i52.ph %177 = load i64, ptr %176, align 8, !noundef !14 %178 = getelementptr inbounds nuw i8, ptr %176, i64 8 @@ -1991,6 +2000,7 @@ _ZN4core5slice4sort20provide_sorted_batch17h43f6f797a37a05edE.exit: ; preds = %. unreachable 184: ; preds = %175 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.pre155) ] %185 = getelementptr inbounds { i64, i64 }, ptr %.pre155, i64 %180 %186 = load i64, ptr %185, align 8, !noundef !14 %187 = getelementptr inbounds nuw i8, ptr %185, i64 8 @@ -2095,6 +2105,7 @@ _ZN4core3ops8function5FnMut8call_mut17h903e79e8964f77fcE.exit.thread.i: ; preds %.02829.i = phi ptr [ %239, %_ZN4core3ops8function5FnMut8call_mut17h903e79e8964f77fcE.exit43.thread.i ], [ %201, %209 ] %.sroa.0.128.i = phi ptr [ %242, %_ZN4core3ops8function5FnMut8call_mut17h903e79e8964f77fcE.exit43.thread.i ], [ %14, %209 ] %.sroa.18.227.i = phi ptr [ %237, %_ZN4core3ops8function5FnMut8call_mut17h903e79e8964f77fcE.exit43.thread.i ], [ %200, %209 ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.128.i) ] %.028.val.i = load i32, ptr %.02829.i, align 4, !range !216, !alias.scope !255, !noundef !14 %.val.i65 = load i32, ptr %.sroa.0.128.i, align 4, !range !216, !noalias !255, !noundef !14 %230 = icmp samesign ult i32 %.028.val.i, %.val.i65 @@ -2136,7 +2147,8 @@ _ZN4core3ops8function5FnMut8call_mut17h903e79e8964f77fcE.exit43.thread.i: ; pred %245 = ptrtoint ptr %.sroa.10.1.i to i64 %246 = ptrtoint ptr %.sroa.0.0.i63 to i64 %247 = sub nuw i64 %245, %246 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.18.1.i, ptr align 4 %.sroa.0.0.i63, i64 %247, i1 false), !noalias !258 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %.sroa.18.1.i, ptr nonnull align 4 %.sroa.0.0.i63, i64 %247, i1 false), !noalias !258 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.pre155) ] %248 = add i64 %186, %177 store i64 %248, ptr %185, align 8 store i64 %179, ptr %187, align 8 diff --git a/bench/ring-rs/optimized/1ifa1mnaz8f3h6jb.ll b/bench/ring-rs/optimized/1ifa1mnaz8f3h6jb.ll index 7697d3166cf..654be86b186 100644 --- a/bench/ring-rs/optimized/1ifa1mnaz8f3h6jb.ll +++ b/bench/ring-rs/optimized/1ifa1mnaz8f3h6jb.ll @@ -1190,6 +1190,8 @@ default.unreachable: ; preds = %_ZN4ring4aead5block _ZN4ring4aead3aes3Key13encrypt_block17hb516baeef254fb70E.exit: ; preds = %86, %87, %88 call void @llvm.lifetime.start.p0(ptr nonnull %21) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %21, ptr noundef nonnull align 1 dereferenceable(16) %.sroa.087, i64 16, i1 false) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %21) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.i) ] br label %89 89: ; preds = %89, %_ZN4ring4aead3aes3Key13encrypt_block17hb516baeef254fb70E.exit @@ -1197,6 +1199,7 @@ _ZN4ring4aead3aes3Key13encrypt_block17hb516baeef254fb70E.exit: ; preds = %86, %8 %90 = add nuw nsw i64 %.sroa.8.013.i, 1 %91 = getelementptr inbounds nuw i8, ptr %21, i64 %.sroa.8.013.i %92 = getelementptr inbounds nuw i8, ptr %.sroa.0.i, i64 %.sroa.8.013.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %92) ] %93 = load i8, ptr %92, align 1, !noundef !4 %94 = load i8, ptr %91, align 1, !alias.scope !156, !noalias !159, !noundef !4 %95 = xor i8 %94, %93 @@ -2400,27 +2403,34 @@ _ZN4ring6digest7Context6finish17ha820283835585a81E.exit: ; preds = %.split11 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17heb3913cfe867f2eeE.exit": ; preds = %_ZN4ring6digest7Context6finish17ha820283835585a81E.exit + call void @llvm.assume(i1 true) [ "nonnull"(ptr %26) ] %.0.sroa.speculated.i.i.i13 = call noundef i64 @llvm.umin.i64(i64 %.0.sroa.speculated.i.i.i, i64 %39) %.not = icmp eq i64 %39, 0 - br i1 %.not, label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit.thread", label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit" + br i1 %.not, label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit.thread", label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit.lr.ph" + +"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit.lr.ph": ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17heb3913cfe867f2eeE.exit" + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.045) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %20) ] + br label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit" + +"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit": ; preds = %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit.lr.ph", %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit" + %.sroa.826.044 = phi i64 [ 0, %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit.lr.ph" ], [ %44, %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit" ] + %42 = getelementptr inbounds i8, ptr %.sroa.0.045, i64 %.sroa.826.044 + %43 = getelementptr inbounds i8, ptr %20, i64 %.sroa.826.044 + %44 = add nuw i64 %.sroa.826.044, 1 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %43) ] + %45 = load i8, ptr %43, align 1, !noundef !4 + %46 = load i8, ptr %42, align 1, !noundef !4 + %47 = xor i8 %46, %45 + store i8 %47, ptr %42, align 1 + %exitcond.not = icmp eq i64 %44, %.0.sroa.speculated.i.i.i13 + br i1 %exitcond.not, label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit.thread", label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit" "_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit.thread": ; preds = %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit", %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17heb3913cfe867f2eeE.exit" call void @llvm.lifetime.end.p0(ptr nonnull %10) call void @llvm.lifetime.end.p0(ptr nonnull %12) %42 = icmp eq i64 %27, 0 br i1 %42, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$10chunks_mut17hbb007d906e555d86E.exit._crit_edge", label %"_ZN96_$LT$core..slice..iter..ChunksMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17heddf377f49250887E.exit.i" - -"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit": ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17heb3913cfe867f2eeE.exit", %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit" - %.sroa.826.044 = phi i64 [ %45, %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit" ], [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17heb3913cfe867f2eeE.exit" ] - %43 = getelementptr inbounds i8, ptr %.sroa.0.045, i64 %.sroa.826.044 - %44 = getelementptr inbounds i8, ptr %20, i64 %.sroa.826.044 - %45 = add nuw i64 %.sroa.826.044, 1 - %46 = load i8, ptr %44, align 1, !noundef !4 - %47 = load i8, ptr %43, align 1, !noundef !4 - %48 = xor i8 %47, %46 - store i8 %48, ptr %43, align 1 - %exitcond.not = icmp eq i64 %45, %.0.sroa.speculated.i.i.i13 - br i1 %exitcond.not, label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit.thread", label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h43496d6b3ada6ba2E.exit" } ; Function Attrs: nonlazybind uwtable diff --git a/bench/ring-rs/optimized/d308x8t7de9vep4.ll b/bench/ring-rs/optimized/d308x8t7de9vep4.ll index 13e1a8928a7..e9ddf1422b9 100644 --- a/bench/ring-rs/optimized/d308x8t7de9vep4.ll +++ b/bench/ring-rs/optimized/d308x8t7de9vep4.ll @@ -53,7 +53,7 @@ define internal void @_ZN4core3ops8function6FnOnce9call_once17h13bc0bb185bac1d6E br i1 %6, label %7, label %"_ZN4ring2ec7suite_b3ops4p38417PUBLIC_SCALAR_OPS28_$u7b$$u7b$closure$u7d$$u7d$17h11b51cb358a6c563E.exit" 7: ; preds = %2 - tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.a08cbc0fed5954eef0273385eb99bffc.58.llvm.8403485840513791397, i64 noundef 52, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.59.llvm.8403485840513791397) #10, !noalias !8 + tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.a08cbc0fed5954eef0273385eb99bffc.58.llvm.8403485840513791397, i64 noundef 52, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.59.llvm.8403485840513791397) #11, !noalias !8 unreachable "_ZN4ring2ec7suite_b3ops4p38417PUBLIC_SCALAR_OPS28_$u7b$$u7b$closure$u7d$$u7d$17h11b51cb358a6c563E.exit": ; preds = %2 @@ -133,6 +133,7 @@ define hidden { i8, i8 } @"_ZN4core4iter8adapters8peekable17Peekable$LT$I$GT$7ne 18: ; preds = %16 %.val = load ptr, ptr %1, align 8, !nonnull !67, !align !71, !noundef !67 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %.val2.i = load i8, ptr %.val, align 1, !noundef !67 %19 = icmp eq i8 %.sroa.6.0, %.val2.i br i1 %19, label %22, label %20 @@ -195,6 +196,7 @@ define hidden { i8, i8 } @"_ZN4core4iter8adapters8peekable17Peekable$LT$I$GT$7ne 18: ; preds = %16 %.val = load ptr, ptr %1, align 8, !nonnull !67, !align !71, !noundef !67 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %.val2.i = load i8, ptr %.val, align 1, !noundef !67 %19 = icmp eq i8 %.sroa.6.0, %.val2.i br i1 %19, label %22, label %20 @@ -942,7 +944,7 @@ _ZN9untrusted6reader6Reader4peek17hd8bdc58f301fd15eE.exit.thread.i: ; preds = %_ 47: ; preds = %44 %48 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #12, !noalias !137 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #13, !noalias !137 unreachable common.resume: ; preds = %61, %44 @@ -1191,7 +1193,7 @@ _ZN9untrusted6reader6Reader4peek17hd8bdc58f301fd15eE.exit.thread.i: ; preds = %_ 47: ; preds = %44 %48 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #12, !noalias !158 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #13, !noalias !158 unreachable common.resume: ; preds = %61, %44 @@ -1440,7 +1442,7 @@ _ZN9untrusted6reader6Reader4peek17hd8bdc58f301fd15eE.exit.thread.i: ; preds = %_ 47: ; preds = %44 %48 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #12, !noalias !178 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #13, !noalias !178 unreachable common.resume: ; preds = %61, %44 @@ -1689,7 +1691,7 @@ _ZN9untrusted6reader6Reader4peek17hd8bdc58f301fd15eE.exit.thread.i: ; preds = %_ 47: ; preds = %44 %48 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #12, !noalias !198 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #13, !noalias !198 unreachable common.resume: ; preds = %61, %44 @@ -2024,7 +2026,7 @@ define hidden void @"_ZN4ring10arithmetic6bigint7modulus21OwnedModulus$LT$M$GT$8 br i1 %10, label %11, label %_ZN4ring4limb19unstripped_be_bytes17h0b353aee86fe7c5cE.exit 11: ; preds = %2 - tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.459a524322d1240f21a5a0b37f1bf450.18.llvm.9292951165861561203, i64 noundef 43, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.459a524322d1240f21a5a0b37f1bf450.19.llvm.9292951165861561203) #10, !noalias !233 + tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.459a524322d1240f21a5a0b37f1bf450.18.llvm.9292951165861561203, i64 noundef 43, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.459a524322d1240f21a5a0b37f1bf450.19.llvm.9292951165861561203) #11, !noalias !233 unreachable _ZN4ring4limb19unstripped_be_bytes17h0b353aee86fe7c5cE.exit: ; preds = %2 @@ -3072,6 +3074,9 @@ declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr no ; Function Attrs: cold noreturn nounwind nonlazybind uwtable declare void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() unnamed_addr #6 +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #7 + ; Function Attrs: nonlazybind uwtable declare hidden { ptr, i64 } @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16into_boxed_slice17h74bbbcbcd4e8da8dE"(ptr noalias noundef align 8 captures(none) dereferenceable(24)) unnamed_addr #1 @@ -3167,11 +3172,12 @@ attributes #4 = { nonlazybind "target-cpu"="x86-64" } attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #6 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #7 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #8 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #8 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: write) } attributes #9 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #10 = { noreturn } -attributes #11 = { cold } -attributes #12 = { cold noreturn nounwind } +attributes #10 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #11 = { noreturn } +attributes #12 = { cold } +attributes #13 = { cold noreturn nounwind } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/ripgrep-rs/optimized/5ckxrdy9v0i8g3uf.ll b/bench/ripgrep-rs/optimized/5ckxrdy9v0i8g3uf.ll index 52d4bc2e511..94bf396ff4c 100644 --- a/bench/ripgrep-rs/optimized/5ckxrdy9v0i8g3uf.ll +++ b/bench/ripgrep-rs/optimized/5ckxrdy9v0i8g3uf.ll @@ -170,9 +170,11 @@ define hidden { i64, i64 } @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$16bina br i1 %.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %3) ] %.val4.i = load ptr, ptr %3, align 8, !nonnull !5, !align !29, !noundef !5 %5 = getelementptr inbounds nuw i8, ptr %3, i64 8 %.val5.i = load i64, ptr %5, align 8, !noundef !5 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val4.i) ] br label %7 ._crit_edge: ; preds = %20, %4 @@ -193,6 +195,8 @@ define hidden { i64, i64 } @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$16bina %.val23 = load ptr, ptr %11, align 8, !nonnull !5, !align !29, !noundef !5 %12 = getelementptr i8, ptr %11, i64 8 %.val24 = load i64, ptr %12, align 8, !noundef !5 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val23) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val23) ] %13 = sub i64 %.val24, %.val5.i %..i.i.i.i = tail call i64 @llvm.umin.i64(i64 %.val24, i64 %.val5.i) %14 = tail call i32 @memcmp(ptr nonnull readonly align 1 %.val23, ptr nonnull readonly align 1 %.val4.i, i64 %..i.i.i.i), !alias.scope !40 @@ -228,9 +232,11 @@ define hidden { i64, i64 } @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$20bina br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i .lr.ph.i: ; preds = %3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] %.val4.i.i = load ptr, ptr %2, align 8, !alias.scope !50, !noalias !47, !nonnull !5, !align !29, !noundef !5 %4 = getelementptr inbounds nuw i8, ptr %2, i64 8 %.val5.i.i = load i64, ptr %4, align 8, !alias.scope !50, !noalias !47, !noundef !5 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val4.i.i) ] br label %6 ._crit_edge.i: ; preds = %17, %3 @@ -251,6 +257,8 @@ define hidden { i64, i64 } @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$20bina %.val23.i = load ptr, ptr %10, align 8, !alias.scope !47, !noalias !50, !nonnull !5, !align !29, !noundef !5 %11 = getelementptr i8, ptr %10, i64 8 %.val24.i = load i64, ptr %11, align 8, !alias.scope !47, !noalias !50, !noundef !5 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val23.i) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val23.i) ] %12 = sub i64 %.val24.i, %.val5.i.i %..i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %.val24.i, i64 %.val5.i.i) %13 = tail call i32 @memcmp(ptr nonnull readonly align 1 %.val23.i, ptr nonnull readonly align 1 %.val4.i.i, i64 %..i.i.i.i.i), !alias.scope !52, !noalias !59 @@ -316,6 +324,7 @@ define hidden void @"_ZN4core6result19Result$LT$T$C$E$GT$3map17h6a87aff857aa28b1 define hidden { ptr, i64 } @_ZN12grep_printer17hyperlink_aliases4find17h74de6dce8637fe14E(ptr noalias noundef nonnull readonly align 1 captures(none) %0, i64 noundef %1) unnamed_addr #5 personality ptr @rust_eh_personality { tail call void @llvm.experimental.noalias.scope.decl(metadata !61) tail call void @llvm.experimental.noalias.scope.decl(metadata !64) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] br label %3 3: ; preds = %14, %2 @@ -330,6 +339,8 @@ define hidden { ptr, i64 } @_ZN12grep_printer17hyperlink_aliases4find17h74de6dce %.val23.i.i = load ptr, ptr %7, align 8, !alias.scope !67, !noalias !68, !nonnull !5, !align !29, !noundef !5 %8 = getelementptr i8, ptr %7, i64 8 %.val24.i.i = load i64, ptr %8, align 8, !alias.scope !67, !noalias !68, !noundef !5 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val23.i.i) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val23.i.i) ] %9 = sub i64 %.val24.i.i, %1 %..i.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %.val24.i.i, i64 %1) %10 = tail call i32 @memcmp(ptr nonnull readonly align 1 %.val23.i.i, ptr nonnull readonly align 1 %0, i64 %..i.i.i.i.i.i), !alias.scope !71, !noalias !78 diff --git a/bench/rocksdb/optimized/arena_wrapped_db_iter.ll b/bench/rocksdb/optimized/arena_wrapped_db_iter.ll index 62ac30a1d21..9140527220b 100644 --- a/bench/rocksdb/optimized/arena_wrapped_db_iter.ll +++ b/bench/rocksdb/optimized/arena_wrapped_db_iter.ll @@ -2258,23 +2258,22 @@ define linkonce_odr void @_ZN7rocksdb18ArenaWrappedDBIter18SetIterUnderDBIterEPN %4 = load ptr, ptr %3, align 8, !tbaa !17 %5 = getelementptr inbounds nuw i8, ptr %4, i64 88 store ptr %1, ptr %5, align 8, !tbaa !290 - %6 = icmp ne ptr %1, null - tail call void @llvm.assume(i1 %6) - %7 = load ptr, ptr %1, align 8, !tbaa !95 - %8 = getelementptr inbounds nuw i8, ptr %7, i64 24 - %9 = load ptr, ptr %8, align 8 - %10 = tail call noundef zeroext i1 %9(ptr noundef nonnull align 8 dereferenceable(40) %1) - %11 = getelementptr inbounds nuw i8, ptr %4, i64 120 - %12 = zext i1 %10 to i8 - store i8 %12, ptr %11, align 8, !tbaa !361 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] + %6 = load ptr, ptr %1, align 8, !tbaa !95 + %7 = getelementptr inbounds nuw i8, ptr %6, i64 24 + %8 = load ptr, ptr %7, align 8 + %9 = tail call noundef zeroext i1 %8(ptr noundef nonnull align 8 dereferenceable(40) %1) + %10 = getelementptr inbounds nuw i8, ptr %4, i64 120 + %11 = zext i1 %9 to i8 + store i8 %11, ptr %10, align 8, !tbaa !361 %.pre2.i = load ptr, ptr %5, align 8, !tbaa !290 - br i1 %10, label %13, label %_ZN7rocksdb6DBIter7SetIterEPNS_20InternalIteratorBaseINS_5SliceEEE.exit + br i1 %9, label %13, label %_ZN7rocksdb6DBIter7SetIterEPNS_20InternalIteratorBaseINS_5SliceEEE.exit 13: ; preds = %2 %14 = load ptr, ptr %.pre2.i, align 8, !tbaa !95 %15 = getelementptr inbounds nuw i8, ptr %14, i64 88 %16 = load ptr, ptr %15, align 8 - %17 = tail call { ptr, i64 } %16(ptr noundef nonnull align 8 dereferenceable(40) %.pre2.i) + %17 = tail call { ptr, i64 } %15(ptr noundef nonnull align 8 dereferenceable(40) %.pre2.i) %18 = extractvalue { ptr, i64 } %17, 0 %19 = extractvalue { ptr, i64 } %17, 1 %20 = getelementptr inbounds nuw i8, ptr %4, i64 96 @@ -2289,12 +2288,12 @@ define linkonce_odr void @_ZN7rocksdb18ArenaWrappedDBIter18SetIterUnderDBIterEPN br label %_ZN7rocksdb6DBIter7SetIterEPNS_20InternalIteratorBaseINS_5SliceEEE.exit _ZN7rocksdb6DBIter7SetIterEPNS_20InternalIteratorBaseINS_5SliceEEE.exit: ; preds = %2, %13 - %23 = phi ptr [ %.pre.i, %13 ], [ %.pre2.i, %2 ] + %23 = phi ptr [ %.pre.i, %12 ], [ %.pre2.i, %2 ] %24 = getelementptr inbounds nuw i8, ptr %4, i64 984 %25 = load ptr, ptr %23, align 8, !tbaa !95 %26 = getelementptr inbounds nuw i8, ptr %25, i64 152 %27 = load ptr, ptr %26, align 8 - tail call void %27(ptr noundef nonnull align 8 dereferenceable(40) %23, ptr noundef nonnull %24) + tail call void %26(ptr noundef nonnull align 8 dereferenceable(40) %23, ptr noundef nonnull %24) ret void } diff --git a/bench/ropey-rs/optimized/30mvp109esc0xeg6.ll b/bench/ropey-rs/optimized/30mvp109esc0xeg6.ll index abd5590ca1f..16b6882f323 100644 --- a/bench/ropey-rs/optimized/30mvp109esc0xeg6.ll +++ b/bench/ropey-rs/optimized/30mvp109esc0xeg6.ll @@ -110,6 +110,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %.val = load ptr, ptr %5, align 8, !nonnull !4, !align !15, !noundef !4 %6 = getelementptr i8, ptr %5, i64 8 %.val1 = load i64, ptr %6, align 8, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !16 call void @_ZN4core3fmt9Formatter10debug_list17h6fd145ef502d86b6E(ptr noalias noundef nonnull sret([16 x i8]) align 8 captures(none) dereferenceable(16) %4, ptr noalias noundef nonnull align 8 dereferenceable(64) %1), !noalias !22 %.idx.i.i = shl nsw i64 %.val1, 3 @@ -146,6 +147,7 @@ define internal noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug %4 = alloca [8 x i8], align 8 %5 = load ptr, ptr %0, align 8, !nonnull !4, !align !15, !noundef !4 %.val = load ptr, ptr %5, align 8, !nonnull !4, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %6 = getelementptr inbounds nuw i8, ptr %.val, i64 16 tail call void @llvm.experimental.noalias.scope.decl(metadata !26) %7 = load i8, ptr %6, align 8, !range !29, !alias.scope !26, !noalias !30, !noundef !4 @@ -290,10 +292,9 @@ define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8buil ; Function Attrs: nonlazybind uwtable define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList7entries17hd97c7bde1f7a3dd2E(ptr noalias noundef returned align 8 dereferenceable(16) %0, ptr noundef nonnull %1, ptr noundef readnone captures(address) %2) unnamed_addr #6 personality ptr @rust_eh_personality { %4 = alloca [8 x i8], align 8 - %5 = icmp ne ptr %2, null - tail call void @llvm.assume(i1 %5) - %6 = icmp eq ptr %1, %2 - br i1 %6, label %._crit_edge, label %.lr.ph + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] + %5 = icmp eq ptr %1, %2 + br i1 %5, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.lr.ph, %3 ret ptr %0 diff --git a/bench/ropey-rs/optimized/3dnc959gvadodw9w.ll b/bench/ropey-rs/optimized/3dnc959gvadodw9w.ll index 9f02b38e49f..69369f7d712 100644 --- a/bench/ropey-rs/optimized/3dnc959gvadodw9w.ll +++ b/bench/ropey-rs/optimized/3dnc959gvadodw9w.ll @@ -244,6 +244,7 @@ define hidden void @"_ZN4core3ptr44drop_in_place$LT$ropey..tree..node..Node$GT$1 "_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17ha53c611e89e7adbdE.llvm.10316259052761615454.exit.i.i.i.i": ; preds = %5 %11 = getelementptr inbounds nuw i8, ptr %0, i64 24 %12 = load ptr, ptr %11, align 8, !alias.scope !97, !nonnull !4, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %12) ] tail call void @__rust_dealloc(ptr noundef nonnull %12, i64 noundef %7, i64 noundef 1) #18, !noalias !101 br label %"_ZN4core3ptr53drop_in_place$LT$ropey..tree..node_text..NodeText$GT$17h06903e8b80578e21E.exit" @@ -265,6 +266,7 @@ define hidden void @"_ZN4core3ptr44drop_in_place$LT$ropey..tree..node..Node$GT$1 %19 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.idx.i.i.i = shl nuw nsw i64 %16, 3 %20 = getelementptr inbounds nuw i8, ptr %19, i64 %.idx.i.i.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %19) ] %21 = icmp eq i8 %15, 0 br i1 %21, label %"_ZN4core3ptr53drop_in_place$LT$ropey..tree..node_text..NodeText$GT$17h06903e8b80578e21E.exit", label %.lr.ph.i.i.i @@ -390,6 +392,7 @@ define hidden void @"_ZN4core3ptr53drop_in_place$LT$ropey..tree..node_text..Node "_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17ha53c611e89e7adbdE.llvm.10316259052761615454.exit.i.i.i": ; preds = %1 %7 = getelementptr inbounds nuw i8, ptr %0, i64 16 %8 = load ptr, ptr %7, align 8, !alias.scope !186, !nonnull !4, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %8) ] tail call void @__rust_dealloc(ptr noundef nonnull %8, i64 noundef %4, i64 noundef 1) #18, !noalias !190 br label %"_ZN4core3ptr67drop_in_place$LT$ropey..tree..node_text..inner..NodeSmallString$GT$17h76f674562ae8b056E.exit" @@ -414,6 +417,7 @@ define hidden void @"_ZN4core3ptr61drop_in_place$LT$ropey..tree..node_children.. "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h435e5dd35a2eaf23E.llvm.10316259052761615454.exit.i.i": ; preds = %1 %.idx.i.i = shl nuw nsw i64 %4, 3 %7 = getelementptr inbounds nuw i8, ptr %0, i64 %.idx.i.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] %8 = icmp eq i8 %3, 0 br i1 %8, label %"_ZN4core3ptr76drop_in_place$LT$ropey..tree..node_children..inner..NodeChildrenInternal$GT$17haf21cb8a7decc8feE.exit", label %.lr.ph.i.i @@ -457,6 +461,7 @@ define hidden void @"_ZN4core3ptr67drop_in_place$LT$ropey..tree..node_text..inne "_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17ha53c611e89e7adbdE.llvm.10316259052761615454.exit.i.i": ; preds = %1 %7 = getelementptr inbounds nuw i8, ptr %0, i64 16 %8 = load ptr, ptr %7, align 8, !alias.scope !213, !nonnull !4, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %8) ] tail call void @__rust_dealloc(ptr noundef nonnull %8, i64 noundef %4, i64 noundef 1) #18, !noalias !217 br label %"_ZN4core3ptr90drop_in_place$LT$smallvec..SmallVec$LT$ropey..tree..node_text..inner..BackingArray$GT$$GT$17h042faa891899c314E.exit" @@ -532,6 +537,7 @@ define hidden void @"_ZN4core3ptr73drop_in_place$LT$alloc..sync..ArcInner$LT$rop "_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17ha53c611e89e7adbdE.llvm.10316259052761615454.exit.i.i.i.i.i": ; preds = %6 %12 = getelementptr inbounds nuw i8, ptr %0, i64 40 %13 = load ptr, ptr %12, align 8, !alias.scope !245, !nonnull !4, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %13) ] tail call void @__rust_dealloc(ptr noundef nonnull %13, i64 noundef %8, i64 noundef 1) #18, !noalias !249 br label %"_ZN4core3ptr44drop_in_place$LT$ropey..tree..node..Node$GT$17h20cd6a5fa0832ca3E.llvm.10316259052761615454.exit" @@ -553,6 +559,7 @@ define hidden void @"_ZN4core3ptr73drop_in_place$LT$alloc..sync..ArcInner$LT$rop %20 = getelementptr inbounds nuw i8, ptr %0, i64 24 %.idx.i.i.i.i = shl nuw nsw i64 %17, 3 %21 = getelementptr inbounds nuw i8, ptr %20, i64 %.idx.i.i.i.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %20) ] %22 = icmp eq i8 %16, 0 br i1 %22, label %"_ZN4core3ptr44drop_in_place$LT$ropey..tree..node..Node$GT$17h20cd6a5fa0832ca3E.llvm.10316259052761615454.exit", label %.lr.ph.i.i.i.i @@ -593,6 +600,7 @@ define hidden void @"_ZN4core3ptr76drop_in_place$LT$ropey..tree..node_children.. "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h435e5dd35a2eaf23E.llvm.10316259052761615454.exit.i": ; preds = %1 %.idx.i = shl nuw nsw i64 %4, 3 %7 = getelementptr inbounds nuw i8, ptr %0, i64 %.idx.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] %8 = icmp eq i8 %3, 0 br i1 %8, label %"_ZN97_$LT$ropey..tree..node_children..inner..NodeChildrenInternal$u20$as$u20$core..ops..drop..Drop$GT$4drop17h0810109c904f8a5fE.exit", label %.lr.ph.i @@ -699,6 +707,7 @@ define hidden void @"_ZN4core3ptr90drop_in_place$LT$smallvec..SmallVec$LT$ropey. "_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17ha53c611e89e7adbdE.llvm.10316259052761615454.exit.i": ; preds = %1 %7 = getelementptr inbounds nuw i8, ptr %0, i64 16 %8 = load ptr, ptr %7, align 8, !alias.scope !289, !nonnull !4, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %8) ] tail call void @__rust_dealloc(ptr noundef nonnull %8, i64 noundef %4, i64 noundef 1) #18, !noalias !295 br label %"_ZN69_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hba1f0457f5a4ef8cE.llvm.10316259052761615454.exit" @@ -933,20 +942,18 @@ define hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hd0 ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(inaccessiblemem: write) uwtable define hidden { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$17from_raw_parts_in17h31a3f1e3234e71fdE.llvm.10316259052761615454"(ptr noundef %0, i64 noundef %1) unnamed_addr #9 { - %3 = icmp ne ptr %0, null - tail call void @llvm.assume(i1 %3) - %4 = insertvalue { i64, ptr } poison, i64 %1, 0 - %5 = insertvalue { i64, ptr } %4, ptr %0, 1 - ret { i64, ptr } %5 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] + %3 = insertvalue { i64, ptr } poison, i64 %1, 0 + %4 = insertvalue { i64, ptr } %3, ptr %0, 1 + ret { i64, ptr } %4 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(inaccessiblemem: write) uwtable define hidden { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$17from_raw_parts_in17h8277551db2175a1dE.llvm.10316259052761615454"(ptr noundef %0, i64 noundef %1) unnamed_addr #9 { - %3 = icmp ne ptr %0, null - tail call void @llvm.assume(i1 %3) - %4 = insertvalue { i64, ptr } poison, i64 %1, 0 - %5 = insertvalue { i64, ptr } %4, ptr %0, 1 - ret { i64, ptr } %5 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] + %3 = insertvalue { i64, ptr } poison, i64 %1, 0 + %4 = insertvalue { i64, ptr } %3, ptr %0, 1 + ret { i64, ptr } %4 } ; Function Attrs: inlinehint nounwind nonlazybind uwtable @@ -982,6 +989,7 @@ define hidden void @"_ZN69_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops. "_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17ha53c611e89e7adbdE.llvm.10316259052761615454.exit": ; preds = %1 %7 = getelementptr inbounds nuw i8, ptr %0, i64 16 %8 = load ptr, ptr %7, align 8, !nonnull !4, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %8) ] tail call void @__rust_dealloc(ptr noundef nonnull %8, i64 noundef %4, i64 noundef 1) #18, !noalias !364 br label %9 @@ -1070,6 +1078,7 @@ define hidden void @"_ZN69_$LT$smallvec..SmallVec$LT$A$GT$$u20$as$u20$core..ops. %35 = getelementptr inbounds nuw i8, ptr %0, i64 8 %36 = load i64, ptr %35, align 8, !noundef !4 call void @llvm.lifetime.start.p0(ptr nonnull %3) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %34) ] store i64 %5, ptr %3, align 8 %37 = getelementptr inbounds nuw i8, ptr %3, i64 8 store ptr %34, ptr %37, align 8 @@ -1323,6 +1332,7 @@ define void @"_ZN97_$LT$ropey..tree..node_children..inner..NodeChildrenInternal$ "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h435e5dd35a2eaf23E.llvm.10316259052761615454.exit": ; preds = %1 %.idx = shl nuw nsw i64 %4, 3 %7 = getelementptr inbounds nuw i8, ptr %0, i64 %.idx + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] %8 = icmp eq i8 %3, 0 br i1 %8, label %._crit_edge, label %.lr.ph diff --git a/bench/ropey-rs/optimized/598mb8dcqw4tyfm.ll b/bench/ropey-rs/optimized/598mb8dcqw4tyfm.ll index e444d8c832b..1797453364f 100644 --- a/bench/ropey-rs/optimized/598mb8dcqw4tyfm.ll +++ b/bench/ropey-rs/optimized/598mb8dcqw4tyfm.ll @@ -66,6 +66,7 @@ define internal fastcc void @"_ZN4core3ptr44drop_in_place$LT$ropey..tree..node.. %16 = getelementptr inbounds nuw i8, ptr %0, i64 16 %17 = load i64, ptr %16, align 8, !alias.scope !18, !noundef !5 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !18 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %15) ] store i64 %10, ptr %4, align 8, !noalias !18 %18 = getelementptr inbounds nuw i8, ptr %4, i64 8 store ptr %15, ptr %18, align 8, !noalias !18 @@ -161,6 +162,7 @@ define internal fastcc noundef nonnull align 8 dereferenceable(1008) ptr @"_ZN5a store i64 1, ptr %20, align 8 %23 = getelementptr inbounds nuw i8, ptr %20, i64 8 store i64 1, ptr %23, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %20) ] store ptr %20, ptr %6, align 8 %24 = load ptr, ptr %0, align 8, !nonnull !5, !noundef !5 %25 = getelementptr inbounds nuw i8, ptr %24, i64 16 @@ -185,6 +187,7 @@ define internal fastcc noundef nonnull align 8 dereferenceable(1008) ptr @"_ZN5a %32 = load i64, ptr %31, align 8, !noalias !45, !noundef !5 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !45 %33 = getelementptr inbounds i8, ptr %30, i64 %32 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %30) ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !51 %34 = getelementptr inbounds nuw i8, ptr %3, i64 992 store i64 0, ptr %34, align 8, !alias.scope !54, !noalias !51 @@ -261,6 +264,7 @@ define internal fastcc noundef nonnull align 8 dereferenceable(1008) ptr @"_ZN5a store i64 1, ptr %55, align 8 %59 = getelementptr inbounds nuw i8, ptr %55, i64 8 store i64 1, ptr %59, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %55) ] %60 = getelementptr inbounds nuw i8, ptr %55, i64 16 %61 = getelementptr inbounds nuw i8, ptr %11, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1008) %60, ptr noundef nonnull align 8 dereferenceable(1008) %61, i64 1008, i1 false) @@ -1175,6 +1179,7 @@ _ZN5ropey4tree4node4Node9text_info17h9289799a1c03cf13E.exit: ; preds = %37, %_ZN %111 = getelementptr inbounds nuw i8, ptr %96, i64 16 %112 = load i64, ptr %111, align 8, !alias.scope !240, !noundef !5 call void @llvm.lifetime.start.p0(ptr nonnull %11), !noalias !240 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %110) ] store i64 %105, ptr %11, align 8, !noalias !240 %113 = getelementptr inbounds nuw i8, ptr %11, i64 8 store ptr %110, ptr %113, align 8, !noalias !240 @@ -1470,6 +1475,7 @@ _ZN5ropey4tree4node4Node9text_info17h9289799a1c03cf13E.exit73: ; preds = %_ZN5ro %212 = getelementptr inbounds nuw i8, ptr %197, i64 16 %213 = load i64, ptr %212, align 8, !alias.scope !292, !noundef !5 call void @llvm.lifetime.start.p0(ptr nonnull %7), !noalias !292 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %211) ] store i64 %206, ptr %7, align 8, !noalias !292 %214 = getelementptr inbounds nuw i8, ptr %7, i64 8 store ptr %211, ptr %214, align 8, !noalias !292 @@ -1911,6 +1917,7 @@ _ZN5ropey4tree4node4Node9text_info17h9289799a1c03cf13E.exit100.thread: ; preds = store i64 %.lcssa6.i.i93, ptr %156, align 8, !alias.scope !395, !noalias !396 call void @llvm.lifetime.start.p0(ptr nonnull %17) store i64 0, ptr %17, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %126) ] %159 = getelementptr inbounds nuw i8, ptr %126, i64 16 call void @llvm.lifetime.start.p0(ptr nonnull %12) br label %167 @@ -1922,6 +1929,7 @@ _ZN5ropey4tree4node4Node9text_info17h9289799a1c03cf13E.exit100: ; preds = %.noex %160 = trunc nuw i8 %.pre413 to i1 call void @llvm.lifetime.start.p0(ptr nonnull %17) store i64 0, ptr %17, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.pre) ] %161 = getelementptr inbounds nuw i8, ptr %.val.pre, i64 16 call void @llvm.lifetime.start.p0(ptr nonnull %12) tail call void @llvm.experimental.noalias.scope.decl(metadata !397) @@ -1983,6 +1991,7 @@ _ZN5ropey4tree4node4Node9text_info17h9289799a1c03cf13E.exit.i.i: ; preds = %.lr. br i1 %.not.i.i101, label %_ZN5ropey4rope4Rope8get_char17h296e029f71685c1fE.exit.thread5.i, label %181 181: ; preds = %_ZN5ropey4tree4node4Node9text_info17h9289799a1c03cf13E.exit.i.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val460) ] call void @llvm.lifetime.start.p0(ptr nonnull %8), !noalias !413 tail call void @llvm.experimental.noalias.scope.decl(metadata !418) %182 = load i8, ptr %179, align 8, !range !4, !alias.scope !418, !noalias !421, !noundef !5 @@ -2252,6 +2261,7 @@ _ZN11str_indices5chars16to_byte_idx_impl17h0e1ffa1c9b40da34E.exit.i.i: ; preds = %308 = add nsw i64 %.sroa.0.4.i.i.i, 1 %309 = icmp ne i64 %308, %196 tail call void @llvm.assume(i1 %309) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %305) ] %310 = load i8, ptr %305, align 1, !noalias !443, !noundef !5 %311 = shl nuw nsw i32 %307, 6 %312 = and i8 %310, 63 @@ -2269,6 +2279,7 @@ _ZN11str_indices5chars16to_byte_idx_impl17h0e1ffa1c9b40da34E.exit.i.i: ; preds = %319 = add nsw i64 %.sroa.0.4.i.i.i, 2 %320 = icmp ne i64 %319, %196 tail call void @llvm.assume(i1 %320) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %318) ] %321 = load i8, ptr %318, align 1, !noalias !443, !noundef !5 %322 = shl nuw nsw i32 %313, 6 %323 = and i8 %321, 63 @@ -2284,6 +2295,7 @@ _ZN11str_indices5chars16to_byte_idx_impl17h0e1ffa1c9b40da34E.exit.i.i: ; preds = %330 = add nsw i64 %.sroa.0.4.i.i.i, 3 %331 = icmp ne i64 %330, %196 tail call void @llvm.assume(i1 %331) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %329) ] %332 = load i8, ptr %329, align 1, !noalias !443, !noundef !5 %333 = shl nuw nsw i32 %307, 18 %334 = and i32 %333, 1835008 @@ -4394,6 +4406,7 @@ _ZN5ropey4rope4Rope22pull_up_singular_nodes17hb14933cc99a419cfE.exit._ZN5ropey4r %79 = getelementptr inbounds nuw i8, ptr %12, i64 16 %80 = load i64, ptr %79, align 8, !alias.scope !972, !noundef !5 call void @llvm.lifetime.start.p0(ptr nonnull %7), !noalias !972 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %78) ] store i64 %73, ptr %7, align 8, !noalias !972 %81 = getelementptr inbounds nuw i8, ptr %7, i64 8 store ptr %78, ptr %81, align 8, !noalias !972 @@ -4533,6 +4546,7 @@ _ZN5ropey4rope4Rope22pull_up_singular_nodes17hb14933cc99a419cfE.exit22: ; preds %132 = getelementptr inbounds nuw i8, ptr %118, i64 16 %133 = load i64, ptr %132, align 8, !alias.scope !1020, !noundef !5 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !1020 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %131) ] store i64 %126, ptr %4, align 8, !noalias !1020 %134 = getelementptr inbounds nuw i8, ptr %4, i64 8 store ptr %131, ptr %134, align 8, !noalias !1020 diff --git a/bench/ropey-rs/optimized/q87dnuin1j2jq4x.ll b/bench/ropey-rs/optimized/q87dnuin1j2jq4x.ll index 6af0975f4a2..61bdf836980 100644 --- a/bench/ropey-rs/optimized/q87dnuin1j2jq4x.ll +++ b/bench/ropey-rs/optimized/q87dnuin1j2jq4x.ll @@ -20,32 +20,31 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: nonlazybind uwtable define hidden void @"_ZN132_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$$RF$T$C$core..slice..iter..Iter$LT$T$GT$$GT$$GT$11spec_extend17h436592eca368d2f9E.llvm.11761237816275622986"(ptr noalias noundef align 8 dereferenceable(24) %0, ptr noundef nonnull %1, ptr noundef %2) unnamed_addr #0 { - %4 = icmp ne ptr %2, null - tail call void @llvm.assume(i1 %4) - %5 = ptrtoint ptr %2 to i64 - %6 = ptrtoint ptr %1 to i64 - %7 = sub nuw i64 %5, %6 - %8 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %9 = load i64, ptr %8, align 8, !alias.scope !4, !noundef !9 - %10 = load i64, ptr %0, align 8, !alias.scope !4, !noundef !9 - %11 = sub i64 %10, %9 - %12 = icmp ugt i64 %7, %11 - br i1 %12, label %13, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$15append_elements17hab39dd1fb96859a6E.llvm.11761237816275622986.exit" - -13: ; preds = %3 - tail call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17he044785a704de353E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %9, i64 noundef %7) - %.pre.i = load i64, ptr %8, align 8, !alias.scope !10 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] + %4 = ptrtoint ptr %2 to i64 + %5 = ptrtoint ptr %1 to i64 + %6 = sub nuw i64 %4, %5 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %8 = load i64, ptr %7, align 8, !alias.scope !4, !noundef !9 + %9 = load i64, ptr %0, align 8, !alias.scope !4, !noundef !9 + %10 = sub i64 %9, %8 + %11 = icmp ugt i64 %6, %10 + br i1 %11, label %12, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$15append_elements17hab39dd1fb96859a6E.llvm.11761237816275622986.exit" + +12: ; preds = %3 + tail call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17he044785a704de353E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %8, i64 noundef %6) + %.pre.i = load i64, ptr %7, align 8, !alias.scope !10 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$15append_elements17hab39dd1fb96859a6E.llvm.11761237816275622986.exit" -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$15append_elements17hab39dd1fb96859a6E.llvm.11761237816275622986.exit": ; preds = %3, %13 - %14 = phi i64 [ %9, %3 ], [ %.pre.i, %13 ] +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$15append_elements17hab39dd1fb96859a6E.llvm.11761237816275622986.exit": ; preds = %3, %12 + %14 = phi i64 [ %8, %3 ], [ %.pre.i, %12 ] %15 = getelementptr inbounds nuw i8, ptr %0, i64 8 %16 = load ptr, ptr %15, align 8, !alias.scope !10, !nonnull !9, !noundef !9 %17 = getelementptr inbounds i8, ptr %16, i64 %14 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %17, ptr nonnull readonly align 1 %1, i64 %7, i1 false) - %18 = load i64, ptr %8, align 8, !alias.scope !10, !noundef !9 - %19 = add i64 %18, %7 - store i64 %19, ptr %8, align 8, !alias.scope !10 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %17, ptr nonnull readonly align 1 %1, i64 %6, i1 false) + %18 = load i64, ptr %7, align 8, !alias.scope !10, !noundef !9 + %19 = add i64 %18, %6 + store i64 %19, ptr %7, align 8, !alias.scope !10 ret void } @@ -57,10 +56,12 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %.val = load ptr, ptr %5, align 8, !nonnull !9, !align !11, !noundef !9 %6 = getelementptr i8, ptr %5, i64 8 %.val1 = load i64, ptr %6, align 8, !noundef !9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !12 call void @_ZN4core3fmt9Formatter10debug_list17h6fd145ef502d86b6E(ptr noalias noundef nonnull sret([16 x i8]) align 8 captures(none) dereferenceable(16) %4, ptr noalias noundef nonnull align 8 dereferenceable(64) %1), !noalias !18 %.idx.i.i = shl nsw i64 %.val1, 5 %7 = getelementptr inbounds i8, ptr %.val, i64 %.idx.i.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %7) ] %8 = icmp eq i64 %.val1, 0 br i1 %8, label %"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17hfe2e676908234756E.exit", label %.lr.ph.i.i.i diff --git a/bench/ruby/optimized/vm_trace.ll b/bench/ruby/optimized/vm_trace.ll index 76c73085acd..5f65ca1bfa4 100644 --- a/bench/ruby/optimized/vm_trace.ll +++ b/bench/ruby/optimized/vm_trace.ll @@ -353,7 +353,8 @@ rb_threadptr_add_event_hook.exit: ; preds = %4 store i32 0, ptr %16, align 8, !tbaa !37 store ptr %7, ptr %15, align 8, !tbaa !38 %17 = getelementptr i8, ptr %6, i64 48 - %.val.i = load ptr, ptr %17, align 8, !tbaa !39, !nonnull !32, !noundef !32 + %.val.i = load ptr, ptr %17, align 8, !tbaa !39 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %18 = getelementptr inbounds nuw i8, ptr %.val.i, i64 24 %19 = load ptr, ptr %18, align 8, !tbaa !48 %20 = getelementptr inbounds nuw i8, ptr %19, i64 16 @@ -398,7 +399,8 @@ rb_add_event_hook2.exit: ; preds = %3 %13 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @ruby_current_ec) %14 = load ptr, ptr %13, align 8, !tbaa !33 %15 = getelementptr i8, ptr %14, i64 48 - %.val.i = load ptr, ptr %15, align 8, !tbaa !39, !nonnull !32, !noundef !32 + %.val.i = load ptr, ptr %15, align 8, !tbaa !39 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %16 = getelementptr inbounds nuw i8, ptr %.val.i, i64 24 %17 = load ptr, ptr %16, align 8, !tbaa !48 %18 = getelementptr inbounds nuw i8, ptr %17, i64 16 @@ -443,7 +445,8 @@ alloc_event_hook.exit: ; preds = %4 %14 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @ruby_current_ec) %15 = load ptr, ptr %14, align 8, !tbaa !33 %16 = getelementptr i8, ptr %15, i64 48 - %.val = load ptr, ptr %16, align 8, !tbaa !39, !nonnull !32, !noundef !32 + %.val = load ptr, ptr %16, align 8, !tbaa !39 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %17 = getelementptr inbounds nuw i8, ptr %.val, i64 24 %18 = load ptr, ptr %17, align 8, !tbaa !48 %19 = getelementptr inbounds nuw i8, ptr %18, i64 16 @@ -489,7 +492,8 @@ rb_threadptr_add_event_hook.exit: ; preds = %5 store i32 0, ptr %17, align 8, !tbaa !37 store ptr %8, ptr %16, align 8, !tbaa !38 %18 = getelementptr i8, ptr %7, i64 48 - %.val.i = load ptr, ptr %18, align 8, !tbaa !39, !nonnull !32, !noundef !32 + %.val.i = load ptr, ptr %18, align 8, !tbaa !39 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %19 = getelementptr inbounds nuw i8, ptr %.val.i, i64 24 %20 = load ptr, ptr %19, align 8, !tbaa !48 %21 = getelementptr inbounds nuw i8, ptr %20, i64 16 @@ -2696,7 +2700,8 @@ rb_add_event_hook2.exit: ; preds = %29 %.sink21 = phi ptr [ %34, %rb_add_event_hook2.exit ], [ %23, %rb_thread_add_event_hook2.exit ] %.sink16 = phi i32 [ %30, %rb_add_event_hook2.exit ], [ %16, %rb_thread_add_event_hook2.exit ] %43 = getelementptr i8, ptr %.sink26, i64 48 - %.val.i = load ptr, ptr %43, align 8, !tbaa !39, !nonnull !32, !noundef !32 + %.val.i = load ptr, ptr %43, align 8, !tbaa !39 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %44 = getelementptr inbounds nuw i8, ptr %.val.i, i64 24 %45 = load ptr, ptr %44, align 8, !tbaa !48 %46 = getelementptr inbounds nuw i8, ptr %45, i64 16 @@ -5147,7 +5152,8 @@ rb_remove_event_hook.exit: ; preds = %._crit_edge.i.i, %2 store i32 0, ptr %42, align 8, !tbaa !37 %43 = load ptr, ptr %3, align 8, !tbaa !33 %44 = getelementptr i8, ptr %43, i64 48 - %.val.i.i = load ptr, ptr %44, align 8, !tbaa !39, !nonnull !32, !noundef !32 + %.val.i.i = load ptr, ptr %44, align 8, !tbaa !39 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i.i) ] %45 = getelementptr inbounds nuw i8, ptr %.val.i.i, i64 24 %46 = load ptr, ptr %45, align 8, !tbaa !48 %47 = getelementptr inbounds nuw i8, ptr %46, i64 16 @@ -5284,7 +5290,8 @@ thread_add_trace_func.exit: ; preds = %42 %51 = getelementptr inbounds nuw i8, ptr %46, i64 40 store i32 0, ptr %51, align 8, !tbaa !37 store ptr %5, ptr %50, align 8, !tbaa !38 - %.val.i.i = load ptr, ptr %6, align 8, !tbaa !39, !nonnull !32, !noundef !32 + %.val.i.i = load ptr, ptr %6, align 8, !tbaa !39 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i.i) ] %52 = getelementptr inbounds nuw i8, ptr %.val.i.i, i64 24 %53 = load ptr, ptr %52, align 8, !tbaa !48 %54 = getelementptr inbounds nuw i8, ptr %53, i64 16 @@ -5331,7 +5338,8 @@ thread_add_trace_func.exit: ; preds = %2 store i32 0, ptr %14, align 8, !tbaa !37 store ptr %5, ptr %13, align 8, !tbaa !38 %15 = getelementptr i8, ptr %4, i64 48 - %.val.i.i = load ptr, ptr %15, align 8, !tbaa !39, !nonnull !32, !noundef !32 + %.val.i.i = load ptr, ptr %15, align 8, !tbaa !39 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i.i) ] %16 = getelementptr inbounds nuw i8, ptr %.val.i.i, i64 24 %17 = load ptr, ptr %16, align 8, !tbaa !48 %18 = getelementptr inbounds nuw i8, ptr %17, i64 16 diff --git a/bench/salsa-rs/optimized/35mx14hjf8oh90noer0x3ymew.ll b/bench/salsa-rs/optimized/35mx14hjf8oh90noer0x3ymew.ll index a47a9b62ff7..3f9411a6f9d 100644 --- a/bench/salsa-rs/optimized/35mx14hjf8oh90noer0x3ymew.ll +++ b/bench/salsa-rs/optimized/35mx14hjf8oh90noer0x3ymew.ll @@ -363,8 +363,9 @@ define internal noundef zeroext i1 @_ZN4core3fmt5Write9write_fmt17hdfc15abedd9df ret i1 %3 } -; 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 i64 @_ZN4core4hash11BuildHasher8hash_one17h159e1867fda72a7cE(ptr noalias noundef nonnull readonly align 1 captures(none) %0, ptr noalias noundef readonly align 4 captures(none) dereferenceable(4) %1) unnamed_addr #2 personality ptr @rust_eh_personality { + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load i32, ptr %1, align 4, !noalias !39, !noundef !3 %3 = zext i32 %.val.i to i64 %4 = mul i64 %3, -1065810590584100411 @@ -372,8 +373,9 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h159e1867fda72a7 ret i64 %5 } -; 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 i64 @_ZN4core4hash11BuildHasher8hash_one17h1e17d21150f52b02E(ptr noalias noundef nonnull readonly align 1 captures(none) %0, ptr noalias noundef readonly align 4 captures(none) dereferenceable(4) %1) unnamed_addr #2 personality ptr @rust_eh_personality { + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load i32, ptr %1, align 4, !range !42, !noalias !43, !noundef !3 %3 = zext i32 %.val.i to i64 %4 = mul i64 %3, -1065810590584100411 @@ -381,16 +383,18 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h1e17d21150f52b0 ret i64 %5 } -; 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 i64 @_ZN4core4hash11BuildHasher8hash_one17h7f7d654077a360bdE(ptr noalias noundef nonnull readonly align 1 captures(none) %0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(8) %1) unnamed_addr #2 personality ptr @rust_eh_personality { + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load i64, ptr %1, align 8, !range !46, !noalias !47, !noundef !3 %3 = mul i64 %.val.i, -1065810590584100411 %4 = tail call noundef i64 @llvm.fshl.i64(i64 %3, i64 %3, i64 26) ret i64 %4 } -; 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 i64 @_ZN4core4hash11BuildHasher8hash_one17hed7c2a8e913fc00bE(ptr noalias noundef nonnull readonly align 1 captures(none) %0, ptr noalias noundef readonly align 4 captures(none) dereferenceable(8) %1) unnamed_addr #2 personality ptr @rust_eh_personality { + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load i32, ptr %1, align 4, !range !42, !noalias !50, !noundef !3 %3 = getelementptr inbounds nuw i8, ptr %1, i64 4 %.val1.i = load i32, ptr %3, align 4, !noalias !50, !noundef !3 @@ -445,6 +449,7 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$11resize_with17h9ec1ef132d96 br i1 %20, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17ha90d52c797e78adcE.exit", label %16 "_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17ha90d52c797e78adcE.exit": ; preds = %16 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %4) ] store i64 %19, ptr %4, align 8, !alias.scope !59, !noalias !71 br label %"_ZN4core3ptr83drop_in_place$LT$$u5b$alloc..vec..Vec$LT$salsa..zalsa..IngredientIndex$GT$$u5d$$GT$17he9272eb733861d96E.exit" @@ -732,7 +737,8 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17hc41b86dc214e83b0E" %storemerge.lcssa16.i = phi i64 [ %22, %._crit_edge.thread.i ], [ %15, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h59e8b04981d518b1E.exit.i" ] store i32 %2, ptr %.sroa.0.0.lcssa17.i, align 4 %23 = add i64 %storemerge.lcssa16.i, 1 - br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$11extend_with17h6f6eeee5879a3705E.exit" + call void @llvm.assume(i1 true) [ "nonnull"(ptr %5) ] + br label %26 .lr.ph.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h59e8b04981d518b1E.exit.i", %.lr.ph.i %.sroa.0.010.i = phi ptr [ %25, %.lr.ph.i ], [ %19, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h59e8b04981d518b1E.exit.i" ] @@ -744,7 +750,7 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17hc41b86dc214e83b0E" br i1 %exitcond.not.i, label %._crit_edge.thread.i, label %.lr.ph.i "_ZN5alloc3vec16Vec$LT$T$C$A$GT$11extend_with17h6f6eeee5879a3705E.exit": ; preds = %4, %._crit_edge.i - %storemerge = phi i64 [ %1, %4 ], [ %23, %._crit_edge.i ] + %storemerge = phi i64 [ %23, %._crit_edge.i ], [ %1, %4 ] store i64 %storemerge, ptr %5, align 8 ret void } @@ -912,8 +918,8 @@ define hidden void @"_ZN98_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..s %6 = alloca [24 x i8], align 8 %7 = alloca [24 x i8], align 8 call void @llvm.lifetime.start.p0(ptr nonnull %7), !noalias !128 - %8 = icmp ne ptr %2, null - tail call void @llvm.assume(i1 %8) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %9 = ptrtoint ptr %2 to i64 %10 = ptrtoint ptr %1 to i64 %11 = sub nuw i64 %9, %10 @@ -942,6 +948,8 @@ define hidden void @"_ZN98_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..s store ptr %20, ptr %22, align 8, !noalias !128 %23 = getelementptr inbounds nuw i8, ptr %7, i64 16 store i64 0, ptr %23, align 8, !noalias !128 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !136 store ptr %23, ptr %5, align 8, !noalias !145 %.sroa.4.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %5, i64 8 @@ -955,7 +963,7 @@ define hidden void @"_ZN98_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..s %25 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr78drop_in_place$LT$alloc..vec..Vec$LT$salsa..active_query..CapturedQuery$GT$$GT$17h54309d6316355cdbE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #14 - to label %28 unwind label %26, !noalias !128 + to label %27 unwind label %26, !noalias !128 26: ; preds = %24 %27 = landingpad { ptr, i32 } @@ -1109,6 +1117,7 @@ define hidden void @"_ZN98_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..s %57 = landingpad { ptr, i32 } cleanup store ptr %59, ptr %6, align 8, !alias.scope !192, !noalias !189 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %36) ] store i64 %.val3.i.i.i.i.i.i, ptr %36, align 8, !alias.scope !170, !noalias !194 invoke void @"_ZN4core3ptr117drop_in_place$LT$alloc..vec..drain..Drain$LT$indexmap..Bucket$LT$salsa..zalsa_local..QueryEdge$C$$LP$$RP$$GT$$GT$$GT$17haf47ec01f04f88b9E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %6) #14 to label %.body.i unwind label %65, !noalias !195 @@ -1171,6 +1180,7 @@ _ZN4core4iter6traits8iterator8Iterator4fold17h0630ac1c34c1c65aE.exit.loopexit.i. "_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17h03aaa80852199ad4E.exit.i.i": ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17h0630ac1c34c1c65aE.exit.loopexit.i.i.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hd801353fc9fa1c9cE.exit.i.i.i" %.val5.i.i.i.i.i.i = phi i64 [ %51, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hd801353fc9fa1c9cE.exit.i.i.i" ], [ %.val5.i.ph.i.i.i.i.i, %_ZN4core4iter6traits8iterator8Iterator4fold17h0630ac1c34c1c65aE.exit.loopexit.i.i.i.i.i ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %36) ] store i64 %.val5.i.i.i.i.i.i, ptr %36, align 8, !alias.scope !170, !noalias !194 invoke void @"_ZN4core3ptr117drop_in_place$LT$alloc..vec..drain..Drain$LT$indexmap..Bucket$LT$salsa..zalsa_local..QueryEdge$C$$LP$$RP$$GT$$GT$$GT$17haf47ec01f04f88b9E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %6) to label %"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17ha33e24eba77344f9E.exit" unwind label %71, !noalias !152 @@ -1390,7 +1400,7 @@ declare void @llvm.experimental.noalias.scope.decl(metadata) #12 attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #2 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #2 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #4 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #5 = { cold minsize noreturn nounwind nonlazybind optsize uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } diff --git a/bench/salsa-rs/optimized/bfvulplr01a8w79gvhbwzr5ai.ll b/bench/salsa-rs/optimized/bfvulplr01a8w79gvhbwzr5ai.ll index 71d0c1ef767..94b75eb8b35 100644 --- a/bench/salsa-rs/optimized/bfvulplr01a8w79gvhbwzr5ai.ll +++ b/bench/salsa-rs/optimized/bfvulplr01a8w79gvhbwzr5ai.ll @@ -69,6 +69,7 @@ define internal void @"_ZN3std4sync6poison4once4Once15call_once_force28_$u7b$$u7 br i1 %.not, label %7, label %4, !prof !5 4: ; preds = %2 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.0.copyload) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !6) tail call void @llvm.experimental.noalias.scope.decl(metadata !9) %.sroa.0.0.copyload.i.i.i = load ptr, ptr %.sroa.0.0.copyload, align 8, !alias.scope !12, !noalias !13 @@ -84,8 +85,7 @@ define internal void @"_ZN3std4sync6poison4once4Once15call_once_force28_$u7b$$u7 %.sroa.5.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload, i64 8 call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.45.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.45.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.5.0..sroa_idx.i.i.i, i64 16, i1 false) - %6 = icmp ne ptr %.sroa.5.sroa.0.0.copyload, null - tail call void @llvm.assume(i1 %6) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.5.sroa.0.0.copyload) ] store ptr %.sroa.0.0.copyload.i.i.i, ptr %.sroa.5.sroa.0.0.copyload, align 8 %.sroa.45.0..8.val.sroa_idx.i = getelementptr inbounds nuw i8, ptr %.sroa.5.sroa.0.0.copyload, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.45.0..8.val.sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.45.i, i64 16, i1 false) @@ -138,6 +138,7 @@ define internal void @"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.s br i1 %.not.i.i, label %6, label %4, !prof !5 4: ; preds = %2 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.0.copyload.i.i) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !27) tail call void @llvm.experimental.noalias.scope.decl(metadata !30) %.sroa.0.0.copyload.i.i.i.i.i = load ptr, ptr %.sroa.0.0.copyload.i.i, align 8, !alias.scope !33, !noalias !34 @@ -157,8 +158,7 @@ _ZN4core3ops8function6FnOnce9call_once17h1836a743e5b97eafE.exit: ; preds = %4 %.sroa.5.0..sroa_idx.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i, i64 8 call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.45.i.i.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.45.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.5.0..sroa_idx.i.i.i.i.i, i64 16, i1 false), !noalias !38 - %7 = icmp ne ptr %.sroa.5.sroa.0.0.copyload.i.i, null - tail call void @llvm.assume(i1 %7) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.5.sroa.0.0.copyload.i.i) ] store ptr %.sroa.0.0.copyload.i.i.i.i.i, ptr %.sroa.5.sroa.0.0.copyload.i.i, align 8, !noalias !38 %.sroa.45.0..8.val.sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %.sroa.5.sroa.0.0.copyload.i.i, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.45.0..8.val.sroa_idx.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.45.i.i.i, i64 16, i1 false), !noalias !38 @@ -363,6 +363,7 @@ define void @_ZN5salsa8function4sync9SyncTable9try_claim17hc3347ac797fe07c9E(ptr store i32 %3, ptr %.sroa.59.0..sroa_idx, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 20 store i8 0, ptr %.sroa.6.0..sroa_idx, align 4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %42 = cmpxchg ptr %1, i8 1, i8 0 release monotonic, align 1 %43 = extractvalue { i8, i1 } %42, 1 br i1 %43, label %"_ZN4core3ptr211drop_in_place$LT$lock_api..mutex..MutexGuard$LT$parking_lot..raw_mutex..RawMutex$C$std..collections..hash..map..HashMap$LT$salsa..id..Id$C$salsa..function..sync..SyncState$C$rustc_hash..FxBuildHasher$GT$$GT$$GT$17h5d44fd46d70a7ec2E.exit", label %44, !prof !20 @@ -382,6 +383,7 @@ define void @_ZN5salsa8function4sync9SyncTable9try_claim17hc3347ac797fe07c9E(ptr .thread: ; preds = %38, %.thread28 %.pn27 = phi { ptr, i32 } [ %lpad.thr_comm, %.thread28 ], [ %39, %38 ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %47 = cmpxchg ptr %1, i8 1, i8 0 release monotonic, align 1 %48 = extractvalue { i8, i1 } %47, 1 br i1 %48, label %"_ZN4core3ptr211drop_in_place$LT$lock_api..mutex..MutexGuard$LT$parking_lot..raw_mutex..RawMutex$C$std..collections..hash..map..HashMap$LT$salsa..id..Id$C$salsa..function..sync..SyncState$C$rustc_hash..FxBuildHasher$GT$$GT$$GT$17h5d44fd46d70a7ec2E.exit23", label %49, !prof !20 @@ -412,6 +414,7 @@ define hidden void @_ZN5salsa8function4sync10ClaimGuard35remove_from_map_and_unb 12: ; preds = %36, %33, %19, %8 %13 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %3) ] %14 = cmpxchg ptr %3, i8 1, i8 0 release monotonic, align 1 %15 = extractvalue { i8, i1 } %14, 1 br i1 %15, label %"_ZN4core3ptr211drop_in_place$LT$lock_api..mutex..MutexGuard$LT$parking_lot..raw_mutex..RawMutex$C$std..collections..hash..map..HashMap$LT$salsa..id..Id$C$salsa..function..sync..SyncState$C$rustc_hash..FxBuildHasher$GT$$GT$$GT$17h5d44fd46d70a7ec2E.exit", label %16, !prof !20 @@ -435,6 +438,7 @@ define hidden void @_ZN5salsa8function4sync10ClaimGuard35remove_from_map_and_unb unreachable 21: ; preds = %36, %17 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %3) ] %22 = cmpxchg ptr %3, i8 1, i8 0 release monotonic, align 1 %23 = extractvalue { i8, i1 } %22, 1 br i1 %23, label %"_ZN4core3ptr211drop_in_place$LT$lock_api..mutex..MutexGuard$LT$parking_lot..raw_mutex..RawMutex$C$std..collections..hash..map..HashMap$LT$salsa..id..Id$C$salsa..function..sync..SyncState$C$rustc_hash..FxBuildHasher$GT$$GT$$GT$17h5d44fd46d70a7ec2E.exit6", label %24, !prof !20 @@ -870,6 +874,7 @@ _ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17h3d018d9c9ce997a4E 13: ; preds = %.invoke %14 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %4) ] %15 = atomicrmw sub ptr %4, i64 16 release, align 8 %16 = and i64 %15, -14 %17 = icmp eq i64 %16, 18 @@ -901,6 +906,7 @@ _ZN11parking_lot10raw_rwlock9RawRwLock20try_lock_shared_fast17h3d018d9c9ce997a4E %34 = load ptr, ptr %33, align 8, !nonnull !3, !noundef !3 %35 = getelementptr inbounds nuw i32, ptr %34, i64 %28 %36 = load i32, ptr %35, align 4, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %4) ] %37 = atomicrmw sub ptr %4, i64 16 release, align 8 %38 = and i64 %37, -14 %39 = icmp eq i64 %38, 18 @@ -947,6 +953,7 @@ define noundef i32 @_ZN5salsa5zalsa5Zalsa26next_memo_ingredient_index17hefc79685 9: ; preds = %36, %32, %25, %19 %10 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %4) ] %11 = cmpxchg ptr %4, i64 8, i64 0 release monotonic, align 8 %12 = extractvalue { i64, i1 } %11, 1 br i1 %12, label %"_ZN4core3ptr175drop_in_place$LT$lock_api..rwlock..RwLockWriteGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..vec..Vec$LT$alloc..vec..Vec$LT$salsa..zalsa..IngredientIndex$GT$$GT$$GT$$GT$17hc268aa1d7ac90c8eE.exit", label %13, !prof !20 @@ -1014,6 +1021,7 @@ define noundef i32 @_ZN5salsa5zalsa5Zalsa26next_memo_ingredient_index17hefc79685 store i32 %2, ptr %40, align 4 %41 = add nuw nsw i64 %29, 1 store i64 %41, ptr %28, align 8, !alias.scope !61 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %4) ] %42 = cmpxchg ptr %4, i64 8, i64 0 release monotonic, align 8 %43 = extractvalue { i64, i1 } %42, 1 br i1 %43, label %"_ZN4core3ptr175drop_in_place$LT$lock_api..rwlock..RwLockWriteGuard$LT$parking_lot..raw_rwlock..RawRwLock$C$alloc..vec..Vec$LT$alloc..vec..Vec$LT$salsa..zalsa..IngredientIndex$GT$$GT$$GT$$GT$17hc268aa1d7ac90c8eE.exit9", label %44, !prof !20 diff --git a/bench/serde-rs-json/optimized/36shr7j8gl5gy6fn.ll b/bench/serde-rs-json/optimized/36shr7j8gl5gy6fn.ll index 42b6268825b..82c5d63cdba 100644 --- a/bench/serde-rs-json/optimized/36shr7j8gl5gy6fn.ll +++ b/bench/serde-rs-json/optimized/36shr7j8gl5gy6fn.ll @@ -28,6 +28,7 @@ define hidden noundef ptr @_ZN3std2io5Write9write_all17h6ffa51b6097a75eaE(ptr no call void @llvm.experimental.noalias.scope.decl(metadata !4) %9 = call noundef nonnull ptr @_ZN3std2io5error5Error3new17h33be6581caccd802E(i8 noundef 39, ptr noalias noundef nonnull readonly align 1 @anon.7b12c2ab9e1ce74a96d00cd7e4c1ea31.28.llvm.8370777945629324, i64 noundef 9), !noalias !14 %10 = ptrtoint ptr %9 to i64 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %9) ] %11 = and i64 %10, 3 switch i64 %11, label %default.unreachable [ i64 2, label %12 @@ -134,6 +135,7 @@ define hidden noundef zeroext i1 @"_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..D call void @_ZN4core3fmt9Formatter10debug_list17h1616b9a56f5bf339E(ptr noalias noundef nonnull sret({ { ptr, i8, i8, [6 x i8] } }) align 8 captures(none) dereferenceable(16) %5, ptr noalias noundef nonnull align 8 dereferenceable(64) %2) %.idx = shl nsw i64 %1, 5 %6 = getelementptr inbounds i8, ptr %0, i64 %.idx + call void @llvm.assume(i1 true) [ "nonnull"(ptr %6) ] %7 = icmp eq i64 %1, 0 br i1 %7, label %_ZN4core3fmt8builders9DebugList7entries17h98a615cf2a9210e6E.exit, label %.lr.ph.i @@ -375,8 +377,7 @@ define hidden void @"_ZN5alloc11collections5btree8navigate75LazyLeafRange$LT$all br label %13 7: ; preds = %4 - %8 = icmp ne ptr %.sroa.4.sroa.4.0.copyload, null - tail call void @llvm.assume(i1 %8) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.4.sroa.4.0.copyload) ] %.not11.i = icmp eq i64 %.sroa.4.sroa.5.0.copyload, 0 br i1 %.not11.i, label %"_ZN5alloc11collections5btree8navigate142_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$BorrowType$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$15first_leaf_edge17hd6164a78f528b522E.llvm.12841644863924027351.exit", label %.lr.ph.i @@ -476,6 +477,7 @@ define noundef nonnull align 8 dereferenceable(24) ptr @_ZN10serde_json3map5Entr %10 = icmp ult i64 %8, 11 tail call void @llvm.assume(i1 %10) %11 = getelementptr inbounds nuw { [3 x i64] }, ptr %9, i64 %8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %11) ] br label %12 12: ; preds = %1, %4 diff --git a/bench/serde-rs-json/optimized/3o41byb1p1zh3720.ll b/bench/serde-rs-json/optimized/3o41byb1p1zh3720.ll index 23188bc3bd7..20bfc78963c 100644 --- a/bench/serde-rs-json/optimized/3o41byb1p1zh3720.ll +++ b/bench/serde-rs-json/optimized/3o41byb1p1zh3720.ll @@ -352,9 +352,8 @@ define noundef align 8 dereferenceable_or_null(32) ptr @"_ZN73_$LT$alloc..string call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %20, i64 24, i1 false), !noalias !49 %21 = call { ptr, ptr } @"_ZN5alloc11collections5btree4node173Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Immut$C$K$C$V$C$NodeType$GT$$C$alloc..collections..btree..node..marker..KV$GT$7into_kv17ha248e88e5d7f0c6dE"(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %3), !noalias !46 %.fca.1.extract.i.i = extractvalue { ptr, ptr } %21, 1 - %22 = icmp ne ptr %.fca.1.extract.i.i, null - tail call void @llvm.assume(i1 %22) - br label %23 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.fca.1.extract.i.i) ] + br label %22 23: ; preds = %19, %15 %.1.i.i = phi ptr [ %.fca.1.extract.i.i, %19 ], [ null, %15 ] @@ -362,7 +361,7 @@ define noundef align 8 dereferenceable_or_null(32) ptr @"_ZN73_$LT$alloc..string br label %"_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$3get17h6c60ddd5564b8f49E.exit.i" "_ZN5alloc11collections5btree3map25BTreeMap$LT$K$C$V$C$A$GT$3get17h6c60ddd5564b8f49E.exit.i": ; preds = %23, %11 - %.0.i.i = phi ptr [ %.1.i.i, %23 ], [ null, %11 ] + %.0.i.i = phi ptr [ %.1.i.i, %22 ], [ null, %11 ] call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !45 br label %"_ZN55_$LT$str$u20$as$u20$serde_json..value..index..Index$GT$10index_into17h111be33034785bb5E.exit" diff --git a/bench/smol-rs/optimized/2s1v940hwu43buna.ll b/bench/smol-rs/optimized/2s1v940hwu43buna.ll index 425d6e5e6d0..97743790656 100644 --- a/bench/smol-rs/optimized/2s1v940hwu43buna.ll +++ b/bench/smol-rs/optimized/2s1v940hwu43buna.ll @@ -223,7 +223,7 @@ define hidden void @"_ZN16concurrent_queue7bounded16Bounded$LT$T$GT$3pop17h07238 33: ; preds = %26 call void @llvm.lifetime.start.p0(ptr nonnull %3) store i64 0, ptr %3, align 8 - call void asm sideeffect inteldialect "lock not qword ptr [${0:q}]", "r,~{memory}"(ptr nonnull %3) #10, !srcloc !7 + call void asm sideeffect inteldialect "lock not qword ptr [${0:q}]", "r,~{memory}"(ptr nonnull %3) #11, !srcloc !7 call void @llvm.lifetime.end.p0(ptr nonnull %3) %34 = load atomic i64, ptr %17 monotonic, align 128 %35 = load i64, ptr %5, align 8, !noundef !4 @@ -359,7 +359,7 @@ define hidden { i64, ptr } @"_ZN16concurrent_queue7bounded16Bounded$LT$T$GT$4pus 40: ; preds = %30 call void @llvm.lifetime.start.p0(ptr nonnull %3) store i64 0, ptr %3, align 8 - call void asm sideeffect inteldialect "lock not qword ptr [${0:q}]", "r,~{memory}"(ptr nonnull %3) #10, !srcloc !7 + call void asm sideeffect inteldialect "lock not qword ptr [${0:q}]", "r,~{memory}"(ptr nonnull %3) #11, !srcloc !7 call void @llvm.lifetime.end.p0(ptr nonnull %3) %41 = load atomic i64, ptr %0 monotonic, align 128 %42 = load i64, ptr %11, align 128, !noundef !4 @@ -443,12 +443,12 @@ define hidden void @"_ZN3std4sync6rwlock24RwLockReadGuard$LT$T$GT$3new17hbe8e28c %3 = getelementptr inbounds nuw i8, ptr %1, i64 8 %4 = load atomic i8, ptr %3 monotonic, align 8 %5 = icmp ne i8 %4, 0 + %6 = getelementptr inbounds nuw i8, ptr %1, i64 16 %spec.select.i = zext i1 %5 to i64 - %.sink.i = getelementptr inbounds nuw i8, ptr %1, i64 16 - %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.sink.i, ptr %6, align 8, !alias.scope !10 - %7 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %1, ptr %7, align 8, !alias.scope !10 + %.sink.i = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %6, ptr %7, align 8, !alias.scope !10 + %8 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %1, ptr %8, align 8, !alias.scope !10 store i64 %spec.select.i, ptr %0, align 8, !alias.scope !10 ret void } @@ -463,6 +463,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %.val = load ptr, ptr %7, align 8, !nonnull !4, !noundef !4 %8 = getelementptr i8, ptr %6, i64 16 %.val1 = load i64, ptr %8, align 8, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !13 call void @_ZN4core3fmt9Formatter10debug_list17h1616b9a56f5bf339E(ptr noalias noundef nonnull sret({ { ptr, i8, i8, [6 x i8] } }) align 8 captures(none) dereferenceable(16) %5, ptr noalias noundef nonnull align 8 dereferenceable(64) %1), !noalias !19 %9 = getelementptr inbounds i8, ptr %.val, i64 %.val1 @@ -1019,6 +1020,9 @@ declare void @llvm.lifetime.start.p0(ptr captures(none)) #7 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(ptr captures(none)) #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 @@ -1030,10 +1034,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 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #7 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #8 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #9 = { noreturn } -attributes #10 = { nounwind } -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 = { noreturn } +attributes #11 = { nounwind } +attributes #12 = { cold noreturn nounwind } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/smol-rs/optimized/5836b0ge3mikiq0d.ll b/bench/smol-rs/optimized/5836b0ge3mikiq0d.ll index de971cc8a6a..9e6997fe68b 100644 --- a/bench/smol-rs/optimized/5836b0ge3mikiq0d.ll +++ b/bench/smol-rs/optimized/5836b0ge3mikiq0d.ll @@ -74,6 +74,7 @@ define internal fastcc void @"_ZN4core3ptr127drop_in_place$LT$$LP$parking..Parke %.val = load ptr, ptr %8, align 8, !nonnull !17, !align !18, !noundef !17 %9 = getelementptr inbounds nuw i8, ptr %0, i64 16 %.val2 = load ptr, ptr %9, align 8, !noundef !17 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %10 = getelementptr inbounds nuw i8, ptr %.val, i64 24 %11 = load ptr, ptr %10, align 8, !nonnull !17, !noundef !17 invoke void %11(ptr noundef %.val2) @@ -84,6 +85,7 @@ define internal fastcc void @"_ZN4core3ptr127drop_in_place$LT$$LP$parking..Parke %.val3 = load ptr, ptr %12, align 8, !nonnull !17, !align !18, !noundef !17 %13 = getelementptr inbounds nuw i8, ptr %0, i64 16 %.val4 = load ptr, ptr %13, align 8, !noundef !17 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3) ] %14 = getelementptr inbounds nuw i8, ptr %.val3, i64 24 %15 = load ptr, ptr %14, align 8, !nonnull !17, !noundef !17 invoke void %15(ptr noundef %.val4) @@ -487,6 +489,7 @@ _ZN8async_io6driver8block_on5CACHE7__getit17h278e05a6d0505739E.exit.thread.i: ; 83: ; preds = %_ZN8async_io6driver8block_on5CACHE7__getit17h278e05a6d0505739E.exit.thread.i store i64 -1, ptr %.0.i.i6.i, align 8, !noalias !104 %84 = getelementptr inbounds nuw i8, ptr %.0.i.i6.i, i64 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.0.i.i6.i) ] br label %86 85: ; preds = %_ZN8async_io6driver8block_on5CACHE7__getit17h278e05a6d0505739E.exit.thread.i @@ -624,6 +627,7 @@ default.unreachable: ; preds = %.backedge.i.i 131: ; preds = %126 %.val.i.i.i = load ptr, ptr %128, align 8, !noalias !107, !nonnull !17, !noundef !17 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i.i.i) ] %132 = getelementptr inbounds nuw i8, ptr %.val.i.i.i, i64 128 invoke void @_ZN14async_executor6Runner3new17h7accacdf95488721E(ptr noalias noundef nonnull sret({ ptr, { ptr, { i64 } }, ptr, { i64 } }) align 8 captures(none) dereferenceable(40) %92, ptr noundef nonnull align 128 %132) to label %133 unwind label %129, !noalias !107 @@ -652,6 +656,7 @@ _ZN8fastrand10global_rng3RNG7__getit17h976a44bdba5e523cE.exit.i.i.i.i.i: ; preds %144 = lshr i128 %143, 64 %145 = xor i128 %144, %143 %146 = trunc i128 %145 to i64 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.0.i.i2.i.i.i.i.i) ] store i64 %139, ptr %.0.i.i2.i.i.i.i.i, align 8, !noalias !107 br label %149 @@ -922,6 +927,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17h75ffbf7bbedb93daE.exit.i. %.val.i357.i.i = load ptr, ptr %226, align 8, !alias.scope !134, !noalias !104, !nonnull !17, !align !18, !noundef !17 %227 = getelementptr inbounds nuw i8, ptr %42, i64 16 %.val2.i.i.i = load ptr, ptr %227, align 8, !alias.scope !134, !noalias !104, !noundef !17 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i357.i.i) ] %228 = getelementptr inbounds nuw i8, ptr %.val.i357.i.i, i64 24 %229 = load ptr, ptr %228, align 8, !noalias !104, !nonnull !17, !noundef !17 invoke void %229(ptr noundef %.val2.i.i.i) @@ -932,6 +938,7 @@ _ZN12tracing_core8callsite15DefaultCallsite8interest17h75ffbf7bbedb93daE.exit.i. %.val3.i.i.i = load ptr, ptr %230, align 8, !alias.scope !134, !noalias !104, !nonnull !17, !align !18, !noundef !17 %231 = getelementptr inbounds nuw i8, ptr %42, i64 16 %.val4.i.i.i = load ptr, ptr %231, align 8, !alias.scope !134, !noalias !104, !noundef !17 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3.i.i.i) ] %232 = getelementptr inbounds nuw i8, ptr %.val3.i.i.i, i64 24 %233 = load ptr, ptr %232, align 8, !noalias !104, !nonnull !17, !noundef !17 invoke void %233(ptr noundef %.val4.i.i.i) @@ -1952,6 +1959,7 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.14408593437386099104.exit "_ZN4core3ptr254drop_in_place$LT$async_io..driver..CallOnDrop$LT$async_io..driver..block_on$LT$$LP$$RP$$C$async_executor..Executor..run$LT$$LP$$RP$$C$core..future..pending..Pending$LT$$LP$$RP$$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h7e3b733b22200500E.exit": ; preds = %.noexc22, %534 %.pn = phi { ptr, i32 } [ %535, %534 ], [ %eh.lpad-body, %.noexc22 ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %46) ] %530 = load i64, ptr %46, align 8, !range !52, !alias.scope !256, !noalias !259, !noundef !17 %531 = icmp eq i64 %530, 2 br i1 %531, label %"_ZN4core3ptr43drop_in_place$LT$tracing..span..Entered$GT$17h9d67df26919f87a1E.exit", label %532 @@ -1967,6 +1975,7 @@ _ZN3std4sync6poison4Flag4done17h5bffa24fa61aa5e0E.llvm.14408593437386099104.exit br label %"_ZN4core3ptr254drop_in_place$LT$async_io..driver..CallOnDrop$LT$async_io..driver..block_on$LT$$LP$$RP$$C$async_executor..Executor..run$LT$$LP$$RP$$C$core..future..pending..Pending$LT$$LP$$RP$$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h7e3b733b22200500E.exit" "_ZN4core3ptr254drop_in_place$LT$async_io..driver..CallOnDrop$LT$async_io..driver..block_on$LT$$LP$$RP$$C$async_executor..Executor..run$LT$$LP$$RP$$C$core..future..pending..Pending$LT$$LP$$RP$$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h7e3b733b22200500E.exit27": ; preds = %.noexc25 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %46) ] %536 = load i64, ptr %46, align 8, !range !52, !noundef !17 %537 = icmp eq i64 %536, 2 br i1 %537, label %"_ZN4core3ptr40drop_in_place$LT$tracing..span..Span$GT$17h69eb9e1cbda42f23E.exit", label %538 diff --git a/bench/softposit-rs/optimized/1jooigl29qhneyer.ll b/bench/softposit-rs/optimized/1jooigl29qhneyer.ll index e12e1c4518c..5daaac2e200 100644 --- a/bench/softposit-rs/optimized/1jooigl29qhneyer.ll +++ b/bench/softposit-rs/optimized/1jooigl29qhneyer.ll @@ -1855,9 +1855,11 @@ _ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E.exit: ; preds = %2, %7, %_Z %38 = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17h2ea2ae54310fbdaeE", ptr %38, align 8 %39 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val = load ptr, ptr %39, align 8, !nonnull !4, !noundef !4 + %.val = load ptr, ptr %39, align 8 %40 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val1 = load ptr, ptr %40, align 8, !nonnull !4, !noundef !4 + %.val1 = load ptr, ptr %40, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1) ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !5 store ptr @anon.5be969b161c3ca3248ac477383ae4705.7, ptr %3, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -1885,9 +1887,11 @@ _ZN4core3fmt9Arguments12as_const_str17h12e0cdd0f797b759E.exit.i: %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 + %.val = load ptr, ptr %5, align 8 %6 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val1 = load ptr, ptr %6, align 8, !nonnull !4, !noundef !4 + %.val1 = load ptr, ptr %6, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1) ] call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !8 store ptr @anon.5be969b161c3ca3248ac477383ae4705.10, ptr %2, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -3737,6 +3741,9 @@ declare void @llvm.lifetime.start.p0(ptr captures(none)) #8 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(ptr captures(none)) #8 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #9 + ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare float @llvm.fabs.f32(float) #9 @@ -3776,9 +3783,10 @@ attributes #5 = { nofree norecurse nosync nounwind nonlazybind memory(argmem: re attributes #6 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #7 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #8 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #9 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } -attributes #10 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #11 = { noreturn } +attributes #9 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #10 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } +attributes #11 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #12 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/softposit-rs/optimized/kf9u47qfx5x7qom.ll b/bench/softposit-rs/optimized/kf9u47qfx5x7qom.ll index 8447db4f2b4..e0db5c5b437 100644 --- a/bench/softposit-rs/optimized/kf9u47qfx5x7qom.ll +++ b/bench/softposit-rs/optimized/kf9u47qfx5x7qom.ll @@ -563,9 +563,11 @@ _ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E.exit: ; preds = %2, %7, %_Z %38 = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17h2ea2ae54310fbdaeE", ptr %38, align 8 %39 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val = load ptr, ptr %39, align 8, !nonnull !7, !noundef !7 + %.val = load ptr, ptr %39, align 8 %40 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val1 = load ptr, ptr %40, align 8, !nonnull !7, !noundef !7 + %.val1 = load ptr, ptr %40, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1) ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !14 store ptr @anon.4540a05e70eb433947f08bd653635aa8.5, ptr %3, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -607,6 +609,9 @@ declare void @llvm.lifetime.start.p0(ptr captures(none)) #6 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(ptr captures(none)) #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 writeonly captures(none), i8, i64, i1 immarg) #7 @@ -618,7 +623,8 @@ attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argm 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 #8 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #9 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/sqlite/optimized/sqlite3.ll b/bench/sqlite/optimized/sqlite3.ll index ebd2352fb1f..1ce9bf1de15 100644 --- a/bench/sqlite/optimized/sqlite3.ll +++ b/bench/sqlite/optimized/sqlite3.ll @@ -59548,8 +59548,7 @@ define internal fastcc i32 @pagerWalFrames(ptr noundef captures(none) %0, ptr no br i1 %.not, label %.loopexit42, label %.preheader41 .preheader41: ; preds = %4 - %.not3057 = icmp ne ptr %1, null - tail call void @llvm.assume(i1 %.not3057) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] br label %.lr.ph .lr.ph: ; preds = %.preheader41, %.lr.ph @@ -199257,9 +199256,8 @@ sqlite3VdbeAddOp2.exit: ; preds = %22, %20, %codeReal. } ; Function Attrs: nofree norecurse nosync nounwind memory(read, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable -define internal fastcc range(i32 0, 2) i32 @sqlite3ExprTruthValue(ptr noundef readonly captures(address_is_null) %0) unnamed_addr #16 { - %.not9.i = icmp ne ptr %0, null - tail call void @llvm.assume(i1 %.not9.i) +define internal fastcc range(i32 0, 2) i32 @sqlite3ExprTruthValue(ptr noundef readonly captures(none) %0) unnamed_addr #16 { + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] %2 = getelementptr inbounds nuw i8, ptr %0, i64 4 %3 = load i32, ptr %2, align 4, !tbaa !291 %4 = and i32 %3, 532480 @@ -203375,7 +203373,8 @@ define internal void @sqlite3ExprIfFalse(ptr noundef %0, ptr noundef %1, i32 nou %41 = load i8, ptr %40, align 2, !tbaa !2126 %42 = icmp eq i8 %41, 46 %43 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %44 = load ptr, ptr %43, align 8, !tbaa !905, !nonnull !851, !noundef !851 + %44 = load ptr, ptr %43, align 8, !tbaa !905 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %44) ] %45 = getelementptr inbounds nuw i8, ptr %44, i64 4 %46 = load i32, ptr %45, align 4, !tbaa !291 %47 = and i32 %46, 532480 @@ -206196,6 +206195,7 @@ thread-pre-split: ; preds = %15 ] 62: ; preds = %58 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %60) ] %63 = getelementptr inbounds nuw i8, ptr %60, i64 4 %64 = load i32, ptr %63, align 4, !tbaa !291 %65 = and i32 %64, 532480 @@ -212302,7 +212302,8 @@ define internal void @sqlite3ExprIfTrue(ptr noundef %0, ptr noundef %1, i32 noun %38 = load i8, ptr %37, align 2, !tbaa !2126 %39 = icmp eq i8 %38, 46 %40 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %41 = load ptr, ptr %40, align 8, !tbaa !905, !nonnull !851, !noundef !851 + %41 = load ptr, ptr %40, align 8, !tbaa !905 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %41) ] %42 = getelementptr inbounds nuw i8, ptr %41, i64 4 %43 = load i32, ptr %42, align 4, !tbaa !291 %44 = and i32 %43, 532480 @@ -268989,8 +268990,8 @@ define internal fastcc i32 @whereLoopAddVirtual(ptr noundef nonnull captures(non %22 = load ptr, ptr %21, align 8, !tbaa !2793 %23 = getelementptr inbounds nuw i8, ptr %20, i64 16 %24 = load ptr, ptr %23, align 8, !tbaa !1926 - %.not268.i = icmp ne ptr %11, null - br i1 %.not268.i, label %.lr.ph272.i, label %._crit_edge273.i + %.not268.i = icmp eq ptr %11, null + br i1 %.not268.i, label %._crit_edge273.i, label %.lr.ph272.i .lr.ph272.i: ; preds = %3 %25 = getelementptr inbounds nuw i8, ptr %20, i64 28 @@ -269398,7 +269399,7 @@ sqlite3PrimaryKeyIndex.exit.i: ; preds = %.lr.ph.i.i store i32 %.0186.i, ptr %202, align 8, !tbaa !909 %203 = getelementptr inbounds nuw i8, ptr %.0.i.i216.i, i64 116 store i32 0, ptr %203, align 4, !tbaa !907 - br i1 %.not268.i, label %.lr.ph309.i, label %._crit_edge310.i + br i1 %.not268.i, label %._crit_edge310.i, label %.lr.ph309.i .lr.ph309.i: ; preds = %.loopexit.i, %._crit_edge299.i %204 = phi i32 [ %282, %._crit_edge299.i ], [ 0, %.loopexit.i ] @@ -269745,7 +269746,7 @@ whereLoopResize.exit: ; preds = %318 .lr.ph150: ; preds = %.preheader %360 = load ptr, ptr %175, align 8, !tbaa !891 - call void @llvm.assume(i1 %.not268.i) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %11) ] %361 = load i32, ptr %359, align 4, !tbaa !896 br label %362 @@ -271494,8 +271495,7 @@ define internal fastcc i32 @whereLoopAddVirtualOne(ptr noundef nonnull captures( .lr.ph244: ; preds = %8 %26 = load ptr, ptr %24, align 8, !tbaa !3137 - %.not14.i = icmp ne ptr %10, null - tail call void @llvm.assume(i1 %.not14.i) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %10) ] %27 = getelementptr inbounds nuw i8, ptr %10, i64 20 %28 = load i32, ptr %27, align 4, !tbaa !896 %.not165 = icmp eq ptr %7, null @@ -321748,8 +321748,7 @@ sqlite3_aggregate_context.exit: ; preds = %17, %19 br i1 %28, label %167, label %58 58: ; preds = %55 - %.not.i.i = icmp ne ptr %57, null - tail call void @llvm.assume(i1 %.not.i.i) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %57) ] %59 = getelementptr inbounds nuw i8, ptr %57, i64 20 %60 = load i16, ptr %59, align 4, !tbaa !147 %61 = and i16 %60, 514 @@ -426740,8 +426739,7 @@ sqlite3_value_bytes.exit: ; preds = %25, %30, %34, %37, br label %jsonConvertTextToBlob.exit.thread 44: ; preds = %8 - %.not.i.i106 = icmp ne ptr %16, null - tail call void @llvm.assume(i1 %.not.i.i106) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %16) ] %45 = getelementptr inbounds nuw i8, ptr %16, i64 20 %46 = load i16, ptr %45, align 4, !tbaa !147 %47 = and i16 %46, 514 diff --git a/bench/stat-rs/optimized/4d9pj14shc9lbmph.ll b/bench/stat-rs/optimized/4d9pj14shc9lbmph.ll index 6a10a56dda3..12afd491b2c 100644 --- a/bench/stat-rs/optimized/4d9pj14shc9lbmph.ll +++ b/bench/stat-rs/optimized/4d9pj14shc9lbmph.ll @@ -152,9 +152,11 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i: %.sroa.46.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 24 store ptr @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17hf1cee52ef4fcaed8E", ptr %.sroa.46.0..sroa_idx, align 8 %6 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val = load ptr, ptr %6, align 8, !nonnull !5, !noundef !5 + %.val = load ptr, ptr %6, align 8 %7 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val7 = load ptr, ptr %7, align 8, !nonnull !5, !noundef !5 + %.val7 = load ptr, ptr %7, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val7) ] call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !6 store ptr @anon.add817559d7beeee5c0788ec3c34287f.17, ptr %2, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -311,9 +313,11 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i: %.sroa.46.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 24 store ptr @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17hf1cee52ef4fcaed8E", ptr %.sroa.46.0..sroa_idx, align 8 %6 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val = load ptr, ptr %6, align 8, !nonnull !5, !noundef !5 + %.val = load ptr, ptr %6, align 8 %7 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val7 = load ptr, ptr %7, align 8, !nonnull !5, !noundef !5 + %.val7 = load ptr, ptr %7, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val7) ] call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !9 store ptr @anon.add817559d7beeee5c0788ec3c34287f.20, ptr %2, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -360,7 +364,7 @@ define noundef double @"_ZN126_$LT$statrs..distribution..fisher_snedecor..Fisher 19: ; preds = %8 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !17 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 40, i1 false), !noalias !15 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #15, !noalias !12 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #16, !noalias !12 unreachable _ZN6statrs8function4beta8beta_reg17hba0ea301559e3806E.exit: ; preds = %8 @@ -405,7 +409,7 @@ define noundef double @"_ZN126_$LT$statrs..distribution..fisher_snedecor..Fisher 20: ; preds = %8 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !23 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 40, i1 false), !noalias !21 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #15, !noalias !18 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #16, !noalias !18 unreachable _ZN6statrs8function4beta8beta_reg17hba0ea301559e3806E.exit: ; preds = %8 @@ -565,7 +569,7 @@ define noundef double @"_ZN123_$LT$statrs..distribution..fisher_snedecor..Fisher store i64 %.sroa.6.0.ph.i, ptr %.sroa.6.0..sroa_idx.i, align 8, !noalias !28 %.sroa.9.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %3, i64 16 store i64 1, ptr %.sroa.9.0..sroa_idx.i, align 8, !noalias !28 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.42.llvm.10715550030521876899) #15, !noalias !29 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.42.llvm.10715550030521876899) #16, !noalias !29 unreachable _ZN6statrs8function4beta4beta17h85c22bb6a61a7ba5E.exit: ; preds = %20 @@ -626,9 +630,11 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i: %.sroa.42.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 store ptr @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17hf1cee52ef4fcaed8E", ptr %.sroa.42.0..sroa_idx, align 8 %4 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val = load ptr, ptr %4, align 8, !nonnull !5, !noundef !5 + %.val = load ptr, ptr %4, align 8 %5 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val3 = load ptr, ptr %5, align 8, !nonnull !5, !noundef !5 + %.val3 = load ptr, ptr %5, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3) ] call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !35 store ptr @anon.add817559d7beeee5c0788ec3c34287f.22, ptr %2, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -922,9 +928,11 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i: %.sroa.46.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 24 store ptr @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17hf1cee52ef4fcaed8E", ptr %.sroa.46.0..sroa_idx, align 8 %6 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val = load ptr, ptr %6, align 8, !nonnull !5, !noundef !5 + %.val = load ptr, ptr %6, align 8 %7 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val7 = load ptr, ptr %7, align 8, !nonnull !5, !noundef !5 + %.val7 = load ptr, ptr %7, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val7) ] call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !38 store ptr @anon.add817559d7beeee5c0788ec3c34287f.28, ptr %2, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -960,7 +968,7 @@ define noundef double @"_ZN128_$LT$statrs..distribution..negative_binomial..Nega 12: ; preds = %2 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !46 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 40, i1 false), !noalias !44 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #15, !noalias !41 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #16, !noalias !41 unreachable _ZN6statrs8function4beta8beta_reg17hba0ea301559e3806E.exit: ; preds = %2 @@ -990,7 +998,7 @@ define noundef double @"_ZN128_$LT$statrs..distribution..negative_binomial..Nega 13: ; preds = %2 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !52 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 40, i1 false), !noalias !50 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #15, !noalias !47 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #16, !noalias !47 unreachable _ZN6statrs8function4beta8beta_reg17hba0ea301559e3806E.exit: ; preds = %2 @@ -1255,7 +1263,7 @@ define noundef double @_ZN6statrs8function4beta7ln_beta17h82d301b62336438bE(doub store i64 %.sroa.7.0.ph, ptr %.sroa.7.0..sroa_idx, align 8, !noalias !61 %.sroa.11.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 16 store i64 1, ptr %.sroa.11.0..sroa_idx, align 8, !noalias !61 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.39.llvm.10715550030521876899) #15, !noalias !62 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.39.llvm.10715550030521876899) #16, !noalias !62 unreachable "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc4e55484334486acE.llvm.10715550030521876899.exit": ; preds = %5 @@ -1327,7 +1335,7 @@ define noundef double @_ZN6statrs8function4beta4beta17h85c22bb6a61a7ba5E(double store i64 %.sroa.6.0.ph, ptr %.sroa.6.0..sroa_idx, align 8, !noalias !70 %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 16 store i64 1, ptr %.sroa.9.0..sroa_idx, align 8, !noalias !70 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.42.llvm.10715550030521876899) #15, !noalias !71 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.42.llvm.10715550030521876899) #16, !noalias !71 unreachable "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc4e55484334486acE.llvm.10715550030521876899.exit": ; preds = %5 @@ -1419,7 +1427,7 @@ define noundef double @_ZN6statrs8function4beta8beta_inc17hdb112917ca1b2d54E(dou store i64 %.sroa.10.0.ph, ptr %.sroa.10.0..sroa_idx, align 8, !noalias !87 %.sroa.11.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.11.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.11, i64 16, i1 false), !noalias !87 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.43) #15, !noalias !88 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.43) #16, !noalias !88 unreachable "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc4e55484334486acE.llvm.10715550030521876899.exit": ; preds = %12 @@ -1502,7 +1510,7 @@ define noundef double @_ZN6statrs8function4beta8beta_reg17hba0ea301559e3806E(dou 8: ; preds = %3 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !109 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %4, ptr noundef nonnull align 8 dereferenceable(40) %5, i64 40, i1 false), !noalias !107 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #15, !noalias !104 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #16, !noalias !104 unreachable "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc4e55484334486acE.llvm.10715550030521876899.exit": ; preds = %3 @@ -1723,7 +1731,7 @@ define noundef double @_ZN6statrs8function4beta12inv_beta_reg17h6cd70450337c051a store i64 %.sroa.7.0.ph.i, ptr %.sroa.7.0..sroa_idx.i, align 8, !noalias !114 %.sroa.11.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %6, i64 16 store i64 1, ptr %.sroa.11.0..sroa_idx.i, align 8, !noalias !114 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.39.llvm.10715550030521876899) #15, !noalias !115 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.39.llvm.10715550030521876899) #16, !noalias !115 unreachable _ZN6statrs8function4beta7ln_beta17h82d301b62336438bE.exit: ; preds = %8 @@ -1875,7 +1883,7 @@ _ZN6statrs8function4beta7ln_beta17h82d301b62336438bE.exit: ; preds = %8 119: ; preds = %116 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !124 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %4, ptr noundef nonnull align 8 dereferenceable(40) %5, i64 40, i1 false), !noalias !122 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #15, !noalias !119 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #16, !noalias !119 unreachable _ZN6statrs8function4beta8beta_reg17hba0ea301559e3806E.exit: ; preds = %116 @@ -1991,7 +1999,7 @@ define noundef double @_ZN6statrs8function8logistic5logit17hac7411a972977cb7E(do store ptr @anon.add817559d7beeee5c0788ec3c34287f.49, ptr %.sroa.8.0..sroa_idx, align 8, !noalias !129 %.sroa.9.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 32 store i64 1, ptr %.sroa.9.0..sroa_idx, align 8, !noalias !129 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %2, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.48) #15, !noalias !130 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %2, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.48) #16, !noalias !130 unreachable "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hc4e55484334486acE.llvm.10715550030521876899.exit": ; preds = %1 @@ -2271,6 +2279,9 @@ declare double @llvm.fabs.f64(double) #8 ; Function Attrs: mustprogress nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare double @llvm.copysign.f64(double, double) #8 +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #9 + ; Function Attrs: nonlazybind uwtable declare noundef zeroext i1 @"_ZN4core3fmt5float50_$LT$impl$u20$core..fmt..Debug$u20$for$u20$f64$GT$3fmt17hfc20ca8ee8067926E"(ptr noalias noundef readonly align 8 dereferenceable(8), ptr noalias noundef align 8 dereferenceable(64)) unnamed_addr #4 @@ -2367,13 +2378,14 @@ attributes #5 = { mustprogress nofree norecurse nounwind nonlazybind willreturn attributes #6 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #7 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #8 = { mustprogress nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } -attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #10 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #11 = { mustprogress nocallback nofree nounwind nonlazybind willreturn memory(errnomem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #12 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #13 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } -attributes #14 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #15 = { noreturn } +attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #10 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } +attributes #11 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #12 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #13 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #14 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } +attributes #15 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #16 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/stat-rs/optimized/rkxxfn3f5mhspne.ll b/bench/stat-rs/optimized/rkxxfn3f5mhspne.ll index bbfb1b4a708..fa01376f364 100644 --- a/bench/stat-rs/optimized/rkxxfn3f5mhspne.ll +++ b/bench/stat-rs/optimized/rkxxfn3f5mhspne.ll @@ -285,9 +285,11 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i: %.sroa.46.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 24 store ptr @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17hf1cee52ef4fcaed8E", ptr %.sroa.46.0..sroa_idx, align 8 %6 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val = load ptr, ptr %6, align 8, !nonnull !4, !noundef !4 + %.val = load ptr, ptr %6, align 8 %7 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val7 = load ptr, ptr %7, align 8, !nonnull !4, !noundef !4 + %.val7 = load ptr, ptr %7, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val7) ] call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !33 store ptr @anon.26f4206a9fc8a8c6d289e2be3cec11c9.4, ptr %2, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -374,7 +376,7 @@ define noundef double @"_ZN105_$LT$statrs..distribution..beta..Beta$u20$as$u20$s 36: ; preds = %"_ZN47_$LT$f64$u20$as$u20$approx..ulps_eq..UlpsEq$GT$7ulps_eq17hdd68b037342b848bE.llvm.13986783010576937582.exit.thread4" call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !42 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 40, i1 false), !noalias !40 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #17, !noalias !36 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #18, !noalias !36 unreachable _ZN6statrs8function4beta8beta_reg17hba0ea301559e3806E.exit: ; preds = %"_ZN47_$LT$f64$u20$as$u20$approx..ulps_eq..UlpsEq$GT$7ulps_eq17hdd68b037342b848bE.llvm.13986783010576937582.exit.thread4" @@ -459,7 +461,7 @@ define noundef double @"_ZN105_$LT$statrs..distribution..beta..Beta$u20$as$u20$s 37: ; preds = %"_ZN47_$LT$f64$u20$as$u20$approx..ulps_eq..UlpsEq$GT$7ulps_eq17hdd68b037342b848bE.llvm.13986783010576937582.exit.thread4" call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !48 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 40, i1 false), !noalias !46 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #17, !noalias !43 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #18, !noalias !43 unreachable _ZN6statrs8function4beta8beta_reg17hba0ea301559e3806E.exit: ; preds = %"_ZN47_$LT$f64$u20$as$u20$approx..ulps_eq..UlpsEq$GT$7ulps_eq17hdd68b037342b848bE.llvm.13986783010576937582.exit.thread4" @@ -561,7 +563,7 @@ define { i64, double } @"_ZN104_$LT$statrs..distribution..beta..Beta$u20$as$u20$ store i64 %.sroa.7.0.ph.i, ptr %.sroa.7.0..sroa_idx.i, align 8, !noalias !53 %.sroa.11.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %2, i64 16 store i64 1, ptr %.sroa.11.0..sroa_idx.i, align 8, !noalias !53 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %2, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.39.llvm.10715550030521876899) #17, !noalias !54 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %2, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.39.llvm.10715550030521876899) #18, !noalias !54 unreachable _ZN6statrs8function4beta7ln_beta17h82d301b62336438bE.exit: ; preds = %13 @@ -1091,9 +1093,11 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i: %.sroa.46.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 24 store ptr @"_ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$u64$GT$3fmt17h5386a9d5c884cdb0E", ptr %.sroa.46.0..sroa_idx, align 8 %6 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val = load ptr, ptr %6, align 8, !nonnull !4, !noundef !4 + %.val = load ptr, ptr %6, align 8 %7 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val7 = load ptr, ptr %7, align 8, !nonnull !4, !noundef !4 + %.val7 = load ptr, ptr %7, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val7) ] call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !58 store ptr @anon.26f4206a9fc8a8c6d289e2be3cec11c9.11, ptr %2, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -1136,7 +1140,7 @@ define noundef double @"_ZN111_$LT$statrs..distribution..binomial..Binomial$u20$ 16: ; preds = %7 call void @llvm.lifetime.start.p0(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) %4, i64 40, i1 false), !noalias !64 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #17, !noalias !61 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #18, !noalias !61 unreachable _ZN6statrs8function4beta8beta_reg17hba0ea301559e3806E.exit: ; preds = %7 @@ -1175,7 +1179,7 @@ define noundef double @"_ZN111_$LT$statrs..distribution..binomial..Binomial$u20$ 15: ; preds = %7 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !72 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 40, i1 false), !noalias !70 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #17, !noalias !67 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.add817559d7beeee5c0788ec3c34287f.12.llvm.10715550030521876899, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.13.llvm.10715550030521876899, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.add817559d7beeee5c0788ec3c34287f.44.llvm.10715550030521876899) #18, !noalias !67 unreachable _ZN6statrs8function4beta8beta_reg17hba0ea301559e3806E.exit: ; preds = %7 @@ -1675,9 +1679,11 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i: %.sroa.42.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 store ptr @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17hf1cee52ef4fcaed8E", ptr %.sroa.42.0..sroa_idx, align 8 %5 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val = load ptr, ptr %5, align 8, !nonnull !4, !noundef !4 + %.val = load ptr, ptr %5, align 8 %6 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val3 = load ptr, ptr %6, align 8, !nonnull !4, !noundef !4 + %.val3 = load ptr, ptr %6, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3) ] call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !150 store ptr @anon.26f4206a9fc8a8c6d289e2be3cec11c9.13, ptr %2, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -1904,9 +1910,11 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i: %.sroa.42.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 store ptr @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17hf1cee52ef4fcaed8E", ptr %.sroa.42.0..sroa_idx, align 8 %4 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val = load ptr, ptr %4, align 8, !nonnull !4, !noundef !4 + %.val = load ptr, ptr %4, align 8 %5 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val3 = load ptr, ptr %5, align 8, !nonnull !4, !noundef !4 + %.val3 = load ptr, ptr %5, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3) ] call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !176 store ptr @anon.26f4206a9fc8a8c6d289e2be3cec11c9.15, ptr %2, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -1940,7 +1948,7 @@ define noundef double @"_ZN109_$LT$statrs..distribution..poisson..Poisson$u20$as 10: ; preds = %2 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !184 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 40, i1 false), !noalias !182 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.c1bf2e375591bb6a447bdf89942637bc.4.llvm.11173233603740741911, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c1bf2e375591bb6a447bdf89942637bc.5.llvm.11173233603740741911, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c1bf2e375591bb6a447bdf89942637bc.10.llvm.11173233603740741911) #17, !noalias !179 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.c1bf2e375591bb6a447bdf89942637bc.4.llvm.11173233603740741911, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c1bf2e375591bb6a447bdf89942637bc.5.llvm.11173233603740741911, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c1bf2e375591bb6a447bdf89942637bc.10.llvm.11173233603740741911) #18, !noalias !179 unreachable _ZN6statrs8function5gamma8gamma_ur17h0b4d3ff45eccbdceE.exit: ; preds = %2 @@ -1967,7 +1975,7 @@ define noundef double @"_ZN109_$LT$statrs..distribution..poisson..Poisson$u20$as 10: ; preds = %2 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !190 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 8 dereferenceable(40) %4, i64 40, i1 false), !noalias !188 - call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.c1bf2e375591bb6a447bdf89942637bc.4.llvm.11173233603740741911, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c1bf2e375591bb6a447bdf89942637bc.5.llvm.11173233603740741911, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c1bf2e375591bb6a447bdf89942637bc.14.llvm.11173233603740741911) #17, !noalias !185 + call void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1 @anon.c1bf2e375591bb6a447bdf89942637bc.4.llvm.11173233603740741911, i64 noundef 43, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c1bf2e375591bb6a447bdf89942637bc.5.llvm.11173233603740741911, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c1bf2e375591bb6a447bdf89942637bc.14.llvm.11173233603740741911) #18, !noalias !185 unreachable _ZN6statrs8function5gamma8gamma_lr17hde27b862f6dd8958E.exit: ; preds = %2 @@ -2179,9 +2187,11 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i: %.sroa.410.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 40 store ptr @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17hf1cee52ef4fcaed8E", ptr %.sroa.410.0..sroa_idx, align 8 %8 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val = load ptr, ptr %8, align 8, !nonnull !4, !noundef !4 + %.val = load ptr, ptr %8, align 8 %9 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val11 = load ptr, ptr %9, align 8, !nonnull !4, !noundef !4 + %.val11 = load ptr, ptr %9, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val11) ] call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !213 store ptr @anon.26f4206a9fc8a8c6d289e2be3cec11c9.18, ptr %2, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -2593,9 +2603,11 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i: %.sroa.46.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 24 store ptr @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17hf1cee52ef4fcaed8E", ptr %.sroa.46.0..sroa_idx, align 8 %6 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val = load ptr, ptr %6, align 8, !nonnull !4, !noundef !4 + %.val = load ptr, ptr %6, align 8 %7 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val7 = load ptr, ptr %7, align 8, !nonnull !4, !noundef !4 + %.val7 = load ptr, ptr %7, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val7) ] call void @llvm.lifetime.start.p0(ptr nonnull %2), !noalias !219 store ptr @anon.26f4206a9fc8a8c6d289e2be3cec11c9.24, ptr %2, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -2933,6 +2945,9 @@ declare noundef double @"_ZN107_$LT$statrs..distribution..gamma..Gamma$u20$as$u2 ; Function Attrs: nonlazybind uwtable declare noundef double @"_ZN104_$LT$statrs..distribution..gamma..Gamma$u20$as$u20$statrs..distribution..Continuous$LT$f64$C$f64$GT$$GT$3pdf17h1673f1a8c3c39778E"(ptr noalias noundef readonly align 8 dereferenceable(16), double noundef) unnamed_addr #8 +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #14 + ; Function Attrs: cold noreturn nonlazybind uwtable declare void @_ZN4core6result13unwrap_failed17h82b551e0ff2b2176E(ptr noalias noundef nonnull readonly align 1, i64 noundef, ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(24), ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #13 @@ -2971,10 +2986,11 @@ attributes #10 = { nofree norecurse nosync nounwind nonlazybind memory(none) uwt attributes #11 = { mustprogress nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } attributes #12 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #13 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #14 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #15 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } -attributes #16 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #17 = { noreturn } +attributes #14 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: write) } +attributes #15 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #16 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } +attributes #17 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #18 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/sundials/optimized/arkode_splittingstep_coefficients.ll b/bench/sundials/optimized/arkode_splittingstep_coefficients.ll index 786f94ae62b..1251c471baf 100644 --- a/bench/sundials/optimized/arkode_splittingstep_coefficients.ll +++ b/bench/sundials/optimized/arkode_splittingstep_coefficients.ll @@ -52,14 +52,13 @@ define noalias noundef ptr @SplittingStepCoefficients_Alloc(i32 noundef %0, i32 %15 = zext nneg i32 %0 to i64 %16 = tail call noalias ptr @calloc(i64 noundef %15, i64 noundef 8) #15 store ptr %16, ptr %8, align 8, !tbaa !14 - %17 = icmp ne ptr %16, null - tail call void @llvm.assume(i1 %17) - %18 = shl nuw nsw i64 %15, 3 - %19 = tail call noalias ptr @malloc(i64 noundef %18) #14 - %20 = getelementptr inbounds nuw i8, ptr %8, i64 8 - store ptr %19, ptr %20, align 8, !tbaa !15 - %21 = icmp eq ptr %19, null - br i1 %21, label %.loopexit.sink.split, label %.lr.ph.preheader + call void @llvm.assume(i1 true) [ "nonnull"(ptr %16) ] + %17 = shl nuw nsw i64 %15, 3 + %18 = tail call noalias ptr @malloc(i64 noundef %17) #14 + %19 = getelementptr inbounds nuw i8, ptr %8, i64 8 + store ptr %18, ptr %19, align 8, !tbaa !15 + %20 = icmp eq ptr %18, null + br i1 %20, label %.loopexit.sink.split, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %10 %22 = add nuw nsw i32 %1, 1 @@ -67,9 +66,8 @@ define noalias noundef ptr @SplittingStepCoefficients_Alloc(i32 noundef %0, i32 %24 = zext nneg i32 %23 to i64 %25 = shl nuw nsw i64 %24, 3 %26 = tail call noalias ptr @malloc(i64 noundef %25) #14 - %27 = icmp ne ptr %26, null - tail call void @llvm.assume(i1 %27) - %28 = zext nneg i32 %22 to i64 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %26) ] + %26 = zext nneg i32 %21 to i64 br label %.lr.ph ._crit_edge: ; preds = %.lr.ph @@ -88,9 +86,9 @@ define noalias noundef ptr @SplittingStepCoefficients_Alloc(i32 noundef %0, i32 .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] - %36 = mul nuw nsw i64 %indvars.iv, %28 + %36 = mul nuw nsw i64 %indvars.iv, %26 %37 = getelementptr inbounds nuw ptr, ptr %26, i64 %36 - %38 = getelementptr inbounds nuw ptr, ptr %19, i64 %indvars.iv + %38 = getelementptr inbounds nuw ptr, ptr %18, i64 %indvars.iv store ptr %37, ptr %38, align 8, !tbaa !16 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %15 @@ -98,7 +96,7 @@ define noalias noundef ptr @SplittingStepCoefficients_Alloc(i32 noundef %0, i32 39: ; preds = %._crit_edge tail call void @free(ptr noundef nonnull %16) #16 - %40 = load ptr, ptr %19, align 8, !tbaa !16 + %40 = load ptr, ptr %18, align 8, !tbaa !16 %.not19.i65 = icmp eq ptr %40, null br i1 %.not19.i65, label %.loopexit.sink.split, label %41 @@ -109,18 +107,18 @@ define noalias noundef ptr @SplittingStepCoefficients_Alloc(i32 noundef %0, i32 43: ; preds = %41 tail call void @free(ptr noundef nonnull %42) #16 - %.pre21.i68 = load ptr, ptr %19, align 8, !tbaa !16 + %.pre21.i68 = load ptr, ptr %18, align 8, !tbaa !16 br label %44 44: ; preds = %43, %41 - %45 = phi ptr [ %.pre21.i68, %43 ], [ %40, %41 ] + %45 = phi ptr [ %.pre21.i68, %41 ], [ %40, %39 ] tail call void @free(ptr noundef %45) #16 br label %.loopexit.sink.split .preheader: ; preds = %.preheader.preheader, %._crit_edge86 %indvars.iv95 = phi i64 [ 0, %.preheader.preheader ], [ %indvars.iv.next96, %._crit_edge86 ] %46 = mul nuw nsw i64 %indvars.iv95, %35 - %47 = getelementptr inbounds nuw ptr, ptr %19, i64 %indvars.iv95 + %47 = getelementptr inbounds nuw ptr, ptr %18, i64 %indvars.iv95 %48 = load ptr, ptr %47, align 8, !tbaa !16 br label %49 @@ -130,7 +128,7 @@ define noalias noundef ptr @SplittingStepCoefficients_Alloc(i32 noundef %0, i32 br i1 %exitcond99.not, label %.loopexit, label %.preheader 49: ; preds = %.preheader, %49 - %indvars.iv90 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next91, %49 ] + %indvars.iv90 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next91, %47 ] %50 = add nuw nsw i64 %indvars.iv90, %46 %51 = mul nuw nsw i64 %50, %33 %52 = getelementptr inbounds nuw double, ptr %31, i64 %51 @@ -141,7 +139,7 @@ define noalias noundef ptr @SplittingStepCoefficients_Alloc(i32 noundef %0, i32 br i1 %exitcond94.not, label %._crit_edge86, label %49 .loopexit.sink.split: ; preds = %39, %44, %10 - %.sink = phi ptr [ %16, %10 ], [ %19, %44 ], [ %19, %39 ] + %.sink = phi ptr [ %16, %10 ], [ %18, %42 ], [ %18, %37 ] tail call void @free(ptr noundef nonnull %.sink) #16 tail call void @free(ptr noundef nonnull %8) #16 br label %.loopexit diff --git a/bench/syn/optimized/2i67i8azb4r5b3mw.ll b/bench/syn/optimized/2i67i8azb4r5b3mw.ll index 577fbc0bf0d..01f4f726df2 100644 --- a/bench/syn/optimized/2i67i8azb4r5b3mw.ll +++ b/bench/syn/optimized/2i67i8azb4r5b3mw.ll @@ -1307,10 +1307,12 @@ define internal fastcc void @"_ZN4core3ptr90drop_in_place$LT$core..option..Optio 4: ; preds = %3 %5 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.0.val) ] tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef 328, i64 noundef 8) #26 resume { ptr, i32 } %5 "_ZN4core3ptr62drop_in_place$LT$alloc..boxed..Box$LT$syn..data..Field$GT$$GT$17hf57936b74d44e390E.exit": ; preds = %3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.0.val) ] tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef 328, i64 noundef 8) #26 br label %2 } @@ -6992,10 +6994,12 @@ define hidden void @"_ZN3syn10punctuated23Punctuated$LT$T$C$P$GT$10push_punct17h %29 = add i64 %28, 1 store i64 %29, ptr %14, align 8, !alias.scope !1419, !noalias !1422 call void @llvm.lifetime.end.p0(ptr nonnull %3) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %6) ] tail call void @__rust_dealloc(ptr noundef nonnull %6, i64 noundef 240, i64 noundef 8) #26 ret void 30: ; preds = %19 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %6) ] call void @__rust_dealloc(ptr noundef nonnull %6, i64 noundef 240, i64 noundef 8) #26 resume { ptr, i32 } %20 } @@ -7582,6 +7586,7 @@ _ZN3syn5parse11ParseBuffer4span17h1ca0c8b0ffc956f0E.exit.i.i: ; preds = %55 unreachable 75: ; preds = %71 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %60) ] call void @__rust_dealloc(ptr noundef nonnull %60, i64 noundef 296, i64 noundef 8) #26 br label %.body @@ -7608,6 +7613,7 @@ _ZN3syn5parse11ParseBuffer4span17h1ca0c8b0ffc956f0E.exit.i.i: ; preds = %55 %82 = add i64 %79, 1 store i64 %82, ptr %.sroa.523.0..sroa_idx, align 8, !alias.scope !1489, !noalias !1492 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !1486 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %60) ] call void @__rust_dealloc(ptr noundef nonnull %60, i64 noundef 296, i64 noundef 8) #26 %83 = load ptr, ptr %1, align 8, !noundef !64 %84 = load ptr, ptr %16, align 8, !noundef !64 @@ -7906,6 +7912,7 @@ _ZN3syn5parse11ParseBuffer4span17h1ca0c8b0ffc956f0E.exit.i.i: ; preds = %55 unreachable 75: ; preds = %71 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %60) ] call void @__rust_dealloc(ptr noundef nonnull %60, i64 noundef 176, i64 noundef 8) #26 br label %.body @@ -7932,6 +7939,7 @@ _ZN3syn5parse11ParseBuffer4span17h1ca0c8b0ffc956f0E.exit.i.i: ; preds = %55 %82 = add i64 %79, 1 store i64 %82, ptr %.sroa.523.0..sroa_idx, align 8, !alias.scope !1527, !noalias !1530 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !1524 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %60) ] call void @__rust_dealloc(ptr noundef nonnull %60, i64 noundef 176, i64 noundef 8) #26 %83 = load ptr, ptr %1, align 8, !noundef !64 %84 = load ptr, ptr %16, align 8, !noundef !64 @@ -8191,6 +8199,7 @@ _ZN3syn5parse11ParseBuffer4span17h1ca0c8b0ffc956f0E.exit.i.i: ; preds = %55 unreachable 75: ; preds = %71 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %60) ] call void @__rust_dealloc(ptr noundef nonnull %60, i64 noundef 328, i64 noundef 8) #26 br label %.body @@ -8217,6 +8226,7 @@ _ZN3syn5parse11ParseBuffer4span17h1ca0c8b0ffc956f0E.exit.i.i: ; preds = %55 %82 = add i64 %79, 1 store i64 %82, ptr %.sroa.523.0..sroa_idx, align 8, !alias.scope !1555, !noalias !1558 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !1552 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %60) ] call void @__rust_dealloc(ptr noundef nonnull %60, i64 noundef 328, i64 noundef 8) #26 %83 = load ptr, ptr %1, align 8, !noundef !64 %84 = load ptr, ptr %16, align 8, !noundef !64 @@ -9893,6 +9903,7 @@ define hidden void @"_ZN102_$LT$syn..punctuated..Punctuated$LT$T$C$P$GT$$u20$as$ %.sroa.06.0.copyload = load i64, ptr %9, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(320) %.sroa.5, ptr noundef nonnull align 8 dereferenceable(320) %.sroa.4.0..sroa_idx, i64 320, i1 false) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %9) ] call void @__rust_dealloc(ptr noundef nonnull %9, i64 noundef 328, i64 noundef 8) #26 br label %19 @@ -10005,6 +10016,7 @@ define hidden void @"_ZN102_$LT$syn..punctuated..Punctuated$LT$T$C$P$GT$$u20$as$ %.sroa.06.0.copyload = load i64, ptr %.val15, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %.val15, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(320) %.sroa.5, ptr noundef nonnull align 8 dereferenceable(320) %.sroa.4.0..sroa_idx, i64 320, i1 false) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val15) ] call void @__rust_dealloc(ptr noundef nonnull %.val15, i64 noundef 328, i64 noundef 8) #26 br label %17 @@ -11613,6 +11625,7 @@ define hidden void @"_ZN3syn10punctuated8printing97_$LT$impl$u20$quote..to_token %7 = getelementptr inbounds nuw i8, ptr %0, i64 24 %8 = load ptr, ptr %7, align 8, !alias.scope !2328, !noalias !2331, !noundef !64 %9 = getelementptr inbounds { { { i64, [21 x i64] }, { { i64, ptr }, i64 }, { i64, [3 x i64] }, { i32, [1 x i32] } }, { [1 x i32] }, [1 x i32] }, ptr %4, i64 %6 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %9) ] br label %"_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17hb0fd1541688be8f9E.exit.outer" "_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17hb0fd1541688be8f9E.exit.outer": ; preds = %"_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17hb0fd1541688be8f9E.exit.outer.backedge", %2 @@ -11622,6 +11635,7 @@ define hidden void @"_ZN3syn10punctuated8printing97_$LT$impl$u20$quote..to_token "_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17hb0fd1541688be8f9E.exit": ; preds = %"_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17hb0fd1541688be8f9E.exit.outer", %"_ZN52_$LT$$RF$T$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17h66042a23a7b7bca7E.exit.i" %.sroa.0.0.i = phi ptr [ %14, %"_ZN52_$LT$$RF$T$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17h66042a23a7b7bca7E.exit.i" ], [ %.sroa.0.0.i.ph, %"_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17hb0fd1541688be8f9E.exit.outer" ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.0.i) ] %10 = icmp eq ptr %.sroa.0.0.i, %9 br i1 %10, label %11, label %13 @@ -11706,12 +11720,14 @@ define hidden void @"_ZN3syn10punctuated8printing97_$LT$impl$u20$quote..to_token %8 = getelementptr inbounds nuw i8, ptr %0, i64 24 %9 = load ptr, ptr %8, align 8, !alias.scope !2370, !noalias !2373, !noundef !64 %10 = getelementptr inbounds { { i64, [14 x i64] }, { [1 x i32] }, [1 x i32] }, ptr %5, i64 %7 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %10) ] %.sroa.9.8..sroa_idx.i = getelementptr inbounds nuw i8, ptr %3, i64 8 br label %11 11: ; preds = %18, %2 %.sroa.6.0.i = phi ptr [ %9, %2 ], [ %.sroa.6.1.ph.i, %18 ] %.sroa.0.0.i = phi ptr [ %5, %2 ], [ %.sroa.0.1.ph.i, %18 ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.0.i) ] %12 = icmp eq ptr %.sroa.0.0.i, %10 br i1 %12, label %13, label %15 @@ -11751,6 +11767,7 @@ define hidden void @"_ZN3syn10punctuated8printing97_$LT$impl$u20$quote..to_token %9 = getelementptr inbounds nuw i8, ptr %0, i64 24 %10 = load ptr, ptr %9, align 8, !alias.scope !2380, !noalias !2383, !noundef !64 %11 = getelementptr inbounds { { { i64, [28 x i64] }, { { i64, ptr }, i64 }, { i64, [4 x i64] } }, { [1 x i32] }, [1 x i32] }, ptr %6, i64 %8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %11) ] %12 = getelementptr inbounds nuw i8, ptr %4, i64 8 %13 = getelementptr inbounds nuw i8, ptr %4, i64 16 %14 = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -11764,6 +11781,7 @@ define hidden void @"_ZN3syn10punctuated8printing97_$LT$impl$u20$quote..to_token "_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17ha8f636f012a28e1bE.exit": ; preds = %"_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17ha8f636f012a28e1bE.exit.outer", %"_ZN52_$LT$$RF$T$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17h8a2ab58f46441019E.exit.i" %.sroa.0.0.i = phi ptr [ %20, %"_ZN52_$LT$$RF$T$u20$as$u20$quote..to_tokens..ToTokens$GT$9to_tokens17h8a2ab58f46441019E.exit.i" ], [ %.sroa.0.0.i.ph, %"_ZN3syn10punctuated8printing91_$LT$impl$u20$quote..to_tokens..ToTokens$u20$for$u20$syn..punctuated..Pair$LT$T$C$P$GT$$GT$9to_tokens17ha8f636f012a28e1bE.exit.outer" ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.0.i) ] %16 = icmp eq ptr %.sroa.0.0.i, %11 br i1 %16, label %17, label %19 diff --git a/bench/syn/optimized/4llvvcm7ykus6q9g.ll b/bench/syn/optimized/4llvvcm7ykus6q9g.ll index feb108bd6a8..84281c1ed93 100644 --- a/bench/syn/optimized/4llvvcm7ykus6q9g.ll +++ b/bench/syn/optimized/4llvvcm7ykus6q9g.ll @@ -8341,8 +8341,9 @@ define hidden void @"_ZN4core3ptr47drop_in_place$LT$syn..lookahead..Lookahead1$G 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %.val1.i.i2.i.i.i = load ptr, ptr %5, align 8, !alias.scope !3879, !nonnull !4, !noundef !4 + %.val1.i.i2.i.i.i = load ptr, ptr %5, align 8, !alias.scope !3879 %6 = shl nuw i64 %.val.i.i1.i.i.i, 4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1.i.i2.i.i.i) ] tail call void @__rust_dealloc(ptr noundef nonnull %.val1.i.i2.i.i.i, i64 noundef %6, i64 noundef 8) #17, !noalias !3879 br label %"_ZN4core3ptr78drop_in_place$LT$core..cell..RefCell$LT$alloc..vec..Vec$LT$$RF$str$GT$$GT$$GT$17hefbcd0d5b0d02b63E.llvm.8351105841907204142.exit" @@ -9235,8 +9236,9 @@ define hidden void @"_ZN4core3ptr51drop_in_place$LT$alloc..vec..Vec$LT$$RF$str$G 3: ; preds = %1 %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %.val1.i.i2 = load ptr, ptr %4, align 8, !alias.scope !4242, !nonnull !4, !noundef !4 + %.val1.i.i2 = load ptr, ptr %4, align 8, !alias.scope !4242 %5 = shl nuw i64 %.val.i.i1, 4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1.i.i2) ] tail call void @__rust_dealloc(ptr noundef nonnull %.val1.i.i2, i64 noundef %5, i64 noundef 8) #17, !noalias !4242 br label %"_ZN4core3ptr58drop_in_place$LT$alloc..raw_vec..RawVec$LT$$RF$str$GT$$GT$17h183a8870e94296b3E.llvm.8351105841907204142.exit3" @@ -9724,8 +9726,9 @@ define hidden void @"_ZN4core3ptr58drop_in_place$LT$alloc..raw_vec..RawVec$LT$$R 3: ; preds = %1 %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %.val1.i = load ptr, ptr %4, align 8, !alias.scope !4451, !nonnull !4, !noundef !4 + %.val1.i = load ptr, ptr %4, align 8, !alias.scope !4451 %5 = shl nuw i64 %.val.i, 4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1.i) ] tail call void @__rust_dealloc(ptr noundef nonnull %.val1.i, i64 noundef %5, i64 noundef 8) #17, !noalias !4451 br label %"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hf3bcb00eccf542ebE.llvm.8351105841907204142.exit" @@ -13027,8 +13030,9 @@ define hidden void @"_ZN4core3ptr78drop_in_place$LT$core..cell..RefCell$LT$alloc 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %.val1.i.i2.i.i = load ptr, ptr %5, align 8, !alias.scope !5921, !nonnull !4, !noundef !4 + %.val1.i.i2.i.i = load ptr, ptr %5, align 8, !alias.scope !5921 %6 = shl nuw i64 %.val.i.i1.i.i, 4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1.i.i2.i.i) ] tail call void @__rust_dealloc(ptr noundef nonnull %.val1.i.i2.i.i, i64 noundef %6, i64 noundef 8) #17, !noalias !5921 br label %"_ZN4core3ptr81drop_in_place$LT$core..cell..UnsafeCell$LT$alloc..vec..Vec$LT$$RF$str$GT$$GT$$GT$17hcbfe1f296c3d6a89E.llvm.8351105841907204142.exit" @@ -13294,8 +13298,9 @@ define hidden void @"_ZN4core3ptr81drop_in_place$LT$core..cell..UnsafeCell$LT$al 3: ; preds = %1 %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %.val1.i.i2.i = load ptr, ptr %4, align 8, !alias.scope !6012, !nonnull !4, !noundef !4 + %.val1.i.i2.i = load ptr, ptr %4, align 8, !alias.scope !6012 %5 = shl nuw i64 %.val.i.i1.i, 4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1.i.i2.i) ] tail call void @__rust_dealloc(ptr noundef nonnull %.val1.i.i2.i, i64 noundef %5, i64 noundef 8) #17, !noalias !6012 br label %"_ZN4core3ptr51drop_in_place$LT$alloc..vec..Vec$LT$$RF$str$GT$$GT$17h0bdbbbf3baec0f1bE.llvm.8351105841907204142.exit" @@ -18439,8 +18444,9 @@ define hidden void @"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$co 3: ; preds = %1 %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %.val1 = load ptr, ptr %4, align 8, !nonnull !4, !noundef !4 + %.val1 = load ptr, ptr %4, align 8 %5 = shl nuw i64 %.val, 4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1) ] tail call void @__rust_dealloc(ptr noundef nonnull %.val1, i64 noundef %5, i64 noundef 8) #17 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.8351105841907204142.exit" @@ -18660,6 +18666,7 @@ define hidden void @"_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$ br i1 %10, label %"_ZN4core3ptr179drop_in_place$LT$$u5b$proc_macro..bridge..TokenTree$LT$proc_macro..bridge..client..TokenStream$C$proc_macro..bridge..client..Span$C$proc_macro..bridge..symbol..Symbol$GT$$u5d$$GT$17h85333a62a6317a64E.llvm.8351105841907204142.exit", label %.lr.ph.i .body: ; preds = %"_ZN4core3ptr169drop_in_place$LT$proc_macro..bridge..TokenTree$LT$proc_macro..bridge..client..TokenStream$C$proc_macro..bridge..client..Span$C$proc_macro..bridge..symbol..Symbol$GT$$GT$17hbd14e643b3b111acE.exit8.i", %28 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 %12 = load i64, ptr %11, align 8, !noundef !4 %13 = icmp eq i64 %12, 0 @@ -18730,6 +18737,7 @@ define hidden void @"_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$ unreachable "_ZN4core3ptr179drop_in_place$LT$$u5b$proc_macro..bridge..TokenTree$LT$proc_macro..bridge..client..TokenStream$C$proc_macro..bridge..client..Span$C$proc_macro..bridge..symbol..Symbol$GT$$u5d$$GT$17h85333a62a6317a64E.llvm.8351105841907204142.exit": ; preds = %"_ZN4core3ptr169drop_in_place$LT$proc_macro..bridge..TokenTree$LT$proc_macro..bridge..client..TokenStream$C$proc_macro..bridge..client..Span$C$proc_macro..bridge..symbol..Symbol$GT$$GT$17hbd14e643b3b111acE.exit.i", %1 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] %44 = getelementptr inbounds nuw i8, ptr %0, i64 8 %45 = load i64, ptr %44, align 8, !noundef !4 %46 = icmp eq i64 %45, 0 @@ -19036,29 +19044,28 @@ define void @"_ZN65_$LT$syn..parse..ParseBuffer$u20$as$u20$core..ops..drop..Drop br i1 %switch.i, label %"_ZN4core3ptr43drop_in_place$LT$syn..parse..Unexpected$GT$17h5bf2b0fced757446E.llvm.8351105841907204142.exit", label %14 14: ; preds = %12 - %15 = icmp ne ptr %.sroa.47.0.copyload, null - tail call void @llvm.assume(i1 %15) - %16 = load i64, ptr %.sroa.47.0.copyload, align 8, !noalias !7699, !noundef !4 - %17 = add i64 %16, -1 - store i64 %17, ptr %.sroa.47.0.copyload, align 8, !noalias !7699 - %18 = icmp eq i64 %17, 0 - br i1 %18, label %19, label %"_ZN4core3ptr43drop_in_place$LT$syn..parse..Unexpected$GT$17h5bf2b0fced757446E.llvm.8351105841907204142.exit" - -19: ; preds = %14 - %20 = getelementptr inbounds nuw i8, ptr %.sroa.47.0.copyload, i64 16 - tail call void @"_ZN4core3ptr67drop_in_place$LT$core..cell..Cell$LT$syn..parse..Unexpected$GT$$GT$17haf2750eab111b2d0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %20), !noalias !7699 - %21 = getelementptr inbounds nuw i8, ptr %.sroa.47.0.copyload, i64 8 - %22 = load i64, ptr %21, align 8, !noalias !7699, !noundef !4 - %23 = add i64 %22, -1 - store i64 %23, ptr %21, align 8, !noalias !7699 - %24 = icmp eq i64 %23, 0 - br i1 %24, label %25, label %"_ZN4core3ptr43drop_in_place$LT$syn..parse..Unexpected$GT$17h5bf2b0fced757446E.llvm.8351105841907204142.exit" + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.47.0.copyload) ] + %15 = load i64, ptr %.sroa.47.0.copyload, align 8, !noalias !7699, !noundef !4 + %16 = add i64 %15, -1 + store i64 %16, ptr %.sroa.47.0.copyload, align 8, !noalias !7699 + %17 = icmp eq i64 %16, 0 + br i1 %17, label %18, label %"_ZN4core3ptr43drop_in_place$LT$syn..parse..Unexpected$GT$17h5bf2b0fced757446E.llvm.8351105841907204142.exit" -25: ; preds = %19 +18: ; preds = %14 + %19 = getelementptr inbounds nuw i8, ptr %.sroa.47.0.copyload, i64 16 + tail call void @"_ZN4core3ptr67drop_in_place$LT$core..cell..Cell$LT$syn..parse..Unexpected$GT$$GT$17haf2750eab111b2d0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %19), !noalias !7699 + %20 = getelementptr inbounds nuw i8, ptr %.sroa.47.0.copyload, i64 8 + %21 = load i64, ptr %20, align 8, !noalias !7699, !noundef !4 + %22 = add i64 %21, -1 + store i64 %22, ptr %20, align 8, !noalias !7699 + %23 = icmp eq i64 %22, 0 + br i1 %23, label %24, label %"_ZN4core3ptr43drop_in_place$LT$syn..parse..Unexpected$GT$17h5bf2b0fced757446E.llvm.8351105841907204142.exit" + +25: ; preds = %18 tail call void @__rust_dealloc(ptr noundef nonnull %.sroa.47.0.copyload, i64 noundef 32, i64 noundef 8) #17, !noalias !7706 br label %"_ZN4core3ptr43drop_in_place$LT$syn..parse..Unexpected$GT$17h5bf2b0fced757446E.llvm.8351105841907204142.exit" -"_ZN4core3ptr43drop_in_place$LT$syn..parse..Unexpected$GT$17h5bf2b0fced757446E.llvm.8351105841907204142.exit": ; preds = %12, %14, %19, %25, %8 +"_ZN4core3ptr43drop_in_place$LT$syn..parse..Unexpected$GT$17h5bf2b0fced757446E.llvm.8351105841907204142.exit": ; preds = %12, %14, %18, %25, %8 %26 = load i64, ptr %9, align 8, !noalias !7707, !noundef !4 %27 = add i64 %26, -1 store i64 %27, ptr %9, align 8, !noalias !7707 diff --git a/bench/syn/optimized/4pem7cta6fyqelao.ll b/bench/syn/optimized/4pem7cta6fyqelao.ll index 8194ad089d5..102911c2adf 100644 --- a/bench/syn/optimized/4pem7cta6fyqelao.ll +++ b/bench/syn/optimized/4pem7cta6fyqelao.ll @@ -213,21 +213,20 @@ target triple = "x86_64-unknown-linux-gnu" @anon.cb776e29a3edfb21b922828375758a83.4.llvm.11864023271123110445 = external hidden unnamed_addr constant <{}>, align 8 ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable -define hidden { i64, i64 } @"_ZN4core3ops5range18Bound$LT$$RF$T$GT$6cloned17hb6ca3650398b6db3E"(i64 noundef %0, ptr readonly captures(address_is_null) %1) unnamed_addr #0 { +define hidden { i64, i64 } @"_ZN4core3ops5range18Bound$LT$$RF$T$GT$6cloned17hb6ca3650398b6db3E"(i64 noundef %0, ptr readonly captures(none) %1) unnamed_addr #0 { %3 = icmp eq i64 %0, 2 - br i1 %3, label %6, label %.sink.split + br i1 %3, label %5, label %.sink.split .sink.split: ; preds = %2 - %4 = icmp ne ptr %1, null - tail call void @llvm.assume(i1 %4) - %5 = load i64, ptr %1, align 8, !noundef !4 - br label %6 - -6: ; preds = %2, %.sink.split - %.sroa.4.0 = phi i64 [ undef, %2 ], [ %5, %.sink.split ] - %7 = insertvalue { i64, i64 } poison, i64 %0, 0 - %8 = insertvalue { i64, i64 } %7, i64 %.sroa.4.0, 1 - ret { i64, i64 } %8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] + %4 = load i64, ptr %1, align 8, !noundef !4 + br label %5 + +5: ; preds = %2, %.sink.split + %.sroa.4.0 = phi i64 [ undef, %2 ], [ %4, %.sink.split ] + %6 = insertvalue { i64, i64 } poison, i64 %0, 0 + %7 = insertvalue { i64, i64 } %6, i64 %.sroa.4.0, 1 + ret { i64, i64 } %7 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/tikv-rs/optimized/4sohgqjmmmwbwrelv7h1i20q9.ll b/bench/tikv-rs/optimized/4sohgqjmmmwbwrelv7h1i20q9.ll index 690c9a7188d..bd21dc4a0fa 100644 --- a/bench/tikv-rs/optimized/4sohgqjmmmwbwrelv7h1i20q9.ll +++ b/bench/tikv-rs/optimized/4sohgqjmmmwbwrelv7h1i20q9.ll @@ -38,9 +38,11 @@ define noundef zeroext i1 @"_ZN67_$LT$tikv_alloc..error..ProfError$u20$as$u20$co ] 17: ; preds = %2 - %.val23 = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.val23 = load ptr, ptr %1, align 8 %18 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val24 = load ptr, ptr %18, align 8, !nonnull !4, !noundef !4 + %.val24 = load ptr, ptr %18, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val23) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val24) ] %19 = getelementptr inbounds nuw i8, ptr %.val24, i64 24 %20 = load ptr, ptr %19, align 8, !invariant.load !4, !noalias !5, !nonnull !4 %21 = tail call noundef zeroext i1 %20(ptr noundef nonnull align 1 %.val23, ptr noalias noundef nonnull readonly align 1 @anon.365fb1c0c7b0cc2ca1d4ff4f5970e169.1, i64 noundef 29), !noalias !5 @@ -54,9 +56,11 @@ _ZN4core3fmt9Formatter9write_fmt17h3bce49d3b5fbe92dE.exit29: ; preds = %2 store ptr %14, ptr %13, align 8 %.sroa.415.0..sroa_idx = getelementptr inbounds nuw i8, ptr %13, i64 8 store ptr @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h483f12d44b88e77cE", ptr %.sroa.415.0..sroa_idx, align 8 - %.val21 = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.val21 = load ptr, ptr %1, align 8 %23 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val22 = load ptr, ptr %23, align 8, !nonnull !4, !noundef !4 + %.val22 = load ptr, ptr %23, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val21) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val22) ] call void @llvm.lifetime.start.p0(ptr nonnull %6), !noalias !8 store ptr @anon.365fb1c0c7b0cc2ca1d4ff4f5970e169.4, ptr %6, align 8 %.sroa.546.0..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -81,9 +85,11 @@ _ZN4core3fmt9Formatter9write_fmt17h3bce49d3b5fbe92dE.exit34: ; preds = %2 store ptr %12, ptr %11, align 8 %.sroa.411.0..sroa_idx = getelementptr inbounds nuw i8, ptr %11, i64 8 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17ha3f27742683d87eeE", ptr %.sroa.411.0..sroa_idx, align 8 - %.val19 = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.val19 = load ptr, ptr %1, align 8 %26 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val20 = load ptr, ptr %26, align 8, !nonnull !4, !noundef !4 + %.val20 = load ptr, ptr %26, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val19) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val20) ] call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !11 store ptr @anon.365fb1c0c7b0cc2ca1d4ff4f5970e169.6, ptr %5, align 8 %.sroa.552.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 8 @@ -108,9 +114,11 @@ _ZN4core3fmt9Formatter9write_fmt17h3bce49d3b5fbe92dE.exit39: ; preds = %2 store ptr %10, ptr %9, align 8 %.sroa.47.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 8 store ptr @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h0ee4b9ed483bd16dE", ptr %.sroa.47.0..sroa_idx, align 8 - %.val17 = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.val17 = load ptr, ptr %1, align 8 %29 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val18 = load ptr, ptr %29, align 8, !nonnull !4, !noundef !4 + %.val18 = load ptr, ptr %29, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val17) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val18) ] call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !14 store ptr @anon.365fb1c0c7b0cc2ca1d4ff4f5970e169.9, ptr %4, align 8 %.sroa.558.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -134,9 +142,11 @@ _ZN4core3fmt9Formatter9write_fmt17h3bce49d3b5fbe92dE.exit44: ; preds = %2 store ptr %8, ptr %7, align 8 %.sroa.43.0..sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 8 store ptr @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17h8c0e8ec45c57c57eE", ptr %.sroa.43.0..sroa_idx, align 8 - %.val = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.val = load ptr, ptr %1, align 8 %31 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val16 = load ptr, ptr %31, align 8, !nonnull !4, !noundef !4 + %.val16 = load ptr, ptr %31, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val16) ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !17 store ptr @anon.365fb1c0c7b0cc2ca1d4ff4f5970e169.11, ptr %3, align 8 %.sroa.564.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -196,11 +206,15 @@ declare void @llvm.lifetime.start.p0(ptr captures(none)) #4 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(ptr captures(none)) #4 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #5 + 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" } attributes #2 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #4 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #5 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } !llvm.module.flags = !{!0, !1} !llvm.ident = !{!2} diff --git a/bench/tikv-rs/optimized/96y9hk39bcjsdy0glqmdl20ki.ll b/bench/tikv-rs/optimized/96y9hk39bcjsdy0glqmdl20ki.ll index bb2d06d5e4e..3fe12e44385 100644 --- a/bench/tikv-rs/optimized/96y9hk39bcjsdy0glqmdl20ki.ll +++ b/bench/tikv-rs/optimized/96y9hk39bcjsdy0glqmdl20ki.ll @@ -5,34 +5,33 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: nonlazybind uwtable define hidden void @"_ZN132_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$$RF$T$C$core..slice..iter..Iter$LT$T$GT$$GT$$GT$11spec_extend17h5abec2e9a6b8744fE"(ptr noalias noundef align 8 dereferenceable(24) %0, ptr noundef nonnull %1, ptr noundef %2, ptr noalias noundef readonly align 8 captures(none) dereferenceable(24) %3) unnamed_addr #0 { - %5 = icmp ne ptr %2, null - tail call void @llvm.assume(i1 %5) - %6 = ptrtoint ptr %2 to i64 - %7 = ptrtoint ptr %1 to i64 - %8 = sub nuw i64 %6, %7 - %9 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %10 = load i64, ptr %9, align 8, !alias.scope !3, !noundef !8 - %11 = load i64, ptr %0, align 8, !range !9, !alias.scope !3, !noundef !8 - %12 = sub i64 %11, %10 - %13 = icmp ugt i64 %8, %12 - br i1 %13, label %14, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$15append_elements17hc308b1263dd722a4E.exit", !prof !10 - -14: ; preds = %4 - tail call void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$7reserve21do_reserve_and_handle17h8495e18a400fd0c6E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %10, i64 noundef %8, i64 noundef 1, i64 noundef 1) - %.pre.i = load i64, ptr %9, align 8, !alias.scope !11 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] + %5 = ptrtoint ptr %2 to i64 + %6 = ptrtoint ptr %1 to i64 + %7 = sub nuw i64 %5, %6 + %8 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %9 = load i64, ptr %8, align 8, !alias.scope !3, !noundef !8 + %10 = load i64, ptr %0, align 8, !range !9, !alias.scope !3, !noundef !8 + %11 = sub i64 %10, %9 + %12 = icmp ugt i64 %7, %11 + br i1 %12, label %13, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$15append_elements17hc308b1263dd722a4E.exit", !prof !10 + +13: ; preds = %4 + tail call void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$7reserve21do_reserve_and_handle17h8495e18a400fd0c6E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %9, i64 noundef %7, i64 noundef 1, i64 noundef 1) + %.pre.i = load i64, ptr %8, align 8, !alias.scope !11 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$15append_elements17hc308b1263dd722a4E.exit" -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$15append_elements17hc308b1263dd722a4E.exit": ; preds = %4, %14 - %15 = phi i64 [ %10, %4 ], [ %.pre.i, %14 ] +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$15append_elements17hc308b1263dd722a4E.exit": ; preds = %4, %13 + %15 = phi i64 [ %9, %4 ], [ %.pre.i, %13 ] %16 = icmp sgt i64 %15, -1 tail call void @llvm.assume(i1 %16) %17 = getelementptr inbounds nuw i8, ptr %0, i64 8 %18 = load ptr, ptr %17, align 8, !alias.scope !11, !nonnull !8, !noundef !8 %19 = getelementptr inbounds nuw i8, ptr %18, i64 %15 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %19, ptr nonnull readonly align 1 %1, i64 %8, i1 false) - %20 = load i64, ptr %9, align 8, !alias.scope !11, !noundef !8 - %21 = add i64 %20, %8 - store i64 %21, ptr %9, align 8, !alias.scope !11 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %19, ptr nonnull readonly align 1 %1, i64 %7, i1 false) + %20 = load i64, ptr %8, align 8, !alias.scope !11, !noundef !8 + %21 = add i64 %20, %7 + store i64 %21, ptr %8, align 8, !alias.scope !11 ret void } @@ -43,6 +42,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %.val = load ptr, ptr %4, align 8, !nonnull !8, !noundef !8 %5 = getelementptr i8, ptr %3, i64 16 %.val1 = load i64, ptr %5, align 8, !noundef !8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %6 = tail call noundef zeroext i1 @"_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..Debug$GT$3fmt17h357ece8b4bcec3a3E"(ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1, ptr noalias noundef nonnull align 8 dereferenceable(24) %1) ret i1 %6 } @@ -70,6 +70,7 @@ define hidden void @"_ZN98_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..s "_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8973db8c426526dbE.exit.i": ; preds = %3 %.val.i.i = load ptr, ptr %13, align 8, !noalias !20, !nonnull !8, !noundef !8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i.i) ] %14 = getelementptr inbounds nuw i8, ptr %.val.i.i, i64 16 call void @_ZN10tikv_alloc5trace11MemoryTrace8snapshot17h070aa5a6ee7de5cfE(ptr noalias noundef nonnull sret([48 x i8]) align 8 captures(none) dereferenceable(48) %8, ptr noundef nonnull align 8 %14), !noalias !23 %.pr.i = load i64, ptr %8, align 8, !noalias !18 @@ -154,6 +155,7 @@ define hidden void @"_ZN98_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..s "_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8973db8c426526dbE.exit.i.i.i": ; preds = %.noexc9.i, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8973db8c426526dbE.exit.lr.ph.i.i.i" %36 = phi ptr [ %34, %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h8973db8c426526dbE.exit.lr.ph.i.i.i" ], [ %48, %.noexc9.i ] %.val.i.i.i.i = load ptr, ptr %36, align 8, !noalias !41, !nonnull !8, !noundef !8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i.i.i.i) ] %37 = getelementptr inbounds nuw i8, ptr %.val.i.i.i.i, i64 16 invoke void @_ZN10tikv_alloc5trace11MemoryTrace8snapshot17h070aa5a6ee7de5cfE(ptr noalias noundef nonnull sret([48 x i8]) align 8 captures(none) dereferenceable(48) %4, ptr noundef nonnull align 8 %37) to label %.noexc8.i unwind label %.loopexit.i, !noalias !23 @@ -257,6 +259,8 @@ define hidden void @"_ZN98_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..s %.val.i = load ptr, ptr %1, align 8, !alias.scope !49, !noalias !55, !nonnull !8, !noundef !8 %8 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.val3.i = load ptr, ptr %8, align 8, !alias.scope !49, !noalias !55, !nonnull !8, !noundef !8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3.i) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %9 = ptrtoint ptr %.val3.i to i64 %10 = ptrtoint ptr %.val.i to i64 %11 = sub nuw i64 %9, %10 @@ -288,6 +292,8 @@ define hidden void @"_ZN98_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..s %.sroa.6.0..sroa_idx10.i = getelementptr inbounds nuw i8, ptr %5, i64 16 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !60 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.6.0..sroa_idx10.i, ptr noundef nonnull readonly align 8 dereferenceable(16) %.sroa.6.0..sroa_idx.i, i64 16, i1 false), !noalias !55 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3.i) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] store ptr %.val.i, ptr %5, align 8, !noalias !67 %.sroa.57.0..sroa_idx8.i = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr %.val3.i, ptr %.sroa.57.0..sroa_idx8.i, align 8, !noalias !67 diff --git a/bench/tikv-rs/optimized/ck1kcp78m0uk16uxeow74g4c6.ll b/bench/tikv-rs/optimized/ck1kcp78m0uk16uxeow74g4c6.ll index 5c03f44350b..1b7c13f96eb 100644 --- a/bench/tikv-rs/optimized/ck1kcp78m0uk16uxeow74g4c6.ll +++ b/bench/tikv-rs/optimized/ck1kcp78m0uk16uxeow74g4c6.ll @@ -3,8 +3,9 @@ source_filename = "bench/tikv-rs/original/ck1kcp78m0uk16uxeow74g4c6.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 nonlazybind memory(read, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable +; Function Attrs: nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: write, target_mem0: none, target_mem1: none) uwtable define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h439cdb546578af0bE(ptr noalias noundef nonnull readonly align 1 captures(none) %0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(16) %1) unnamed_addr #0 personality ptr @rust_eh_personality { + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load ptr, ptr %1, align 8, !noalias !3, !noundef !6 %3 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.val1.i = load i64, ptr %3, align 8, !noalias !3 @@ -87,9 +88,13 @@ declare noundef range(i32 0, 10) i32 @rust_eh_personality(i32 noundef, i32 nound ; Function Attrs: mustprogress nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.fshl.i64(i64, i64, i64) #2 -attributes #0 = { nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #0 = { nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #3 + +attributes #0 = { nofree norecurse nosync nounwind nonlazybind memory(read, inaccessiblemem: write, target_mem0: none, target_mem1: none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #2 = { mustprogress nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } +attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } !llvm.module.flags = !{!0, !1} !llvm.ident = !{!2} diff --git a/bench/turborepo-rs/optimized/06q4qae34rflpqcqgg2nvmi9u.ll b/bench/turborepo-rs/optimized/06q4qae34rflpqcqgg2nvmi9u.ll index 44b8f563f8d..3f3d45f3fca 100644 --- a/bench/turborepo-rs/optimized/06q4qae34rflpqcqgg2nvmi9u.ll +++ b/bench/turborepo-rs/optimized/06q4qae34rflpqcqgg2nvmi9u.ll @@ -99,6 +99,7 @@ define hidden void @_RINvYNtCseBw3mChBYfU_3hex15BytesToHexCharsNtNtNtNtCs1LoaDTb br i1 %4, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %2 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.sroa.0.i.i.i.1.i.i.i.1.i.i.i.1.i.i.1.i.i.1.i.1.i.1.gep.sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.0.i.i.i, i64 1 %.sroa.0.i.i.i.2.i.i.i.2.i.i.i.2.i.i.2.i.i.2.i.2.i.2.gep1.sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.0.i.i.i, i64 2 %.sroa.0.i.i.i.3.i.i.i.3.i.i.i.3.i.i.3.i.i.3.i.3.i.3.gep2.sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.0.i.i.i, i64 3 @@ -319,6 +320,9 @@ declare void @llvm.lifetime.end.p0(ptr captures(none)) #8 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #9 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #10 + 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" } attributes #2 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } @@ -329,8 +333,9 @@ attributes #6 = { cold noreturn nounwind nonlazybind uwtable "probe-stack"="inli attributes #7 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #8 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #9 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #10 = { cold } -attributes #11 = { cold noreturn nounwind } +attributes #10 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #11 = { cold } +attributes #12 = { cold noreturn nounwind } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/turborepo-rs/optimized/4npj4wsmg2ap1thdgni5ygdc7.ll b/bench/turborepo-rs/optimized/4npj4wsmg2ap1thdgni5ygdc7.ll index 83b720146ed..ec0d58888dc 100644 --- a/bench/turborepo-rs/optimized/4npj4wsmg2ap1thdgni5ygdc7.ll +++ b/bench/turborepo-rs/optimized/4npj4wsmg2ap1thdgni5ygdc7.ll @@ -58,6 +58,8 @@ define noundef i64 @_RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6stable9quicksort %.val10.us = load i64, ptr %25, align 8, !noundef !7 %.val11.us = load ptr, ptr %13, align 8, !nonnull !7, !noundef !7 %.val12.us = load i64, ptr %14, align 8, !noundef !7 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val11.us) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.us) ] %26 = tail call noundef range(i8 -1, 3) i8 @_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice3cmphNtB5_15SlicePartialOrd15partial_compareCsgrIngBG6lgl_14regex_automata(ptr noalias noundef nonnull readonly align 1 %.val11.us, i64 noundef %.val12.us, ptr noalias noundef nonnull readonly align 1 %.val.us, i64 noundef %.val10.us), !range !8 %27 = icmp ne i8 %26, -1 %28 = getelementptr inbounds i8, ptr %.sroa.19.125.us, i64 -24 @@ -100,6 +102,8 @@ define noundef i64 @_RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6stable9quicksort %.val10 = load i64, ptr %39, align 8, !noundef !7 %.val11 = load ptr, ptr %13, align 8, !nonnull !7, !noundef !7 %.val12 = load i64, ptr %14, align 8, !noundef !7 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val11) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %40 = tail call noundef range(i8 -1, 3) i8 @_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice3cmphNtB5_15SlicePartialOrd15partial_compareCsgrIngBG6lgl_14regex_automata(ptr noalias noundef nonnull readonly align 1 %.val11, i64 noundef %.val12, ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val10), !range !8 %41 = icmp ne i8 %40, -1 %42 = getelementptr inbounds i8, ptr %.sroa.19.125, i64 -24 @@ -195,6 +199,8 @@ define noundef i64 @_RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6stable9quicksort %.val10.us = load i64, ptr %25, align 8, !noundef !7 %.val11.us = load ptr, ptr %13, align 8, !nonnull !7, !noundef !7 %.val12.us = load i64, ptr %14, align 8, !noundef !7 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.us) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val11.us) ] %26 = tail call noundef range(i8 -1, 3) i8 @_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice3cmphNtB5_15SlicePartialOrd15partial_compareCsgrIngBG6lgl_14regex_automata(ptr noalias noundef nonnull readonly align 1 %.val.us, i64 noundef %.val10.us, ptr noalias noundef nonnull readonly align 1 %.val11.us, i64 noundef %.val12.us), !range !8 %27 = icmp eq i8 %26, -1 %28 = getelementptr inbounds i8, ptr %.sroa.19.125.us, i64 -24 @@ -237,6 +243,8 @@ define noundef i64 @_RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6stable9quicksort %.val10 = load i64, ptr %39, align 8, !noundef !7 %.val11 = load ptr, ptr %13, align 8, !nonnull !7, !noundef !7 %.val12 = load i64, ptr %14, align 8, !noundef !7 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val11) ] %40 = tail call noundef range(i8 -1, 3) i8 @_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice3cmphNtB5_15SlicePartialOrd15partial_compareCsgrIngBG6lgl_14regex_automata(ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val10, ptr noalias noundef nonnull readonly align 1 %.val11, i64 noundef %.val12), !range !8 %41 = icmp eq i8 %40, -1 %42 = getelementptr inbounds i8, ptr %.sroa.19.125, i64 -24 @@ -368,6 +376,8 @@ _RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6shared5pivot12choose_pivotNtNtCs68wO %.val = load ptr, ptr %42, align 8, !nonnull !7, !noundef !7 %43 = getelementptr i8, ptr %39, i64 16 %.val30 = load i64, ptr %43, align 8, !noundef !7 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.022.0.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %44 = call noundef range(i8 -1, 3) i8 @_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice3cmphNtB5_15SlicePartialOrd15partial_compareCsgrIngBG6lgl_14regex_automata(ptr noalias noundef nonnull readonly align 1 %.sroa.022.0.val, i64 noundef %.sroa.022.0.val29, ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val30), !range !8 %.not43 = icmp eq i8 %44, -1 br i1 %.not43, label %.thread, label %.thread40 @@ -414,6 +424,8 @@ _RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6shared5pivot12choose_pivotNtNtCs68wO %.val10.i = load i64, ptr %55, align 8, !alias.scope !24, !noalias !27, !noundef !7 %.val11.i = load ptr, ptr %48, align 8, !alias.scope !24, !noalias !27, !nonnull !7, !noundef !7 %.val12.i = load i64, ptr %49, align 8, !alias.scope !24, !noalias !27, !noundef !7 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val11.i) ] %56 = call noundef range(i8 -1, 3) i8 @_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice3cmphNtB5_15SlicePartialOrd15partial_compareCsgrIngBG6lgl_14regex_automata(ptr noalias noundef nonnull readonly align 1 %.val.i, i64 noundef %.val10.i, ptr noalias noundef nonnull readonly align 1 %.val11.i, i64 noundef %.val12.i), !range !8, !noalias !29 %57 = icmp eq i8 %56, -1 %58 = getelementptr inbounds i8, ptr %.sroa.19.125.i, i64 -24 @@ -508,6 +520,8 @@ _RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6shared5pivot12choose_pivotNtNtCs68wO %.val10.us.i = load i64, ptr %92, align 8, !alias.scope !36, !noalias !39, !noundef !7 %.val11.us.i = load ptr, ptr %81, align 8, !alias.scope !36, !noalias !39, !nonnull !7, !noundef !7 %.val12.us.i = load i64, ptr %82, align 8, !alias.scope !36, !noalias !39, !noundef !7 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val11.us.i) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.us.i) ] %93 = call noundef range(i8 -1, 3) i8 @_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice3cmphNtB5_15SlicePartialOrd15partial_compareCsgrIngBG6lgl_14regex_automata(ptr noalias noundef nonnull readonly align 1 %.val11.us.i, i64 noundef %.val12.us.i, ptr noalias noundef nonnull readonly align 1 %.val.us.i, i64 noundef %.val10.us.i), !range !8, !noalias !41 %94 = icmp ne i8 %93, -1 %95 = getelementptr inbounds i8, ptr %.sroa.19.125.us.i, i64 -24 @@ -576,6 +590,7 @@ _RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5 118: ; preds = %77 %119 = getelementptr inbounds { { { i64, ptr, {} }, i64 } }, ptr %.sroa.0.0.ph75, i64 %.sroa.11.1.lcssa.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.0.ph75) ] call void @_RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6stable9quicksort9quicksortNtNtCs68wO5nsWeTG_5alloc6string6StringNvYB15_NtNtBa_3cmp10PartialOrd2ltECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef nonnull align 8 %119, i64 noundef %69, ptr noalias noundef nonnull align 8 %2, i64 noundef %3, i32 noundef %19, ptr noalias noundef nonnull readonly align 8 dereferenceable_or_null(24) %9, ptr noalias noundef nonnull align 1 %6) call void @llvm.lifetime.end.p0(ptr nonnull %9) %120 = icmp ult i64 %.sroa.11.1.lcssa.i, 33 diff --git a/bench/turborepo-rs/optimized/aooodqa4noqfp1f79p9le8248.ll b/bench/turborepo-rs/optimized/aooodqa4noqfp1f79p9le8248.ll index ab48bdbb12b..2aae1cc0034 100644 --- a/bench/turborepo-rs/optimized/aooodqa4noqfp1f79p9le8248.ll +++ b/bench/turborepo-rs/optimized/aooodqa4noqfp1f79p9le8248.ll @@ -12,6 +12,7 @@ define noundef zeroext i1 @_RNvXsP_NtCs1LoaDTb72WA_4core3fmtRNtNtCs68wO5nsWeTG_5 %.val = load ptr, ptr %4, align 8, !nonnull !4, !noundef !4 %5 = getelementptr i8, ptr %3, i64 16 %.val1 = load i64, ptr %5, align 8, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %6 = tail call noundef zeroext i1 @"_ZN40_$LT$str$u20$as$u20$core..fmt..Debug$GT$3fmt17hf13399e56476983fE"(ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1, ptr noalias noundef nonnull align 8 dereferenceable(64) %1) ret i1 %6 } @@ -23,6 +24,7 @@ define noundef zeroext i1 @_RNvXsR_NtCs1LoaDTb72WA_4core3fmtRNtNtCs68wO5nsWeTG_5 %.val = load ptr, ptr %4, align 8, !nonnull !4, !noundef !4 %5 = getelementptr i8, ptr %3, i64 16 %.val1 = load i64, ptr %5, align 8, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %6 = tail call noundef zeroext i1 @"_ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17hee1d20a2d69c4613E"(ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1, ptr noalias noundef nonnull align 8 dereferenceable(64) %1) ret i1 %6 } @@ -211,6 +213,9 @@ declare void @llvm.lifetime.start.p0(ptr captures(none)) #5 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(ptr captures(none)) #5 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #6 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #6 @@ -220,7 +225,8 @@ attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argm attributes #3 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #5 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #6 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #6 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #7 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/unicode-normalization-rs/optimized/kwscsepwptyv51i.ll b/bench/unicode-normalization-rs/optimized/kwscsepwptyv51i.ll index 3cff855109e..84c8fcd8526 100644 --- a/bench/unicode-normalization-rs/optimized/kwscsepwptyv51i.ll +++ b/bench/unicode-normalization-rs/optimized/kwscsepwptyv51i.ll @@ -46,6 +46,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator4fold17h174e2c69d9c944 br i1 %11, label %12, label %"_ZN4core6option15Option$LT$T$GT$7or_else17hf3db5b66814f085bE.exit.thread.i" 12: ; preds = %"_ZN4core4iter6traits8iterator8Iterator8for_each4call28_$u7b$$u7b$closure$u7d$$u7d$17ha6cebfed4dedef8bE.exit" + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !8) tail call void @llvm.experimental.noalias.scope.decl(metadata !11) %13 = icmp eq ptr %10, %5 @@ -65,6 +66,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator4fold17h174e2c69d9c944 tail call void @llvm.assume(i1 %20) %21 = getelementptr inbounds nuw i8, ptr %10, i64 2 store ptr %21, ptr %0, align 8, !alias.scope !18 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %15) ] %22 = load i8, ptr %15, align 1, !noalias !17, !noundef !7 %23 = shl nuw nsw i32 %19, 6 %24 = and i8 %22, 63 @@ -82,6 +84,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator4fold17h174e2c69d9c944 tail call void @llvm.assume(i1 %29) %30 = getelementptr inbounds nuw i8, ptr %10, i64 3 store ptr %30, ptr %0, align 8, !alias.scope !21 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %21) ] %31 = load i8, ptr %21, align 1, !noalias !17, !noundef !7 %32 = shl nuw nsw i32 %25, 6 %33 = and i8 %31, 63 @@ -97,6 +100,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator4fold17h174e2c69d9c944 tail call void @llvm.assume(i1 %39) %40 = getelementptr inbounds nuw i8, ptr %10, i64 4 store ptr %40, ptr %0, align 8, !alias.scope !24 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %30) ] %41 = load i8, ptr %30, align 1, !noalias !17, !noundef !7 %42 = shl nuw nsw i32 %19, 18 %43 = and i32 %42, 1835008 @@ -229,8 +233,9 @@ _ZN21unicode_normalization11stream_safe20classify_nonstarters17hdc3d352c4dbebd42 .thread15: ; preds = %_ZN21unicode_normalization11stream_safe20classify_nonstarters17hdc3d352c4dbebd42E.exit.i store i64 0, ptr %6, align 8, !alias.scope !4 store i32 %.0.i1014.i, ptr %3, align 8, !alias.scope !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.0.i.i.i) - store i32 0, ptr %.sroa.0.i.i.i, align 4, !noalias !39 + store i32 0, ptr %.sroa.0, align 4, !noalias !39 br label %96 "_ZN114_$LT$unicode_normalization..stream_safe..StreamSafe$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hc484d1e554794a18E.exit": ; preds = %_ZN21unicode_normalization11stream_safe20classify_nonstarters17hdc3d352c4dbebd42E.exit.i @@ -242,6 +247,7 @@ _ZN21unicode_normalization11stream_safe20classify_nonstarters17hdc3d352c4dbebd42 br i1 %.not, label %"_ZN114_$LT$unicode_normalization..stream_safe..StreamSafe$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hc484d1e554794a18E.exit.thread", label %90 90: ; preds = %"_ZN114_$LT$unicode_normalization..stream_safe..StreamSafe$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hc484d1e554794a18E.exit" + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !39) %91 = icmp samesign ult i32 %.0.i1014.i, 128 br i1 %91, label %.critedge.i.i.i, label %92 @@ -257,9 +263,9 @@ _ZN21unicode_normalization11stream_safe20classify_nonstarters17hdc3d352c4dbebd42 br i1 %95, label %104, label %115 96: ; preds = %.thread15, %92 - %97 = phi i64 [ 0, %.thread15 ], [ %storemerge.i, %92 ] - %.0.i1014.i25 = phi i32 [ %.0.i1014.i, %.thread15 ], [ 1114112, %92 ] - %.0.i121417 = phi i32 [ 847, %.thread15 ], [ %.0.i1014.i, %92 ] + %97 = phi i64 [ 0, %.thread18 ], [ %storemerge.i, %92 ] + %.0.i1014.i25 = phi i32 [ %.0.i1014.i, %.thread18 ], [ 1114112, %92 ] + %.0.i121417 = phi i32 [ 847, %.thread18 ], [ %.0.i1014.i, %92 ] %98 = lshr i32 %.0.i121417, 6 %99 = trunc nuw nsw i32 %98 to i8 %100 = or disjoint i8 %99, -64 diff --git a/bench/velox/optimized/SIMDJsonExtractor.ll b/bench/velox/optimized/SIMDJsonExtractor.ll index 751734d61f2..36e19659c97 100644 --- a/bench/velox/optimized/SIMDJsonExtractor.ll +++ b/bench/velox/optimized/SIMDJsonExtractor.ll @@ -753,7 +753,12 @@ if.end.i76: ; preds = %if.then.i94, %if.en %arrayidx.i174 = getelementptr inbounds nuw i8, ptr %8, i64 %idxprom.i173 %15 = load i8, ptr %arrayidx.i174, align 1, !noalias !17 %cmp.i106 = icmp eq i8 %15, 125 - br i1 %cmp.i106, label %if.end.i68, label %if.end.i32.lr.ph + br i1 %cmp.i106, label %if.end.i68, label %if.end.i68.thread + +if.end.i68.thread: ; preds = %if.end.i76 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %11) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %11) ] + br label %if.end.i32.lr.ph if.end.i68: ; preds = %if.end.i76 %_position.i249 = getelementptr inbounds nuw i8, ptr %11, i64 8 @@ -772,14 +777,16 @@ if.end.i68: ; preds = %if.end.i76 %ref.tmp3.i.sroa.0.sroa.4.0.copyload.pre = load ptr, ptr %_start_position.i, align 8, !noalias !17 %_depth.i.i311.phi.trans.insert = getelementptr inbounds nuw i8, ptr %ref.tmp3.i.sroa.0.sroa.0.0.copyload.pre, i64 36 %.pre468 = load i32, ptr %_depth.i.i311.phi.trans.insert, align 4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %ref.tmp3.i.sroa.0.sroa.0.0.copyload.pre) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %ref.tmp3.i.sroa.0.sroa.0.0.copyload.pre) ] %cmp.i313.not456 = icmp slt i32 %.pre468, %ref.tmp3.i.sroa.0.sroa.2.0.copyload.pre br i1 %cmp.i313.not456, label %return, label %if.end.i32.lr.ph -if.end.i32.lr.ph: ; preds = %if.end.i76, %if.end.i68 - %ref.tmp3.i.sroa.0.sroa.0.0.copyload487 = phi ptr [ %ref.tmp3.i.sroa.0.sroa.0.0.copyload.pre, %if.end.i68 ], [ %11, %if.end.i76 ] - %ref.tmp3.i.sroa.0.sroa.2.0.copyload486 = phi i32 [ %ref.tmp3.i.sroa.0.sroa.2.0.copyload.pre, %if.end.i68 ], [ %12, %if.end.i76 ] - %ref.tmp3.i.sroa.0.sroa.4.0.copyload485 = phi ptr [ %ref.tmp3.i.sroa.0.sroa.4.0.copyload.pre, %if.end.i68 ], [ %9, %if.end.i76 ] - %19 = phi i32 [ %.pre468, %if.end.i68 ], [ %12, %if.end.i76 ] +if.end.i32.lr.ph: ; preds = %if.end.i68.thread, %if.end.i68 + %ref.tmp3.i.sroa.0.sroa.0.0.copyload487 = phi ptr [ %11, %if.end.i68.thread ], [ %ref.tmp3.i.sroa.0.sroa.0.0.copyload.pre, %if.end.i68 ] + %ref.tmp3.i.sroa.0.sroa.2.0.copyload486 = phi i32 [ %12, %if.end.i68.thread ], [ %ref.tmp3.i.sroa.0.sroa.2.0.copyload.pre, %if.end.i68 ] + %ref.tmp3.i.sroa.0.sroa.4.0.copyload485 = phi ptr [ %9, %if.end.i68.thread ], [ %ref.tmp3.i.sroa.0.sroa.4.0.copyload.pre, %if.end.i68 ] + %19 = phi i32 [ %12, %if.end.i68.thread ], [ %.pre468, %if.end.i68 ] %_depth.i.i311488 = getelementptr inbounds nuw i8, ptr %ref.tmp3.i.sroa.0.sroa.0.0.copyload487, i64 36 %error.i353 = getelementptr inbounds nuw i8, ptr %ref.tmp3.i.sroa.0.sroa.0.0.copyload487, i64 32 %_position.i262 = getelementptr inbounds nuw i8, ptr %ref.tmp3.i.sroa.0.sroa.0.0.copyload487, i64 8 @@ -843,6 +850,7 @@ if.end.i39: ; preds = %if.end.i365 store i32 %add.i427, ptr %_depth.i.i311488, align 4, !noalias !23 %cmp.i278 = icmp ugt ptr %incdec.ptr.i.i419, %ref.tmp3.i.sroa.0.sroa.4.0.copyload485 tail call void @llvm.assume(i1 %cmp.i278), !noalias !26 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %incdec.ptr.i404) ] %28 = load ptr, ptr %_string_buf_loc.i, align 8, !noalias !31 %29 = load <4 x i64>, ptr %incdec.ptr.i404, align 1 store <4 x i64> %29, ptr %28, align 1 @@ -1396,8 +1404,8 @@ _ZN5folly5tryToIiEENSt9enable_ifIXntsr3std7is_sameINS_5RangeIPKcEET_EE5valueENS_ _ZNR5folly8ExpectedIiNS_14ConversionCodeEE5valueEv.exit: ; preds = %_ZN5folly5tryToIiEENSt9enable_ifIXntsr3std7is_sameINS_5RangeIPKcEET_EE5valueENS_8ExpectedIS6_NSt16remove_referenceIDTclsr6detailE11parseToWraptlS5_Eclsr3stdE7declvalIRS6_EEEEE4type10error_typeEEEE4typeES5_.exit %conv = ashr i64 %retval.sroa.3.0.insert.insert.i.i.i.i, 32 - %cmp.i.i172 = icmp ne ptr %ref.tmp3.i.sroa.0.sroa.0.0.copyload, null - call void @llvm.assume(i1 %cmp.i.i172) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %ref.tmp3.i.sroa.0.sroa.0.0.copyload) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %ref.tmp3.i.sroa.0.sroa.0.0.copyload) ] %_depth.i.i.i217 = getelementptr inbounds nuw i8, ptr %ref.tmp3.i.sroa.0.sroa.0.0.copyload, i64 36 %22 = load i32, ptr %_depth.i.i.i217, align 4 %cmp.i.i219.not187 = icmp slt i32 %22, %ref.tmp3.i.sroa.0.sroa.2.0.copyload diff --git a/bench/wasmi-rs/optimized/4akm4xgsbb4qd7scd166b4xk0.ll b/bench/wasmi-rs/optimized/4akm4xgsbb4qd7scd166b4xk0.ll index 558b7b0814a..b24bcdd0f57 100644 --- a/bench/wasmi-rs/optimized/4akm4xgsbb4qd7scd166b4xk0.ll +++ b/bench/wasmi-rs/optimized/4akm4xgsbb4qd7scd166b4xk0.ll @@ -452,6 +452,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %3 = alloca [8 x i8], align 8 %4 = load ptr, ptr %0, align 8, !nonnull !9, !align !10, !noundef !9 %.val = load ptr, ptr %4, align 8, !nonnull !9, !align !10, !noundef !9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %5 = getelementptr inbounds nuw i8, ptr %.val, i64 40 %6 = getelementptr inbounds nuw i8, ptr %.val, i64 88 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !34 @@ -615,6 +616,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %.val = load ptr, ptr %4, align 8, !nonnull !9, !align !49, !noundef !9 %5 = getelementptr i8, ptr %4, i64 8 %.val1 = load i64, ptr %5, align 8, !noundef !9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !80 call void @_ZN4core3fmt9Formatter10debug_list17h6d35c138e0d8eb64E(ptr noalias noundef nonnull sret([16 x i8]) align 8 captures(none) dereferenceable(16) %3, ptr noalias noundef nonnull align 8 dereferenceable(24) %1), !noalias !86 %6 = getelementptr inbounds nuw i8, ptr %.val, i64 %.val1 @@ -660,6 +662,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %3 = alloca [8 x i8], align 8 %4 = load ptr, ptr %0, align 8, !nonnull !9, !align !10, !noundef !9 %.val = load ptr, ptr %4, align 8, !nonnull !9, !align !10, !noundef !9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %5 = getelementptr inbounds nuw i8, ptr %.val, i64 16 %6 = getelementptr inbounds nuw i8, ptr %.val, i64 48 %7 = getelementptr inbounds nuw i8, ptr %.val, i64 40 @@ -721,6 +724,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %.val = load ptr, ptr %3, align 8, !nonnull !9, !align !10, !noundef !9 %4 = getelementptr i8, ptr %3, i64 8 %.val1 = load i64, ptr %4, align 8, !noundef !9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %5 = tail call noundef zeroext i1 @"_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..Debug$GT$3fmt17h6a6f7f12d816ee5bE"(ptr noalias noundef nonnull readonly align 8 %.val, i64 noundef %.val1, ptr noalias noundef nonnull align 8 dereferenceable(24) %1) ret i1 %5 } @@ -790,6 +794,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %3 = alloca [8 x i8], align 8 %4 = load ptr, ptr %0, align 8, !nonnull !9, !align !10, !noundef !9 %.val = load ptr, ptr %4, align 8, !nonnull !9, !align !10, !noundef !9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %5 = getelementptr inbounds nuw i8, ptr %.val, i64 96 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !116 %6 = getelementptr inbounds nuw i8, ptr %.val, i64 48 @@ -850,6 +855,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %21 = alloca [8 x i8], align 8 %22 = load ptr, ptr %0, align 8, !nonnull !9, !align !10, !noundef !9 %.val = load ptr, ptr %22, align 8, !nonnull !9, !align !10, !noundef !9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !126) %23 = load i8, ptr %.val, align 8, !range !129, !alias.scope !126, !noalias !130, !noundef !9 %24 = add nsw i8 %23, -6 @@ -1116,6 +1122,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %3 = alloca [8 x i8], align 8 %4 = load ptr, ptr %0, align 8, !nonnull !9, !align !10, !noundef !9 %.val = load ptr, ptr %4, align 8, !nonnull !9, !align !10, !noundef !9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %5 = getelementptr inbounds nuw i8, ptr %.val, i64 40 %6 = getelementptr inbounds nuw i8, ptr %.val, i64 88 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !149 @@ -1220,6 +1227,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %3 = alloca [8 x i8], align 8 %4 = load ptr, ptr %0, align 8, !nonnull !9, !align !10, !noundef !9 %.val = load ptr, ptr %4, align 8, !nonnull !9, !align !10, !noundef !9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %5 = getelementptr inbounds nuw i8, ptr %.val, i64 72 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !171 store ptr %.val, ptr %3, align 8, !noalias !171 @@ -1283,6 +1291,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %5 = alloca [8 x i8], align 8 %6 = load ptr, ptr %0, align 8, !nonnull !9, !align !10, !noundef !9 %.val = load ptr, ptr %6, align 8, !nonnull !9, !align !10, !noundef !9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !185) %7 = load i64, ptr %.val, align 8, !range !188, !alias.scope !185, !noalias !189, !noundef !9 %8 = xor i64 %7, -9223372036854775808 @@ -1431,6 +1440,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %3 = alloca [8 x i8], align 8 %4 = load ptr, ptr %0, align 8, !nonnull !9, !align !10, !noundef !9 %.val = load ptr, ptr %4, align 8, !nonnull !9, !align !10, !noundef !9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %5 = getelementptr inbounds nuw i8, ptr %.val, i64 96 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !217 %6 = getelementptr inbounds nuw i8, ptr %.val, i64 48 @@ -1488,6 +1498,8 @@ define internal noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug %.val = load ptr, ptr %3, align 8, !nonnull !9, !align !49, !noundef !9 %4 = getelementptr i8, ptr %3, i64 8 %.val1 = load ptr, ptr %4, align 8, !nonnull !9, !align !10, !noundef !9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1) ] %5 = getelementptr inbounds nuw i8, ptr %.val1, i64 32 %6 = load ptr, ptr %5, align 8, !invariant.load !9, !noalias !233, !nonnull !9 %7 = tail call noundef zeroext i1 %6(ptr noundef nonnull align 1 %.val, ptr noalias noundef nonnull align 8 dereferenceable(24) %1) @@ -1500,6 +1512,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %.val = load ptr, ptr %3, align 8, !nonnull !9, !align !10, !noundef !9 %4 = getelementptr i8, ptr %3, i64 8 %.val1 = load i64, ptr %4, align 8, !noundef !9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %5 = tail call noundef zeroext i1 @"_ZN48_$LT$$u5b$T$u5d$$u20$as$u20$core..fmt..Debug$GT$3fmt17ha7a0a6c5994e02d4E"(ptr noalias noundef nonnull readonly align 8 %.val, i64 noundef %.val1, ptr noalias noundef nonnull align 8 dereferenceable(24) %1) ret i1 %5 } @@ -1862,9 +1875,11 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h5f2ae8b6bed3ffa store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !241 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %4, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !241 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] %.val.i = load ptr, ptr %1, align 8, !noalias !244, !nonnull !9, !align !49, !noundef !9 %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.val1.i = load i64, ptr %10, align 8, !noalias !244, !noundef !9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] call fastcc void @"_ZN71_$LT$core..hash..sip..Hasher$LT$S$GT$$u20$as$u20$core..hash..Hasher$GT$5write17he62b249348ac77c6E"(ptr noalias noundef nonnull align 8 dereferenceable(72) %4, ptr noalias noundef nonnull readonly align 1 %.val.i, i64 noundef %.val1.i) call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !247 store i8 -1, ptr %3, align 1, !noalias !247 @@ -1966,6 +1981,7 @@ define hidden noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h612c5de4e2be311 store i64 %.val2, ptr %.sroa.812.0..sroa_idx.i, align 8, !alias.scope !265 %.sroa.913.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %5, i64 48 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.913.0..sroa_idx.i, i8 0, i64 24, i1 false), !alias.scope !265 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] call fastcc void @"_ZN71_$LT$core..hash..sip..Hasher$LT$S$GT$$u20$as$u20$core..hash..Hasher$GT$5write17he62b249348ac77c6E"(ptr noalias noundef nonnull align 8 dereferenceable(72) %5, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !268 store i8 -1, ptr %4, align 1, !noalias !268 @@ -2105,6 +2121,7 @@ define hidden noundef zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent$ %.val = load ptr, ptr %2, align 8, !nonnull !9, !align !49, !noundef !9 %4 = getelementptr inbounds nuw i8, ptr %2, i64 8 %.val3 = load i64, ptr %4, align 8, !noundef !9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %5 = tail call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h214329bcf264de1fE"(ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val3) ret i1 %5 } @@ -2117,6 +2134,8 @@ define hidden noundef zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent$ %.val3 = load ptr, ptr %1, align 8, !nonnull !9, !align !49, !noundef !9 %4 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.val4 = load i64, ptr %4, align 8, !noundef !9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val3) ] %5 = tail call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h214329bcf264de1fE"(ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val2, ptr noalias noundef nonnull readonly align 1 %.val3, i64 noundef %.val4) ret i1 %5 } diff --git a/bench/wasmi-rs/optimized/719lozgs6r4m6dzt5mpwrqz2n.ll b/bench/wasmi-rs/optimized/719lozgs6r4m6dzt5mpwrqz2n.ll index bc221bcedb8..71dee17f60f 100644 --- a/bench/wasmi-rs/optimized/719lozgs6r4m6dzt5mpwrqz2n.ll +++ b/bench/wasmi-rs/optimized/719lozgs6r4m6dzt5mpwrqz2n.ll @@ -89,6 +89,8 @@ define internal noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug %.val = load ptr, ptr %3, align 8, !nonnull !3, !align !5, !noundef !3 %4 = getelementptr i8, ptr %3, i64 8 %.val1 = load ptr, ptr %4, align 8, !nonnull !3, !align !4, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1) ] %5 = getelementptr inbounds nuw i8, ptr %.val1, i64 32 %6 = load ptr, ptr %5, align 8, !invariant.load !3, !noalias !6, !nonnull !3 %7 = tail call noundef zeroext i1 %6(ptr noundef nonnull align 1 %.val, ptr noalias noundef nonnull align 8 dereferenceable(24) %1) @@ -111,6 +113,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %3 = alloca [8 x i8], align 8 %4 = load ptr, ptr %0, align 8, !nonnull !3, !align !4, !noundef !3 %.val = load ptr, ptr %4, align 8, !nonnull !3, !align !4, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %5 = getelementptr inbounds nuw i8, ptr %.val, i64 40 %6 = getelementptr inbounds nuw i8, ptr %.val, i64 88 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !14 @@ -128,6 +131,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %5 = alloca [8 x i8], align 8 %6 = load ptr, ptr %0, align 8, !nonnull !3, !align !4, !noundef !3 %.val = load ptr, ptr %6, align 8, !nonnull !3, !align !4, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !20) %7 = load i64, ptr %.val, align 8, !range !23, !alias.scope !20, !noalias !24, !noundef !3 %8 = xor i64 %7, -9223372036854775808 @@ -189,6 +193,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %21 = alloca [8 x i8], align 8 %22 = load ptr, ptr %0, align 8, !nonnull !3, !align !4, !noundef !3 %.val = load ptr, ptr %22, align 8, !nonnull !3, !align !4, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !29) %23 = load i8, ptr %.val, align 8, !range !32, !alias.scope !29, !noalias !33, !noundef !3 %24 = add nsw i8 %23, -6 @@ -382,6 +387,7 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G %3 = alloca [8 x i8], align 8 %4 = load ptr, ptr %0, align 8, !nonnull !3, !align !4, !noundef !3 %.val = load ptr, ptr %4, align 8, !nonnull !3, !align !4, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %5 = getelementptr inbounds nuw i8, ptr %.val, i64 16 %6 = getelementptr inbounds nuw i8, ptr %.val, i64 48 %7 = getelementptr inbounds nuw i8, ptr %.val, i64 40 diff --git a/bench/wasmi-rs/optimized/a4jeuqdorkqtqnluubwo07hsf.ll b/bench/wasmi-rs/optimized/a4jeuqdorkqtqnluubwo07hsf.ll index fdd39918516..ac03d7cd465 100644 --- a/bench/wasmi-rs/optimized/a4jeuqdorkqtqnluubwo07hsf.ll +++ b/bench/wasmi-rs/optimized/a4jeuqdorkqtqnluubwo07hsf.ll @@ -184,6 +184,7 @@ define void @_ZN10wasmi_fuzz12crash_inputs21generate_crash_inputs17h3cc47bdd2293 %.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %36, i64 32 store i64 0, ptr %.sroa.4.0..sroa_idx.i, align 8, !alias.scope !7 tail call void @llvm.experimental.noalias.scope.decl(metadata !10) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %3) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !13) tail call void @llvm.experimental.noalias.scope.decl(metadata !16) tail call void @llvm.experimental.noalias.scope.decl(metadata !19) @@ -327,13 +328,14 @@ define void @_ZN10wasmi_fuzz12crash_inputs21generate_crash_inputs17h3cc47bdd2293 %90 = add nuw i64 %89, 1 store i64 %90, ptr %83, align 8, !alias.scope !120, !noalias !123 %91 = call { ptr, i64 } @"_ZN101_$LT$core..slice..iter..ChunksExactMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$24__iterator_get_unchecked17he718173d41498862E"(ptr noalias noundef nonnull align 8 dereferenceable(80) %17, i64 noundef %89), !noalias !125 + %.val.i.i.i.i.i = load ptr, ptr %88, align 8, !alias.scope !120, !noalias !123, !nonnull !6, !noundef !6 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i.i.i.i.i) ] %92 = extractvalue { ptr, i64 } %91, 0 %.not.i.i.i.i = icmp eq ptr %92, null br i1 %.not.i.i.i.i, label %_ZN6digest11FixedOutput14finalize_fixed17hadcb9a5976a3bd9aE.exit, label %93 93: ; preds = %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h911bd087de725c8aE.exit.i.i.i.i" %94 = extractvalue { ptr, i64 } %91, 1 - %.val.i.i.i.i.i = load ptr, ptr %88, align 8, !alias.scope !120, !noalias !123, !nonnull !6, !noundef !6 %95 = getelementptr inbounds nuw i32, ptr %.val.i.i.i.i.i, i64 %89 %96 = load i32, ptr %95, align 4, !noalias !119, !noundef !6 call void @llvm.experimental.noalias.scope.decl(metadata !126) diff --git a/bench/wasmi-rs/optimized/alstpbhsjp4ox5ltqsedewni0.ll b/bench/wasmi-rs/optimized/alstpbhsjp4ox5ltqsedewni0.ll index 9cce2add207..18820bf27c1 100644 --- a/bench/wasmi-rs/optimized/alstpbhsjp4ox5ltqsedewni0.ll +++ b/bench/wasmi-rs/optimized/alstpbhsjp4ox5ltqsedewni0.ll @@ -74,6 +74,7 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17h57c4855b1 "_ZN106_$LT$core..iter..sources..repeat_n..RepeatN$LT$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h7ee2b52b5a88c079E.exit.i": ; preds = %.preheader._crit_edge.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h00ef68c59443dc64E.exit" %.val5.i.i.i = phi i64 [ %20, %.preheader._crit_edge.i.i.i ], [ %12, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h00ef68c59443dc64E.exit" ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %6) ] store i64 %.val5.i.i.i, ptr %6, align 8, !noalias !37 call void @"_ZN4core3ptr98drop_in_place$LT$core..iter..sources..repeat_n..RepeatN$LT$wasmi_core..untyped..UntypedVal$GT$$GT$17hb7cd976adf301b29E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) call void @llvm.lifetime.end.p0(ptr nonnull %4) @@ -148,6 +149,7 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17h7e846f384 "_ZN106_$LT$core..iter..sources..repeat_n..RepeatN$LT$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hc36828d342f3e299E.exit.i": ; preds = %.preheader._crit_edge.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h09f646a5a3727c7aE.exit" %.val5.i.i.i = phi i64 [ %22, %.preheader._crit_edge.i.i.i ], [ %14, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h09f646a5a3727c7aE.exit" ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %8) ] store i64 %.val5.i.i.i, ptr %8, align 8, !noalias !66 call void @"_ZN4core3ptr69drop_in_place$LT$core..iter..sources..repeat_n..RepeatN$LT$u8$GT$$GT$17hb2b4240403592ef8E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5) call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !41 @@ -212,7 +214,8 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17hb6f4580267b547cbE" %24 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.lcssa18.i, i64 8 store i64 %3, ptr %24, align 8 %25 = add i64 %storemerge.lcssa17.i, 1 - br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$11extend_with17h554eacf8da0c13dcE.exit" + call void @llvm.assume(i1 true) [ "nonnull"(ptr %6) ] + br label %29 .lr.ph.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h00ef68c59443dc64E.exit.i", %.lr.ph.i %.sroa.0.011.i = phi ptr [ %28, %.lr.ph.i ], [ %20, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h00ef68c59443dc64E.exit.i" ] @@ -226,7 +229,7 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17hb6f4580267b547cbE" br i1 %exitcond.not.i, label %._crit_edge.thread.i, label %.lr.ph.i "_ZN5alloc3vec16Vec$LT$T$C$A$GT$11extend_with17h554eacf8da0c13dcE.exit": ; preds = %5, %._crit_edge.i - %storemerge = phi i64 [ %1, %5 ], [ %25, %._crit_edge.i ] + %storemerge = phi i64 [ %25, %._crit_edge.i ], [ %1, %5 ] store i64 %storemerge, ptr %6, align 8 ret void } @@ -274,10 +277,11 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6resize17he68b3cb74bd146a2E" %storemerge.lcssa16.i = phi i64 [ %22, %._crit_edge.thread.i ], [ %15, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h09f646a5a3727c7aE.exit.i" ] store i8 %2, ptr %.sroa.0.0.lcssa17.i, align 1 %23 = add i64 %storemerge.lcssa16.i, 1 - br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$11extend_with17hb35e3abaddc6f782E.exit" + call void @llvm.assume(i1 true) [ "nonnull"(ptr %5) ] + br label %24 "_ZN5alloc3vec16Vec$LT$T$C$A$GT$11extend_with17hb35e3abaddc6f782E.exit": ; preds = %4, %._crit_edge.i - %storemerge = phi i64 [ %1, %4 ], [ %23, %._crit_edge.i ] + %storemerge = phi i64 [ %23, %._crit_edge.i ], [ %1, %4 ] store i64 %storemerge, ptr %5, align 8 ret void } diff --git a/bench/zstd/optimized/xxhash.ll b/bench/zstd/optimized/xxhash.ll index 801819442a5..2619edfde16 100644 --- a/bench/zstd/optimized/xxhash.ll +++ b/bench/zstd/optimized/xxhash.ll @@ -158,9 +158,8 @@ define void @ZSTD_XXH32_copyState(ptr noundef writeonly captures(none) initializ } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write, inaccessiblemem: write) uwtable -define noundef i32 @ZSTD_XXH32_reset(ptr noundef writeonly captures(address_is_null) %0, i32 noundef %1) local_unnamed_addr #5 { - %3 = icmp ne ptr %0, null - tail call void @llvm.assume(i1 %3) +define noundef i32 @ZSTD_XXH32_reset(ptr noundef writeonly captures(none) %0, i32 noundef %1) local_unnamed_addr #5 { + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(48) %0, i8 0, i64 48, i1 false) %4 = add i32 %1, 606290984 %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -649,8 +648,7 @@ define void @ZSTD_XXH64_copyState(ptr noundef writeonly captures(none) initializ ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write, inaccessiblemem: write) uwtable define noundef i32 @ZSTD_XXH64_reset(ptr noundef writeonly captures(none) %0, i64 noundef %1) local_unnamed_addr #5 { - %3 = icmp ne ptr %0, null - tail call void @llvm.assume(i1 %3) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %0, i8 0, i64 88, i1 false) %4 = add i64 %1, 6983438078262162902 %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c8d0fce0bf7..6d1c5ff92d5 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/169923 export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME=""