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/cord_rep_consume.ll b/bench/abseil-cpp/optimized/cord_rep_consume.ll index c91f1890b48..3d4663e8693 100644 --- a/bench/abseil-cpp/optimized/cord_rep_consume.ll +++ b/bench/abseil-cpp/optimized/cord_rep_consume.ll @@ -26,21 +26,20 @@ define dso_local void @_ZN4absl13cord_internal7ConsumeEPNS0_7CordRepENS_11Functi br label %_ZN4absl13cord_internal12_GLOBAL__N_113ClipSubstringEPNS0_16CordRepSubstringE.exit 17: ; preds = %8 - %18 = icmp ne ptr %12, null - tail call void @llvm.assume(i1 %18) - %19 = getelementptr inbounds nuw i8, ptr %12, i64 8 - %20 = atomicrmw add ptr %19, i32 2 monotonic, align 4 - %21 = atomicrmw sub ptr %13, i32 2 acq_rel, align 4 - %.not.i.i = icmp eq i32 %21, 2 - br i1 %.not.i.i, label %22, label %_ZN4absl13cord_internal12_GLOBAL__N_113ClipSubstringEPNS0_16CordRepSubstringE.exit, !prof !19 - -22: ; preds = %17 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %12) ] + %18 = getelementptr inbounds nuw i8, ptr %12, i64 8 + %19 = atomicrmw add ptr %18, i32 2 monotonic, align 4 + %20 = atomicrmw sub ptr %13, i32 2 acq_rel, align 4 + %.not.i.i = icmp eq i32 %20, 2 + br i1 %.not.i.i, label %21, label %_ZN4absl13cord_internal12_GLOBAL__N_113ClipSubstringEPNS0_16CordRepSubstringE.exit, !prof !19 + +21: ; preds = %17 tail call void @_ZN4absl13cord_internal7CordRep7DestroyEPS1_(ptr noundef nonnull %0) br label %_ZN4absl13cord_internal12_GLOBAL__N_113ClipSubstringEPNS0_16CordRepSubstringE.exit -_ZN4absl13cord_internal12_GLOBAL__N_113ClipSubstringEPNS0_16CordRepSubstringE.exit: ; preds = %22, %17, %16, %3 - %.07 = phi i64 [ 0, %3 ], [ %10, %16 ], [ %10, %17 ], [ %10, %22 ] - %.0 = phi ptr [ %0, %3 ], [ %12, %16 ], [ %12, %17 ], [ %12, %22 ] +_ZN4absl13cord_internal12_GLOBAL__N_113ClipSubstringEPNS0_16CordRepSubstringE.exit: ; preds = %21, %17, %16, %3 + %.07 = phi i64 [ 0, %3 ], [ %10, %16 ], [ %10, %17 ], [ %10, %21 ] + %.0 = phi ptr [ %0, %3 ], [ %12, %16 ], [ %12, %17 ], [ %12, %21 ] tail call void %2(ptr %1, ptr noundef %.0, i64 noundef %.07, i64 noundef %4) ret void } @@ -68,21 +67,20 @@ define dso_local void @_ZN4absl13cord_internal14ReverseConsumeEPNS0_7CordRepENS_ br label %_ZN4absl13cord_internal7ConsumeEPNS0_7CordRepENS_11FunctionRefIFvS2_mmEEE.exit 17: ; preds = %8 - %18 = icmp ne ptr %12, null - tail call void @llvm.assume(i1 %18) - %19 = getelementptr inbounds nuw i8, ptr %12, i64 8 - %20 = atomicrmw add ptr %19, i32 2 monotonic, align 4 - %21 = atomicrmw sub ptr %13, i32 2 acq_rel, align 4 - %.not.i.i.i = icmp eq i32 %21, 2 - br i1 %.not.i.i.i, label %22, label %_ZN4absl13cord_internal7ConsumeEPNS0_7CordRepENS_11FunctionRefIFvS2_mmEEE.exit, !prof !19 - -22: ; preds = %17 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %12) ] + %18 = getelementptr inbounds nuw i8, ptr %12, i64 8 + %19 = atomicrmw add ptr %18, i32 2 monotonic, align 4 + %20 = atomicrmw sub ptr %13, i32 2 acq_rel, align 4 + %.not.i.i.i = icmp eq i32 %20, 2 + br i1 %.not.i.i.i, label %21, label %_ZN4absl13cord_internal7ConsumeEPNS0_7CordRepENS_11FunctionRefIFvS2_mmEEE.exit, !prof !19 + +21: ; preds = %17 tail call void @_ZN4absl13cord_internal7CordRep7DestroyEPS1_(ptr noundef nonnull %0) br label %_ZN4absl13cord_internal7ConsumeEPNS0_7CordRepENS_11FunctionRefIFvS2_mmEEE.exit -_ZN4absl13cord_internal7ConsumeEPNS0_7CordRepENS_11FunctionRefIFvS2_mmEEE.exit: ; preds = %3, %16, %17, %22 - %.07.i = phi i64 [ 0, %3 ], [ %10, %16 ], [ %10, %17 ], [ %10, %22 ] - %.0.i = phi ptr [ %0, %3 ], [ %12, %16 ], [ %12, %17 ], [ %12, %22 ] +_ZN4absl13cord_internal7ConsumeEPNS0_7CordRepENS_11FunctionRefIFvS2_mmEEE.exit: ; preds = %3, %16, %17, %21 + %.07.i = phi i64 [ 0, %3 ], [ %10, %16 ], [ %10, %17 ], [ %10, %21 ] + %.0.i = phi ptr [ %0, %3 ], [ %12, %16 ], [ %12, %17 ], [ %12, %21 ] tail call void %2(ptr %1, ptr noundef %.0.i, i64 noundef %.07.i, i64 noundef %4) ret void } diff --git a/bench/abseil-cpp/optimized/cord_rep_crc.ll b/bench/abseil-cpp/optimized/cord_rep_crc.ll index 03066af4e25..f6c75087da6 100644 --- a/bench/abseil-cpp/optimized/cord_rep_crc.ll +++ b/bench/abseil-cpp/optimized/cord_rep_crc.ll @@ -26,12 +26,13 @@ define dso_local noundef nonnull ptr @_ZN4absl13cord_internal10CordRepCrc3NewEPN 13: ; preds = %7 %14 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %15 = load ptr, ptr %14, align 8, !tbaa !13, !nonnull !19, !noundef !19 + %15 = load ptr, ptr %14, align 8, !tbaa !13 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %15) ] %16 = getelementptr inbounds nuw i8, ptr %15, i64 8 %17 = atomicrmw add ptr %16, i32 2 monotonic, align 4 %18 = atomicrmw sub ptr %8, i32 2 acq_rel, align 4 %.not.i = icmp eq i32 %18, 2 - br i1 %.not.i, label %19, label %_ZN4absl13cord_internal7CordRep5UnrefEPS1_.exit, !prof !20 + br i1 %.not.i, label %19, label %_ZN4absl13cord_internal7CordRep5UnrefEPS1_.exit, !prof !19 19: ; preds = %13 tail call void @_ZN4absl13cord_internal7CordRep7DestroyEPS1_(ptr noundef nonnull %0) @@ -41,7 +42,7 @@ _ZN4absl13cord_internal7CordRep5UnrefEPS1_.exit: ; preds = %19, %13, %3, %2 %.019 = phi ptr [ null, %2 ], [ %0, %3 ], [ %15, %13 ], [ %15, %19 ] %20 = tail call noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #5 %21 = getelementptr inbounds nuw i8, ptr %20, i64 8 - store i32 2, ptr %21, align 4, !tbaa !21 + store i32 2, ptr %21, align 4, !tbaa !20 %22 = getelementptr inbounds nuw i8, ptr %20, i64 24 invoke void @_ZN4absl12crc_internal12CrcCordStateC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) to label %_ZN4absl13cord_internal10CordRepCrcC2Ev.exit unwind label %29 @@ -51,12 +52,12 @@ _ZN4absl13cord_internal10CordRepCrcC2Ev.exit: ; preds = %_ZN4absl13cord_inte br i1 %.not21, label %25, label %23 23: ; preds = %_ZN4absl13cord_internal10CordRepCrcC2Ev.exit - %24 = load i64, ptr %.019, align 8, !tbaa !22 + %24 = load i64, ptr %.019, align 8, !tbaa !21 br label %25 25: ; preds = %_ZN4absl13cord_internal10CordRepCrcC2Ev.exit, %23 %26 = phi i64 [ %24, %23 ], [ 0, %_ZN4absl13cord_internal10CordRepCrcC2Ev.exit ] - store i64 %26, ptr %20, align 8, !tbaa !22 + store i64 %26, ptr %20, align 8, !tbaa !21 %27 = getelementptr inbounds nuw i8, ptr %20, i64 12 store i8 2, ptr %27, align 4, !tbaa !4 %28 = getelementptr inbounds nuw i8, ptr %20, i64 16 @@ -97,7 +98,7 @@ define dso_local void @_ZN4absl13cord_internal10CordRepCrc7DestroyEPS1_(ptr noun %5 = getelementptr inbounds nuw i8, ptr %3, i64 8 %6 = atomicrmw sub ptr %5, i32 2 acq_rel, align 4 %.not.i = icmp eq i32 %6, 2 - br i1 %.not.i, label %7, label %8, !prof !20 + br i1 %.not.i, label %7, label %8, !prof !19 7: ; preds = %4 tail call void @_ZN4absl13cord_internal7CordRep7DestroyEPS1_(ptr noundef nonnull %3) @@ -110,6 +111,9 @@ define dso_local void @_ZN4absl13cord_internal10CordRepCrc7DestroyEPS1_(ptr noun ret void } +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #4 + declare void @_ZN4absl13cord_internal7CordRep7DestroyEPS1_(ptr noundef) local_unnamed_addr #1 declare void @_ZN4absl12crc_internal12CrcCordStateC1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #1 @@ -121,10 +125,11 @@ attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { builtin allocsize(0) } -attributes #6 = { builtin nounwind } -attributes #7 = { nounwind } +attributes #4 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #5 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #6 = { builtin allocsize(0) } +attributes #7 = { builtin nounwind } +attributes #8 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3} @@ -147,7 +152,6 @@ attributes #7 = { nounwind } !16 = !{!"any pointer", !7, i64 0} !17 = !{!"_ZTSN4absl12crc_internal12CrcCordStateE", !18, i64 0} !18 = !{!"p1 _ZTSN4absl12crc_internal12CrcCordState13RefcountedRepE", !16, i64 0} -!19 = !{} -!20 = !{!"branch_weights", !"expected", i32 1, i32 2000} -!21 = !{!11, !12, i64 0} -!22 = !{!5, !6, i64 0} +!19 = !{!"branch_weights", !"expected", i32 1, i32 2000} +!20 = !{!11, !12, i64 0} +!21 = !{!5, !6, i64 0} diff --git a/bench/abseil-cpp/optimized/cord_test.ll b/bench/abseil-cpp/optimized/cord_test.ll index 57775beae45..6c2b887f7b4 100644 --- a/bench/abseil-cpp/optimized/cord_test.ll +++ b/bench/abseil-cpp/optimized/cord_test.ll @@ -59415,6 +59415,7 @@ _ZN4absl12log_internal10LogMessagelsILi20EEERS1_RAT__Kc.exit: ; preds = %14 26: ; preds = %17, %23 %27 = phi i8 [ %.pre, %23 ], [ %21, %17 ] %.0.i23 = phi ptr [ %25, %23 ], [ %19, %17 ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.0.i23) ] %28 = getelementptr inbounds nuw i8, ptr %.0.i23, i64 8 %29 = atomicrmw add ptr %28, i32 2 monotonic, align 4 %or.cond.i = icmp ult i8 %27, 5 diff --git a/bench/abseil-cpp/optimized/reflection.ll b/bench/abseil-cpp/optimized/reflection.ll index 1e82dfc83f8..780f813554c 100644 --- a/bench/abseil-cpp/optimized/reflection.ll +++ b/bench/abseil-cpp/optimized/reflection.ll @@ -390,6 +390,7 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i14: ; preds = %.lr.p %.us-phi = phi i64 [ %33, %.lr.ph.i.us.us ], [ %46, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i14 ] %.us-phi19 = phi ptr [ %34, %.lr.ph.i.us.us ], [ %47, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i14 ] %50 = getelementptr inbounds nuw i8, ptr %9, i64 %.us-phi + call void @llvm.assume(i1 true) [ "nonnull"(ptr %50) ] br label %.loopexit 51: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i14, %.lr.ph.i @@ -2047,8 +2048,9 @@ _ZNKSt8functionIFvRN4absl15CommandLineFlagEEEclES2_.exit: ; preds = %14 br i1 %.not.i.i16, label %._crit_edge, label %21, !prof !28 21: ; preds = %.loopexit32 - %22 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 16), align 8, !tbaa !22, !nonnull !62, !noundef !62 + %22 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 16), align 8, !tbaa !22 %.sroa.0.0.copyload.i.i.i = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 24), align 8, !tbaa !22 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %22) ] %23 = load i8, ptr %22, align 1, !tbaa !81 %24 = icmp slt i8 %23, -1 br i1 %24, label %.lr.ph.i.i, label %.lr.ph42 @@ -2282,8 +2284,9 @@ _ZNSt6vectorIPN4absl15CommandLineFlagESaIS2_EE7reserveEm.exit: ; preds = %_ZNSt1 br i1 %.not.i.i, label %.loopexit44, label %35, !prof !28 35: ; preds = %_ZNSt6vectorIPN4absl15CommandLineFlagESaIS2_EE7reserveEm.exit - %36 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 16), align 8, !tbaa !22, !nonnull !62, !noundef !62 + %36 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 16), align 8, !tbaa !22 %.sroa.0.0.copyload.i.i.i = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 24), align 8, !tbaa !22 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %36) ] %37 = load i8, ptr %36, align 1, !tbaa !81 %38 = icmp slt i8 %37, -1 br i1 %38, label %.lr.ph.i.i, label %.lr.ph.preheader @@ -3522,7 +3525,7 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i: ; preds = %33 %41 = add i64 %.sroa.7.0, %40 %42 = and i64 %41, %11 %43 = tail call noundef i64 @_ZN4absl18container_internal19PrepareInsertNonSooERNS0_12CommonFieldsEmNS0_8FindInfoERKNS0_15PolicyFunctionsE(ptr noundef nonnull align 8 dereferenceable(32) %1, i64 noundef %9, i64 %42, i64 %.sroa.14.0, ptr noundef nonnull align 8 dereferenceable(56) @_ZZN4absl18container_internal12raw_hash_setINS0_17FlatHashMapPolicyISt17basic_string_viewIcSt11char_traitsIcEEPNS_15CommandLineFlagEEENS0_10StringHashENS0_8StringEqESaISt4pairIKS6_S8_EEE18GetPolicyFunctionsEvE5value) - %44 = load ptr, ptr %4, align 8, !tbaa !22, !nonnull !62, !noundef !62 + %44 = load ptr, ptr %4, align 8, !tbaa !22 %45 = getelementptr inbounds nuw i8, ptr %44, i64 %43 %.sroa.0.0.copyload.i.i.i.i24 = load ptr, ptr %20, align 8, !tbaa !22 %46 = getelementptr inbounds nuw %"union.absl::container_internal::map_slot_type", ptr %.sroa.0.0.copyload.i.i.i.i24, i64 %43 @@ -3541,7 +3544,8 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i: ; preds = %33 %.sink76 = phi ptr [ %45, %.thread ], [ %50, %.critedge23 ] %.sink75 = phi ptr [ %46, %.thread ], [ %31, %.critedge23 ] %.sink = phi i8 [ 1, %.thread ], [ 0, %.critedge23 ] - store ptr %.sink76, ptr %0, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sink76) ] + store ptr %.sink77, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sink75, ptr %.sroa.4.0..sroa_idx, align 8 %52 = getelementptr inbounds nuw i8, ptr %0, i64 16 diff --git a/bench/abseil-cpp/optimized/reflection_test.ll b/bench/abseil-cpp/optimized/reflection_test.ll index 342e443351b..43d09f28644 100644 --- a/bench/abseil-cpp/optimized/reflection_test.ll +++ b/bench/abseil-cpp/optimized/reflection_test.ll @@ -5342,9 +5342,10 @@ _ZN7testing15AssertionResultD2Ev.exit106: ; preds = %166, %_ZNKSt14defau 178: ; preds = %175 %179 = getelementptr inbounds nuw i8, ptr %22, i64 16 - %180 = load ptr, ptr %179, align 8, !tbaa !21, !nonnull !31, !noundef !31 + %180 = load ptr, ptr %179, align 8, !tbaa !21 %181 = getelementptr inbounds nuw i8, ptr %22, i64 24 %.sroa.0.0.copyload.i.i.i = load ptr, ptr %181, align 8, !tbaa !21 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %180) ] %182 = load i8, ptr %180, align 1, !tbaa !119 %183 = icmp slt i8 %182, -1 br i1 %183, label %.lr.ph.i.i, label %.lr.ph @@ -5520,9 +5521,10 @@ _ZN4absl18container_internal12raw_hash_setINS0_17FlatHashMapPolicyISt17basic_str 251: ; preds = %248 %252 = getelementptr inbounds nuw i8, ptr %24, i64 16 - %253 = load ptr, ptr %252, align 8, !tbaa !21, !nonnull !31, !noundef !31 + %253 = load ptr, ptr %252, align 8, !tbaa !21 %254 = getelementptr inbounds nuw i8, ptr %24, i64 24 %.sroa.0.0.copyload.i.i.i113 = load ptr, ptr %254, align 8, !tbaa !21 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %253) ] %255 = load i8, ptr %253, align 1, !tbaa !119 %256 = icmp slt i8 %255, -1 br i1 %256, label %.lr.ph.i.i119, label %.lr.ph238.preheader @@ -6126,6 +6128,7 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i10: ; preds = %.lr.p %.us-phi = phi i64 [ %31, %.lr.ph.i.split.us ], [ %40, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i10 ] %.us-phi15 = phi ptr [ %32, %.lr.ph.i.split.us ], [ %41, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i10 ] %44 = getelementptr inbounds nuw i8, ptr %10, i64 %.us-phi + call void @llvm.assume(i1 true) [ "nonnull"(ptr %44) ] br label %.loopexit 45: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i10, %.lr.ph.i.split @@ -6232,6 +6235,7 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i10: ; preds = %.lr.p %.us-phi = phi i64 [ %31, %.lr.ph.i.split.us ], [ %40, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i10 ] %.us-phi15 = phi ptr [ %32, %.lr.ph.i.split.us ], [ %41, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i10 ] %44 = getelementptr inbounds nuw i8, ptr %10, i64 %.us-phi + call void @llvm.assume(i1 true) [ "nonnull"(ptr %44) ] br label %.loopexit 45: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i10, %.lr.ph.i.split @@ -6338,6 +6342,7 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i10: ; preds = %.lr.p %.us-phi = phi i64 [ %31, %.lr.ph.i.split.us ], [ %40, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i10 ] %.us-phi15 = phi ptr [ %32, %.lr.ph.i.split.us ], [ %41, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i10 ] %44 = getelementptr inbounds nuw i8, ptr %10, i64 %.us-phi + call void @llvm.assume(i1 true) [ "nonnull"(ptr %44) ] br label %.loopexit 45: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i.i.i.i10, %.lr.ph.i.split diff --git a/bench/actix-rs/optimized/190uhijawk1lki5o.ll b/bench/actix-rs/optimized/190uhijawk1lki5o.ll index 0dd2d6ec59e..702b0baa453 100644 --- a/bench/actix-rs/optimized/190uhijawk1lki5o.ll +++ b/bench/actix-rs/optimized/190uhijawk1lki5o.ll @@ -126,6 +126,7 @@ define hidden void @"_ZN4core3ptr114drop_in_place$LT$alloc..boxed..Box$LT$dyn$u2 6: ; preds = %1 %7 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] %8 = getelementptr inbounds nuw i8, ptr %4, i64 8 %9 = load i64, ptr %8, align 8, !range !34, !invariant.load !14 %10 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -206,6 +207,7 @@ define hidden void @"_ZN4core3ptr142drop_in_place$LT$$LP$core..any..TypeId$C$all 7: ; preds = %1 %8 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %3) ] %9 = getelementptr inbounds nuw i8, ptr %5, i64 8 %10 = load i64, ptr %9, align 8, !range !34, !invariant.load !14, !noalias !50 %11 = getelementptr inbounds nuw i8, ptr %5, i64 16 @@ -287,6 +289,7 @@ define hidden void @"_ZN4core3ptr68drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20 6: ; preds = %1 %7 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] %8 = getelementptr inbounds nuw i8, ptr %4, i64 8 %9 = load i64, ptr %8, align 8, !range !34, !invariant.load !14 %10 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -387,6 +390,7 @@ define hidden void @"_ZN4core3ptr96drop_in_place$LT$$LP$core..any..TypeId$C$allo 7: ; preds = %1 %8 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %3) ] %9 = getelementptr inbounds nuw i8, ptr %5, i64 8 %10 = load i64, ptr %9, align 8, !range !34, !invariant.load !14, !noalias !80 %11 = getelementptr inbounds nuw i8, ptr %5, i64 16 @@ -1670,6 +1674,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner13drop_elements17h07e67f333c 29: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h15412992da91028eE.llvm.17787265185908177030.exit" %30 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %25) ] %31 = getelementptr inbounds nuw i8, ptr %27, i64 8 %32 = load i64, ptr %31, align 8, !range !34, !invariant.load !14, !noalias !241 %33 = getelementptr inbounds nuw i8, ptr %27, i64 16 @@ -2129,6 +2134,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner13drop_elements17hd42dc9b01a 29: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hc2b237aa6969a35bE.llvm.17787265185908177030.exit" %30 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %25) ] %31 = getelementptr inbounds nuw i8, ptr %27, i64 8 %32 = load i64, ptr %31, align 8, !range !34, !invariant.load !14, !noalias !398 %33 = getelementptr inbounds nuw i8, ptr %27, i64 16 @@ -2357,6 +2363,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17h444b4a0 36: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hc2b237aa6969a35bE.llvm.17787265185908177030.exit.i" %37 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %32) ] %38 = getelementptr inbounds nuw i8, ptr %34, i64 8 %39 = load i64, ptr %38, align 8, !range !34, !invariant.load !14, !noalias !469 %40 = getelementptr inbounds nuw i8, ptr %34, i64 16 @@ -2892,6 +2899,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17hcc88a2c 36: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h15412992da91028eE.llvm.17787265185908177030.exit.i" %37 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %32) ] %38 = getelementptr inbounds nuw i8, ptr %34, i64 8 %39 = load i64, ptr %38, align 8, !range !34, !invariant.load !14, !noalias !617 %40 = getelementptr inbounds nuw i8, ptr %34, i64 16 @@ -3057,6 +3065,7 @@ define hidden void @"_ZN9hashbrown3raw15Bucket$LT$T$GT$4drop17h8889643584086f38E 8: ; preds = %1 %9 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %4) ] %10 = getelementptr inbounds nuw i8, ptr %6, i64 8 %11 = load i64, ptr %10, align 8, !range !34, !invariant.load !14, !noalias !644 %12 = getelementptr inbounds nuw i8, ptr %6, i64 16 @@ -3157,6 +3166,7 @@ define hidden void @"_ZN9hashbrown3raw15Bucket$LT$T$GT$4drop17heb34882374d44a4aE 8: ; preds = %1 %9 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %4) ] %10 = getelementptr inbounds nuw i8, ptr %6, i64 8 %11 = load i64, ptr %10, align 8, !range !34, !invariant.load !14, !noalias !665 %12 = getelementptr inbounds nuw i8, ptr %6, i64 16 diff --git a/bench/actix-rs/optimized/305jwhumkt6l000n.ll b/bench/actix-rs/optimized/305jwhumkt6l000n.ll index bb2cdd2b53d..0864305ae8d 100644 --- a/bench/actix-rs/optimized/305jwhumkt6l000n.ll +++ b/bench/actix-rs/optimized/305jwhumkt6l000n.ll @@ -46,6 +46,7 @@ define hidden void @"_ZN4core3ptr68drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20 6: ; preds = %1 %7 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] %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 @@ -139,6 +140,7 @@ define hidden void @"_ZN4core3ptr96drop_in_place$LT$$LP$core..any..TypeId$C$allo 7: ; preds = %1 %8 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %3) ] %9 = getelementptr inbounds nuw i8, ptr %5, i64 8 %10 = load i64, ptr %9, align 8, !range !6, !invariant.load !4, !noalias !28 %11 = getelementptr inbounds nuw i8, ptr %5, i64 16 @@ -808,6 +810,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner13drop_elements17hf602183498 29: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdfba966fed3d355dE.llvm.8426763234977947650.exit" %30 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %25) ] %31 = getelementptr inbounds nuw i8, ptr %27, i64 8 %32 = load i64, ptr %31, align 8, !range !6, !invariant.load !4, !noalias !182 %33 = getelementptr inbounds nuw i8, ptr %27, i64 16 @@ -908,6 +911,7 @@ define hidden void @_ZN9hashbrown3raw13RawTableInner16drop_inner_table17ha43f76d 36: ; preds = %"_ZN91_$LT$hashbrown..raw..RawIter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hdfba966fed3d355dE.llvm.8426763234977947650.exit.i" %37 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %32) ] %38 = getelementptr inbounds nuw i8, ptr %34, i64 8 %39 = load i64, ptr %38, align 8, !range !6, !invariant.load !4, !noalias !208 %40 = getelementptr inbounds nuw i8, ptr %34, i64 16 @@ -1179,6 +1183,7 @@ define hidden void @"_ZN9hashbrown3raw15Bucket$LT$T$GT$4drop17ha2b752539dd87dddE 8: ; preds = %1 %9 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %4) ] %10 = getelementptr inbounds nuw i8, ptr %6, i64 8 %11 = load i64, ptr %10, align 8, !range !6, !invariant.load !4, !noalias !286 %12 = getelementptr inbounds nuw i8, ptr %6, i64 16 diff --git a/bench/actix-rs/optimized/5a33a9xfp20c1mrr.ll b/bench/actix-rs/optimized/5a33a9xfp20c1mrr.ll index bd39560b506..b55bfd04506 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 } 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/4dwzlylnzyd0t16.ll b/bench/anki-rs/optimized/4dwzlylnzyd0t16.ll index d747edb85d0..7a9672372ca 100644 --- a/bench/anki-rs/optimized/4dwzlylnzyd0t16.ll +++ b/bench/anki-rs/optimized/4dwzlylnzyd0t16.ll @@ -957,20 +957,19 @@ define { ptr, i32 } @_ZN14anki_proto_gen6Method5input17h365368cd04bdfe87E(ptr al %10 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr65drop_in_place$LT$prost_reflect..descriptor..MessageDescriptor$GT$17habfa65a83341daf6E"(ptr nonnull align 8 %2) #9 - to label %20 unwind label %18 + to label %19 unwind label %18 11: ; preds = %1 %.fca.0.extract.i = extractvalue { ptr, i64 } %8, 0 %.fca.1.extract.i = extractvalue { ptr, i64 } %8, 1 - %12 = icmp ne ptr %.fca.0.extract.i, null - call void @llvm.assume(i1 %12) - %13 = invoke zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h06c52537241f0de7E"(ptr nonnull align 1 %.fca.0.extract.i, i64 %.fca.1.extract.i, ptr nonnull align 1 @anon.c2c254bac7312232f49bd554ba5b0ae2.5, i64 18) - to label %14 unwind label %9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.fca.0.extract.i) ] + %12 = invoke zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h06c52537241f0de7E"(ptr nonnull align 1 %.fca.0.extract.i, i64 %.fca.1.extract.i, ptr nonnull align 1 @anon.c2c254bac7312232f49bd554ba5b0ae2.5, i64 18) + to label %13 unwind label %9 14: ; preds = %11 %15 = load ptr, ptr %2, align 8, !nonnull !3 %16 = load i32, ptr %7, align 8 - br i1 %13, label %17, label %_ZN14anki_proto_gen16msg_if_not_empty17h17e6a436681bb54fE.exit + br i1 %12, label %17, label %_ZN14anki_proto_gen16msg_if_not_empty17h17e6a436681bb54fE.exit 17: ; preds = %14 call void @"_ZN4core3ptr65drop_in_place$LT$prost_reflect..descriptor..MessageDescriptor$GT$17habfa65a83341daf6E"(ptr nonnull align 8 %2) @@ -986,8 +985,8 @@ define { ptr, i32 } @_ZN14anki_proto_gen6Method5input17h365368cd04bdfe87E(ptr al resume { ptr, i32 } %10 _ZN14anki_proto_gen16msg_if_not_empty17h17e6a436681bb54fE.exit: ; preds = %14, %17 - %.sroa.0.0.i = phi ptr [ null, %17 ], [ %15, %14 ] - %.sroa.3.0.i = phi i32 [ undef, %17 ], [ %16, %14 ] + %.sroa.0.0.i = phi ptr [ null, %16 ], [ %15, %13 ] + %.sroa.3.0.i = phi i32 [ undef, %16 ], [ %16, %13 ] %21 = insertvalue { ptr, i32 } poison, ptr %.sroa.0.0.i, 0 %22 = insertvalue { ptr, i32 } %21, i32 %.sroa.3.0.i, 1 call void @llvm.lifetime.end.p0(ptr nonnull %2) @@ -1012,20 +1011,19 @@ define { ptr, i32 } @_ZN14anki_proto_gen6Method6output17hc1049834832083d4E(ptr a %10 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr65drop_in_place$LT$prost_reflect..descriptor..MessageDescriptor$GT$17habfa65a83341daf6E"(ptr nonnull align 8 %2) #9 - to label %20 unwind label %18 + to label %19 unwind label %18 11: ; preds = %1 %.fca.0.extract.i = extractvalue { ptr, i64 } %8, 0 %.fca.1.extract.i = extractvalue { ptr, i64 } %8, 1 - %12 = icmp ne ptr %.fca.0.extract.i, null - call void @llvm.assume(i1 %12) - %13 = invoke zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h06c52537241f0de7E"(ptr nonnull align 1 %.fca.0.extract.i, i64 %.fca.1.extract.i, ptr nonnull align 1 @anon.c2c254bac7312232f49bd554ba5b0ae2.5, i64 18) - to label %14 unwind label %9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.fca.0.extract.i) ] + %12 = invoke zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h06c52537241f0de7E"(ptr nonnull align 1 %.fca.0.extract.i, i64 %.fca.1.extract.i, ptr nonnull align 1 @anon.c2c254bac7312232f49bd554ba5b0ae2.5, i64 18) + to label %13 unwind label %9 14: ; preds = %11 %15 = load ptr, ptr %2, align 8, !nonnull !3 %16 = load i32, ptr %7, align 8 - br i1 %13, label %17, label %_ZN14anki_proto_gen16msg_if_not_empty17h17e6a436681bb54fE.exit + br i1 %12, label %17, label %_ZN14anki_proto_gen16msg_if_not_empty17h17e6a436681bb54fE.exit 17: ; preds = %14 call void @"_ZN4core3ptr65drop_in_place$LT$prost_reflect..descriptor..MessageDescriptor$GT$17habfa65a83341daf6E"(ptr nonnull align 8 %2) @@ -1041,8 +1039,8 @@ define { ptr, i32 } @_ZN14anki_proto_gen6Method6output17hc1049834832083d4E(ptr a resume { ptr, i32 } %10 _ZN14anki_proto_gen16msg_if_not_empty17h17e6a436681bb54fE.exit: ; preds = %14, %17 - %.sroa.0.0.i = phi ptr [ null, %17 ], [ %15, %14 ] - %.sroa.3.0.i = phi i32 [ undef, %17 ], [ %16, %14 ] + %.sroa.0.0.i = phi ptr [ null, %16 ], [ %15, %13 ] + %.sroa.3.0.i = phi i32 [ undef, %16 ], [ %16, %13 ] %21 = insertvalue { ptr, i32 } poison, ptr %.sroa.0.0.i, 0 %22 = insertvalue { ptr, i32 } %21, i32 %.sroa.3.0.i, 1 call void @llvm.lifetime.end.p0(ptr nonnull %2) @@ -1270,7 +1268,7 @@ define hidden void @"_ZN61_$LT$anki_proto_gen..Method$u20$as$u20$core..clone..Cl 16: ; preds = %20, %17 %.pn = phi { ptr, i32 } [ %21, %20 ], [ %18, %17 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h5bdedbe70fbef286E"(ptr nonnull align 8 %5) #9 - to label %33 unwind label %31 + to label %32 unwind label %31 17: ; preds = %12 %18 = landingpad { ptr, i32 } @@ -1290,10 +1288,9 @@ define hidden void @"_ZN61_$LT$anki_proto_gen..Method$u20$as$u20$core..clone..Cl 22: ; preds = %13 %23 = getelementptr inbounds nuw i8, ptr %1, i64 32 %24 = load i32, ptr %23, align 8, !noundef !3 - %25 = icmp ne ptr %15, null - call void @llvm.assume(i1 %25) - %26 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %27 = load i32, ptr %26, align 8, !noundef !3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %15) ] + %25 = getelementptr inbounds nuw i8, ptr %1, i64 40 + %26 = load i32, ptr %25, align 8, !noundef !3 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) %28 = getelementptr inbounds nuw i8, ptr %0, i64 48 store i64 %7, ptr %28, align 8 @@ -1304,7 +1301,7 @@ define hidden void @"_ZN61_$LT$anki_proto_gen..Method$u20$as$u20$core..clone..Cl %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 32 store i32 %24, ptr %.sroa.2.0..sroa_idx, align 8 %.sroa.31.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 40 - store i32 %27, ptr %.sroa.31.0..sroa_idx, align 8 + store i32 %26, ptr %.sroa.31.0..sroa_idx, align 8 ret void 31: ; preds = %20, %16 diff --git a/bench/anki-rs/optimized/yhvjx27msub7381.ll b/bench/anki-rs/optimized/yhvjx27msub7381.ll index ca0183b2c52..79927aac90b 100644 --- a/bench/anki-rs/optimized/yhvjx27msub7381.ll +++ b/bench/anki-rs/optimized/yhvjx27msub7381.ll @@ -11,11 +11,10 @@ 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) @@ -34,8 +33,7 @@ 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) diff --git a/bench/assimp/optimized/glTF2Importer.ll b/bench/assimp/optimized/glTF2Importer.ll index 2e141678137..235b9df3378 100644 --- a/bench/assimp/optimized/glTF2Importer.ll +++ b/bench/assimp/optimized/glTF2Importer.ll @@ -65922,11 +65922,10 @@ define linkonce_odr hidden void @_ZN9rapidjson22GenericSchemaValidatorINS_21Gene _ZN9rapidjson22GenericSchemaValidatorINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES6_EENS_17BaseReaderHandlerIS4_vEES6_E17GetStateAllocatorEv.exit: ; preds = %3, %7 %10 = phi ptr [ %8, %7 ], [ %6, %3 ] call void @_ZN9rapidjson12GenericValueINS_4UTF8IcEENS_12CrtAllocatorEEC2IS3_EERKNS0_IS2_T_EERS3_b(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 1 dereferenceable(1) %10, i1 noundef zeroext false) - %11 = icmp ne ptr %2, null - call void @llvm.assume(i1 %11) - %12 = load ptr, ptr %5, align 8 - %.not.i4 = icmp eq ptr %12, null - br i1 %.not.i4, label %13, label %_ZN9rapidjson22GenericSchemaValidatorINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES6_EENS_17BaseReaderHandlerIS4_vEES6_E17GetStateAllocatorEv.exit5 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] + %11 = load ptr, ptr %5, align 8 + %.not.i4 = icmp eq ptr %11, null + br i1 %.not.i4, label %12, label %_ZN9rapidjson22GenericSchemaValidatorINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES6_EENS_17BaseReaderHandlerIS4_vEES6_E17GetStateAllocatorEv.exit5 13: ; preds = %_ZN9rapidjson22GenericSchemaValidatorINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES6_EENS_17BaseReaderHandlerIS4_vEES6_E17GetStateAllocatorEv.exit %14 = invoke noalias noundef nonnull dereferenceable(1) ptr @_Znwm(i64 noundef 1) #41 @@ -65976,7 +65975,7 @@ _ZN9rapidjson7ReallocINS_13GenericMemberINS_4UTF8IcEENS_12CrtAllocatorEEES4_EEPT br label %40 40: ; preds = %_ZN9rapidjson7ReallocINS_13GenericMemberINS_4UTF8IcEENS_12CrtAllocatorEEES4_EEPT_RT0_S7_mm.exit.i.i.i, %20, %_ZN9rapidjson22GenericSchemaValidatorINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES6_EENS_17BaseReaderHandlerIS4_vEES6_E17GetStateAllocatorEv.exit5 - %41 = phi i32 [ %.pre.i.i, %_ZN9rapidjson7ReallocINS_13GenericMemberINS_4UTF8IcEENS_12CrtAllocatorEEES4_EEPT_RT0_S7_mm.exit.i.i.i ], [ %17, %20 ], [ %17, %_ZN9rapidjson22GenericSchemaValidatorINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES6_EENS_17BaseReaderHandlerIS4_vEES6_E17GetStateAllocatorEv.exit5 ] + %41 = phi i32 [ %.pre.i.i, %_ZN9rapidjson7ReallocINS_13GenericMemberINS_4UTF8IcEENS_12CrtAllocatorEEES4_EEPT_RT0_S7_mm.exit.i.i.i ], [ %17, %19 ], [ %17, %_ZN9rapidjson22GenericSchemaValidatorINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES6_EENS_17BaseReaderHandlerIS4_vEES6_E17GetStateAllocatorEv.exit5 ] %42 = getelementptr inbounds nuw i8, ptr %2, i64 152 %43 = getelementptr inbounds nuw i8, ptr %0, i64 184 %44 = load ptr, ptr %43, align 8 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 c607d9a52f8..8768cc16e1f 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/1rbie63mhpvpjak.ll b/bench/clap-rs/optimized/1rbie63mhpvpjak.ll index 988808ffa22..7f8dd95229e 100644 --- a/bench/clap-rs/optimized/1rbie63mhpvpjak.ll +++ b/bench/clap-rs/optimized/1rbie63mhpvpjak.ll @@ -1001,36 +1001,34 @@ define hidden void @_ZN4core3fmt9Arguments9new_const17hf50a4933d1135262E.llvm.13 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read, inaccessiblemem: write) uwtable -define hidden { i64, i64 } @"_ZN4core3ops5range18Bound$LT$$RF$T$GT$6cloned17h29d261e5bf60c6a9E"(i64 noundef %0, ptr readonly captures(address_is_null) %1) unnamed_addr #6 { +define hidden { i64, i64 } @"_ZN4core3ops5range18Bound$LT$$RF$T$GT$6cloned17h29d261e5bf60c6a9E"(i64 noundef %0, ptr readonly captures(none) %1) unnamed_addr #6 { %3 = icmp eq i64 %0, 2 br i1 %3, label %6, 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 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] + %4 = load i64, ptr %1, align 8, !noundef !4 + br label %5 6: ; preds = %2, %.sink.split - %.sroa.4.0 = phi i64 [ undef, %2 ], [ %5, %.sink.split ] + %.sroa.4.0 = phi i64 [ undef, %2 ], [ %4, %.sink.split ] %7 = insertvalue { i64, i64 } poison, i64 %0, 0 %8 = insertvalue { i64, i64 } %7, i64 %.sroa.4.0, 1 ret { i64, i64 } %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$6cloned17hadfa51c9aed769b6E"(i64 noundef %0, ptr readonly captures(address_is_null) %1) unnamed_addr #6 { +define hidden { i64, i64 } @"_ZN4core3ops5range18Bound$LT$$RF$T$GT$6cloned17hadfa51c9aed769b6E"(i64 noundef %0, ptr readonly captures(none) %1) unnamed_addr #6 { %3 = icmp eq i64 %0, 2 br i1 %3, label %6, 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 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1) ] + %4 = load i64, ptr %1, align 8, !noundef !4 + br label %5 6: ; preds = %2, %.sink.split - %.sroa.4.0 = phi i64 [ undef, %2 ], [ %5, %.sink.split ] + %.sroa.4.0 = phi i64 [ undef, %2 ], [ %4, %.sink.split ] %7 = insertvalue { i64, i64 } poison, i64 %0, 0 %8 = insertvalue { i64, i64 } %7, i64 %.sroa.4.0, 1 ret { i64, i64 } %8 @@ -1991,8 +1989,7 @@ define hidden void @"_ZN4core6option15Option$LT$T$GT$11map_or_else17h91e7d3133cf %9 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h1852f655f36c0dc7E"(i64 noundef %2, i1 noundef zeroext false), !noalias !241 %10 = extractvalue { i64, ptr } %9, 0 %11 = extractvalue { i64, ptr } %9, 1 - %12 = icmp ne ptr %11, null - tail call void @llvm.assume(i1 %12) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %11) ] tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %11, ptr nonnull readonly align 1 %1, i64 %2, i1 false), !noalias !247 store i64 %10, ptr %0, align 8, !alias.scope !248, !noalias !249 %.sroa.4.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -2203,15 +2200,14 @@ define hidden void @_ZN5alloc3fmt6format17h55b1a8bf61a7c713E.llvm.13747326498558 br label %"_ZN4core6option15Option$LT$T$GT$11map_or_else17h91e7d3133cfeb69aE.llvm.13747326498558855189.exit" 12: ; preds = %19, %9 - %.sroa.6.0.ph = phi i64 [ 0, %9 ], [ %22, %19 ] - %.sroa.0.0.ph = phi ptr [ @anon.85f68effae4436bb4f25a144403dc49c.5.llvm.13747326498558855189, %9 ], [ %20, %19 ] + %.sroa.6.0.ph = phi i64 [ 0, %9 ], [ %22, %18 ] + %.sroa.0.0.ph = phi ptr [ @anon.85f68effae4436bb4f25a144403dc49c.5.llvm.13747326498558855189, %9 ], [ %20, %18 ] tail call void @llvm.experimental.noalias.scope.decl(metadata !266) tail call void @llvm.experimental.noalias.scope.decl(metadata !269) %13 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h1852f655f36c0dc7E"(i64 noundef %.sroa.6.0.ph, i1 noundef zeroext false), !noalias !272 %14 = extractvalue { i64, ptr } %13, 0 %15 = extractvalue { i64, ptr } %13, 1 - %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 @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %15, ptr nonnull readonly align 1 %.sroa.0.0.ph, i64 %.sroa.6.0.ph, i1 false), !noalias !278 store i64 %14, ptr %0, align 8, !alias.scope !279, !noalias !280 %.sroa.4.0..sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -2498,6 +2494,7 @@ define hidden void @_ZN5alloc3str17join_generic_copy17h05e379cc4c228ff4E(ptr noa 96: ; preds = %.lr.ph311 %97 = sub nuw i64 %.sroa.27.0310, %4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.016.0309) ] call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %.sroa.016.0309, ptr nonnull readonly align 1 %3, i64 %4, i1 false), !alias.scope !367, !noalias !371 %.not.i168 = icmp ugt i64 %.val3.i158, %97 br i1 %.not.i168, label %.invoke, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h2316c6edcba7750eE.exit173" @@ -2784,6 +2781,7 @@ define hidden void @_ZN5alloc3str17join_generic_copy17h4fe6540049b1f375E(ptr noa 89: ; preds = %.lr.ph311 %90 = sub nuw i64 %.sroa.27.0310, %4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.016.0309) ] call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %.sroa.016.0309, ptr nonnull readonly align 1 %3, i64 %4, i1 false), !alias.scope !464, !noalias !468 %.not.i168 = icmp ugt i64 %.val3.i158, %90 br i1 %.not.i168, label %.invoke, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h2316c6edcba7750eE.exit173" @@ -3077,6 +3075,7 @@ define hidden void @_ZN5alloc3str17join_generic_copy17haa4d8768115a32e2E(ptr noa 94: ; preds = %.lr.ph310 %95 = sub nuw i64 %.sroa.27.0309, %4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.016.0308) ] call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %.sroa.016.0308, ptr nonnull readonly align 1 %3, i64 %4, i1 false), !alias.scope !596, !noalias !600 %.not.i167 = icmp ugt i64 %.val3.i157, %95 br i1 %.not.i167, label %.invoke, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h2316c6edcba7750eE.exit172" @@ -4569,8 +4568,7 @@ define void @"_ZN12clap_builder7builder3str115_$LT$impl$u20$core..convert..From$ %4 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h1852f655f36c0dc7E"(i64 noundef %2, i1 noundef zeroext false), !noalias !836 %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 readonly align 1 %1, i64 %2, i1 false), !noalias !846 store i64 %5, ptr %0, align 8 %.sroa.0.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 diff --git a/bench/cmake/optimized/nghttp2_session.ll b/bench/cmake/optimized/nghttp2_session.ll index a45d3b4670c..efb79f6c118 100644 --- a/bench/cmake/optimized/nghttp2_session.ll +++ b/bench/cmake/optimized/nghttp2_session.ll @@ -13323,17 +13323,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/cpython/optimized/_interpchannelsmodule.ll b/bench/cpython/optimized/_interpchannelsmodule.ll index c9a0a77b41c..388f34e52a9 100644 --- a/bench/cpython/optimized/_interpchannelsmodule.ll +++ b/bench/cpython/optimized/_interpchannelsmodule.ll @@ -2720,15 +2720,14 @@ define internal ptr @channelsmod__channel_id(ptr noundef %0, ptr noundef %1, ptr %13 = getelementptr inbounds nuw i8, ptr %10, i64 24 %14 = load ptr, ptr %13, align 8, !tbaa !12 %15 = tail call ptr @PyUnicode_FromString(ptr noundef nonnull @.str) #7 - %16 = icmp ne ptr %15, null - tail call void @llvm.assume(i1 %16) - %17 = tail call ptr @PyImport_GetModule(ptr noundef nonnull %15) #7 - %18 = load i32, ptr %15, align 8, !tbaa !68 - %.not.i.i.i = icmp sgt i32 %18, -1 - br i1 %.not.i.i.i, label %19, label %get_module_from_owned_type.exit + call void @llvm.assume(i1 true) [ "nonnull"(ptr %15) ] + %16 = tail call ptr @PyImport_GetModule(ptr noundef nonnull %15) #7 + %17 = load i32, ptr %15, align 8, !tbaa !68 + %.not.i.i.i = icmp sgt i32 %17, -1 + br i1 %.not.i.i.i, label %18, label %get_module_from_owned_type.exit 19: ; preds = %12 - %20 = add nsw i32 %18, -1 + %20 = add nsw i32 %17, -1 store i32 %20, ptr %15, align 8, !tbaa !68 %21 = icmp eq i32 %20, 0 br i1 %21, label %22, label %get_module_from_owned_type.exit @@ -2738,18 +2737,18 @@ define internal ptr @channelsmod__channel_id(ptr noundef %0, ptr noundef %1, ptr br label %get_module_from_owned_type.exit get_module_from_owned_type.exit: ; preds = %12, %19, %22 - %23 = load i32, ptr %17, align 8, !tbaa !68 + %23 = load i32, ptr %16, align 8, !tbaa !68 %.not.i = icmp sgt i32 %23, -1 br i1 %.not.i, label %24, label %Py_DECREF.exit 24: ; preds = %get_module_from_owned_type.exit %25 = add nsw i32 %23, -1 - store i32 %25, ptr %17, align 8, !tbaa !68 + store i32 %25, ptr %16, align 8, !tbaa !68 %26 = icmp eq i32 %25, 0 br i1 %26, label %27, label %Py_DECREF.exit 27: ; preds = %24 - tail call void @_Py_Dealloc(ptr noundef nonnull %17) #7 + tail call void @_Py_Dealloc(ptr noundef nonnull %16) #7 br label %Py_DECREF.exit Py_DECREF.exit: ; preds = %get_module_from_owned_type.exit, %24, %27 @@ -2801,7 +2800,7 @@ Py_DECREF.exit: ; preds = %get_module_from_own br label %46 46: ; preds = %44, %42 - %.012.i = phi i32 [ %..i, %42 ], [ %spec.select.i, %44 ] + %.012.i = phi i32 [ %..i, %41 ], [ %spec.select.i, %43 ] call void @llvm.lifetime.start.p0(ptr nonnull %9) %47 = load i32, ptr %7, align 4, !tbaa !26 %48 = load i32, ptr %8, align 4, !tbaa !26 @@ -2814,7 +2813,7 @@ Py_DECREF.exit: ; preds = %get_module_from_own br label %_channelid_new.exit _channelid_new.exit: ; preds = %Py_DECREF.exit, %38, %46 - %.0.i = phi ptr [ null, %38 ], [ %.1.i, %46 ], [ null, %Py_DECREF.exit ] + %.0.i = phi ptr [ null, %37 ], [ %.1.i, %45 ], [ null, %Py_DECREF.exit ] call void @llvm.lifetime.end.p0(ptr nonnull %8) call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) diff --git a/bench/csmith/optimized/FactUnion.ll b/bench/csmith/optimized/FactUnion.ll index 3dafd50e043..419913bbcba 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 - %.tr76.be.in = phi ptr [ %68, %64 ], [ %71, %69 ] + %.tr76.be.in = phi ptr [ %68, %63 ], [ %71, %68 ] %.tr76.be = load ptr, ptr %.tr76.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 602593446ff..842aa6e0f07 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/darktable/optimized/DcsDecoder.ll b/bench/darktable/optimized/DcsDecoder.ll index 4085cf5e475..7d9991e10af 100644 --- a/bench/darktable/optimized/DcsDecoder.ll +++ b/bench/darktable/optimized/DcsDecoder.ll @@ -341,7 +341,7 @@ _ZN8rawspeed18RawImageCurveGuardC2EPKNS_8RawImageERKSt6vectorItSaItEEb.exit: ; p 50: ; preds = %_ZN8rawspeed18RawImageCurveGuardC2EPKNS_8RawImageERKSt6vectorItSaItEEb.exit %51 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %52 = load ptr, ptr %51, align 8, !tbaa !86, !nonnull !75, !noundef !75 + %52 = load ptr, ptr %51, align 8, !tbaa !86 %53 = icmp sgt i32 %47, -1 call void @llvm.assume(i1 %53) %54 = add nuw nsw i32 %42, %40 @@ -352,6 +352,7 @@ _ZN8rawspeed18RawImageCurveGuardC2EPKNS_8RawImageERKSt6vectorItSaItEEb.exit: ; p %57 = icmp sgt i32 %42, -1 call void @llvm.assume(i1 %57) %58 = getelementptr inbounds nuw i8, ptr %52, i64 %43 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %52) ] %.sroa.2.8.insert.insert = or disjoint i64 %44, 244834610708480 store ptr %58, ptr %7, align 8 %.sroa.2.0..0..sroa_idx.i16 = getelementptr inbounds nuw i8, ptr %7, i64 8 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/diesel-rs/optimized/1h5ssk6l01034x01.ll b/bench/diesel-rs/optimized/1h5ssk6l01034x01.ll index c1fba6066ca..387e32bbe97 100644 --- a/bench/diesel-rs/optimized/1h5ssk6l01034x01.ll +++ b/bench/diesel-rs/optimized/1h5ssk6l01034x01.ll @@ -1146,6 +1146,7 @@ define internal void @"_ZN4core3ptr67drop_in_place$LT$alloc..boxed..Box$LT$diese 20: ; preds = %16 %21 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %22 = getelementptr inbounds nuw i8, ptr %.val1.i, i64 8 %23 = load i64, ptr %22, align 8, !range !326, !invariant.load !10 %24 = getelementptr inbounds nuw i8, ptr %.val1.i, i64 16 @@ -1185,6 +1186,7 @@ define internal void @"_ZN4core3ptr67drop_in_place$LT$alloc..boxed..Box$LT$diese 41: ; preds = %37 %42 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val6.i) ] %43 = getelementptr inbounds nuw i8, ptr %.val7.i, i64 8 %44 = load i64, ptr %43, align 8, !range !326, !invariant.load !10 %45 = getelementptr inbounds nuw i8, ptr %.val7.i, i64 16 @@ -1224,6 +1226,7 @@ define internal void @"_ZN4core3ptr67drop_in_place$LT$alloc..boxed..Box$LT$diese 62: ; preds = %58 %63 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val4.i) ] %64 = getelementptr inbounds nuw i8, ptr %.val5.i, i64 8 %65 = load i64, ptr %64, align 8, !range !326, !invariant.load !10 %66 = getelementptr inbounds nuw i8, ptr %.val5.i, i64 16 @@ -1263,6 +1266,7 @@ define internal void @"_ZN4core3ptr67drop_in_place$LT$alloc..boxed..Box$LT$diese 83: ; preds = %79 %84 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val2.i) ] %85 = getelementptr inbounds nuw i8, ptr %.val3.i, i64 8 %86 = load i64, ptr %85, align 8, !range !326, !invariant.load !10 %87 = getelementptr inbounds nuw i8, ptr %.val3.i, i64 16 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/3kvzvcniz931d1o8.ll b/bench/egg-rs/optimized/3kvzvcniz931d1o8.ll index 1dcb6b823b5..24b905f1ca0 100644 --- a/bench/egg-rs/optimized/3kvzvcniz931d1o8.ll +++ b/bench/egg-rs/optimized/3kvzvcniz931d1o8.ll @@ -19,10 +19,9 @@ define hidden noundef nonnull align 4 dereferenceable(4) ptr @"_ZN110_$LT$core.. ; Function Attrs: nonlazybind uwtable define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList7entries17h0b36d68421cdcb7cE(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 [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/egg-rs/optimized/55a7hv010cxk6f68.ll b/bench/egg-rs/optimized/55a7hv010cxk6f68.ll index e7bb1a836bd..4b0cac09639 100644 --- a/bench/egg-rs/optimized/55a7hv010cxk6f68.ll +++ b/bench/egg-rs/optimized/55a7hv010cxk6f68.ll @@ -29,7 +29,7 @@ define hidden noundef zeroext i1 @"_ZN4core3ops8function6FnOnce40call_once$u7b$$ br i1 %12, label %_ZN4core3ops8function6FnOnce9call_once17h7080a1b488c6e943E.exit, label %13, !prof !23 13: ; preds = %2 - tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.val.i.i, i64 noundef %11, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.dd3b642297c3bff32e13b7f00b408b30.1) #9, !noalias !24 + tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.val.i.i, i64 noundef %11, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.dd3b642297c3bff32e13b7f00b408b30.1) #10, !noalias !24 unreachable _ZN4core3ops8function6FnOnce9call_once17h7080a1b488c6e943E.exit: ; preds = %2 @@ -71,7 +71,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.3488692421967456325.exit", label %7, !prof !23 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) #9, !noalias !27 + tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %1, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) #10, !noalias !27 unreachable "_ZN75_$LT$usize$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3bffe445e68c4870E.llvm.3488692421967456325.exit": ; preds = %3 @@ -101,7 +101,7 @@ define hidden noundef nonnull align 8 dereferenceable(40) ptr @"_ZN8indexmap3map br i1 %10, label %"_ZN8indexmap3map4core3raw26OccupiedEntry$LT$K$C$V$GT$8into_mut17h05f0c6143d412a40E.exit", label %11, !prof !23 11: ; preds = %5 - tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %7, i64 noundef %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.281238473684458937f08731efa41452.7.llvm.16079354848027093366) #9, !noalias !39 + tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %7, i64 noundef %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.281238473684458937f08731efa41452.7.llvm.16079354848027093366) #10, !noalias !39 unreachable 12: ; preds = %2 @@ -116,7 +116,7 @@ define hidden noundef nonnull align 8 dereferenceable(40) ptr @"_ZN8indexmap3map br i1 %16, label %"_ZN8indexmap3map4core3raw26OccupiedEntry$LT$K$C$V$GT$8into_mut17h05f0c6143d412a40E.exit", label %17, !prof !23 17: ; preds = %12 - tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %13, i64 noundef %15, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.dd3b642297c3bff32e13b7f00b408b30.2.llvm.3488692421967456325) #9, !noalias !51 + tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %13, i64 noundef %15, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.dd3b642297c3bff32e13b7f00b408b30.2.llvm.3488692421967456325) #10, !noalias !51 unreachable "_ZN8indexmap3map4core3raw26OccupiedEntry$LT$K$C$V$GT$8into_mut17h05f0c6143d412a40E.exit": ; preds = %12, %5 @@ -143,7 +143,7 @@ define hidden noundef nonnull align 8 dereferenceable(40) ptr @"_ZN8indexmap3map br i1 %11, 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.3488692421967456325.exit", label %12, !prof !23 12: ; preds = %2 - tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %8, i64 noundef %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.dd3b642297c3bff32e13b7f00b408b30.2.llvm.3488692421967456325) #9, !noalias !59 + tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %8, i64 noundef %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.dd3b642297c3bff32e13b7f00b408b30.2.llvm.3488692421967456325) #10, !noalias !59 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.3488692421967456325.exit": ; preds = %2 @@ -205,7 +205,7 @@ define hidden { i64, i64 } @"_ZN8indexmap3map4core25IndexMapCore$LT$K$C$V$GT$12g br i1 %29, label %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h421b8e14b9da1a1bE.llvm.3488692421967456325.exit.i.i", label %30, !prof !23 30: ; preds = %.lr.ph.i.i.i - tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.val.i.i.i, i64 noundef %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.dd3b642297c3bff32e13b7f00b408b30.1) #9, !noalias !82 + tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.val.i.i.i, i64 noundef %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.dd3b642297c3bff32e13b7f00b408b30.1) #10, !noalias !82 unreachable "_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h421b8e14b9da1a1bE.llvm.3488692421967456325.exit.i.i": ; preds = %.lr.ph.i.i.i @@ -242,9 +242,10 @@ define hidden noundef i64 @"_ZN8indexmap3map4core25IndexMapCore$LT$K$C$V$GT$4pus %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 %9 = load ptr, ptr %8, align 8, !nonnull !4, !noundef !4 tail call void @llvm.experimental.noalias.scope.decl(metadata !85) - %.val.i = load ptr, ptr %7, align 8, !alias.scope !85, !noalias !88, !nonnull !4, !noundef !4 + %.val.i = load ptr, ptr %7, align 8, !alias.scope !85, !noalias !88 %10 = getelementptr inbounds nuw i8, ptr %0, i64 32 %.val11.i = load i64, ptr %10, align 8, !alias.scope !85, !noalias !88, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.02.05.i.i = and i64 %.val11.i, %1 %11 = getelementptr inbounds i8, ptr %.val.i, i64 %.sroa.02.05.i.i %.sroa.0.0.copyload.i46.i.i = load <16 x i8>, ptr %11, align 1, !noalias !90 @@ -300,8 +301,9 @@ define hidden noundef i64 @"_ZN8indexmap3map4core25IndexMapCore$LT$K$C$V$GT$4pus 38: ; preds = %"_ZN9hashbrown3raw5inner22RawTableInner$LT$A$GT$16find_insert_slot17h40479a7a32c77fd8E.exit.i" %39 = tail call { i64, i64 } @"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$14reserve_rehash17he90108699cdaeac1E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %7, i64 noundef 1, ptr noalias noundef nonnull readonly align 8 %9, i64 noundef %6, i1 noundef zeroext true) - %.val12.i = load ptr, ptr %7, align 8, !alias.scope !85, !noalias !88, !nonnull !4, !noundef !4 + %.val12.i = load ptr, ptr %7, align 8, !alias.scope !85, !noalias !88 %.val13.i = load i64, ptr %10, align 8, !alias.scope !85, !noalias !88, !noundef !4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val12.i) ] %.sroa.02.05.i14.i = and i64 %.val13.i, %1 %40 = getelementptr inbounds i8, ptr %.val12.i, i64 %.sroa.02.05.i14.i %.sroa.0.0.copyload.i46.i15.i = load <16 x i8>, ptr %40, align 1, !noalias !97 @@ -467,7 +469,7 @@ define hidden void @"_ZN8indexmap3map4core3raw64_$LT$impl$u20$indexmap..map..cor br i1 %30, label %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h421b8e14b9da1a1bE.llvm.3488692421967456325.exit.i", label %31, !prof !23 31: ; preds = %.lr.ph.i.i - tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.val.i.i, i64 noundef %8, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.dd3b642297c3bff32e13b7f00b408b30.1) #9, !noalias !134 + tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.val.i.i, i64 noundef %8, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.dd3b642297c3bff32e13b7f00b408b30.1) #10, !noalias !134 unreachable "_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h421b8e14b9da1a1bE.llvm.3488692421967456325.exit.i": ; preds = %.lr.ph.i.i @@ -560,7 +562,7 @@ define hidden noundef align 8 dereferenceable_or_null(8) ptr @"_ZN9hashbrown3raw br i1 %29, label %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h421b8e14b9da1a1bE.llvm.3488692421967456325.exit.i", label %30, !prof !23 30: ; preds = %.lr.ph.i.i - tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.val.i.i, i64 noundef %10, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.dd3b642297c3bff32e13b7f00b408b30.1) #9, !noalias !154 + tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.val.i.i, i64 noundef %10, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.dd3b642297c3bff32e13b7f00b408b30.1) #10, !noalias !154 unreachable "_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h421b8e14b9da1a1bE.llvm.3488692421967456325.exit.i": ; preds = %.lr.ph.i.i @@ -638,7 +640,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$4find1 br i1 %29, label %"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h421b8e14b9da1a1bE.llvm.3488692421967456325.exit", label %30, !prof !23 30: ; preds = %.lr.ph.i - tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.val.i, i64 noundef %10, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.dd3b642297c3bff32e13b7f00b408b30.1) #9, !noalias !168 + tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.val.i, i64 noundef %10, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.dd3b642297c3bff32e13b7f00b408b30.1) #10, !noalias !168 unreachable "_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h421b8e14b9da1a1bE.llvm.3488692421967456325.exit": ; preds = %.lr.ph.i @@ -682,7 +684,7 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3raw5inner21RawTable$LT$T$C$A$GT br i1 %12, label %"_ZN8indexmap3map4core10equivalent28_$u7b$$u7b$closure$u7d$$u7d$17h8c8cd0025e400ed5E.exit", label %13, !prof !23 13: ; preds = %2 - tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.val, i64 noundef %11, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.dd3b642297c3bff32e13b7f00b408b30.1) #9, !noalias !174 + tail call void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef %.val, i64 noundef %11, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.dd3b642297c3bff32e13b7f00b408b30.1) #10, !noalias !174 unreachable "_ZN8indexmap3map4core10equivalent28_$u7b$$u7b$closure$u7d$$u7d$17h8c8cd0025e400ed5E.exit": ; preds = %2 @@ -775,6 +777,9 @@ declare noundef i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ; Function Attrs: nonlazybind uwtable declare hidden void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h9506d8863ec66d86E"(ptr noalias noundef align 8 dereferenceable(16)) unnamed_addr #2 +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #5 + ; Function Attrs: cold noreturn nonlazybind uwtable declare void @_ZN4core9panicking18panic_bounds_check17hd7e618b1b39cc1c3E(i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(24)) unnamed_addr #5 @@ -798,11 +803,12 @@ attributes #1 = { inlinehint mustprogress nofree norecurse nosync nounwind nonla attributes #2 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) 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 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #7 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #8 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #9 = { noreturn } +attributes #5 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #6 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #7 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } +attributes #8 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #9 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #10 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/elfshaker-rs/optimized/9dox7o1ijtul0pputqol6b06j.ll b/bench/elfshaker-rs/optimized/9dox7o1ijtul0pputqol6b06j.ll index 1a721ea2268..77939865498 100644 --- a/bench/elfshaker-rs/optimized/9dox7o1ijtul0pputqol6b06j.ll +++ b/bench/elfshaker-rs/optimized/9dox7o1ijtul0pputqol6b06j.ll @@ -1025,7 +1025,7 @@ define hidden noundef zeroext i1 @_ZN4core4iter6traits8iterator8Iterator5eq_by17 br label %9 9: ; preds = %58, %.lr.ph.i.i.i.i - %10 = phi i8 [ %8, %.lr.ph.i.i.i.i ], [ %59, %58 ] + %10 = phi i8 [ %8, %.lr.ph.i.i.i.i ], [ %59, %44 ] %.sroa.2.0.copyload.i.i.i.i = load i8, ptr %.sroa.2.0..sroa_idx.i.i.i.i, align 1, !noalias !275 %.sroa.49.0.copyload.i.i.i.i = load ptr, ptr %.sroa.49.0..sroa_idx.i.i.i.i, align 8, !noalias !275 %.sroa.510.0.copyload.i.i.i.i = load i64, ptr %.sroa.510.0..sroa_idx.i.i.i.i, align 8, !noalias !275 @@ -1072,10 +1072,10 @@ define hidden noundef zeroext i1 @_ZN4core4iter6traits8iterator8Iterator5eq_by17 26: ; preds = %24 switch i8 %10, label %default.unreachable [ i8 0, label %27 - i8 1, label %31 - i8 2, label %35 - i8 3, label %37 - i8 4, label %41 + i8 1, label %29 + i8 2, label %31 + i8 3, label %33 + i8 4, label %35 i8 5, label %"_ZN4core4iter6traits8iterator8Iterator5eq_by7compare28_$u7b$$u7b$closure$u7d$$u7d$17h903a9f7b0f3ea51dE.exit.i.i.i.i.i.i" ] @@ -1083,70 +1083,56 @@ default.unreachable: ; preds = %26 unreachable 27: ; preds = %26 - %28 = icmp ne ptr %.sroa.49.0.copyload.i.i.i.i, null - call void @llvm.assume(i1 %28) - %29 = icmp ne ptr %.sroa.45.0.copyload.i.i.i.i.i.i, null - call void @llvm.assume(i1 %29) - %30 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hadccd45e93907b8aE"(ptr noalias noundef nonnull readonly align 1 %.sroa.49.0.copyload.i.i.i.i, i64 noundef %.sroa.510.0.copyload.i.i.i.i, ptr noalias noundef nonnull readonly align 1 %.sroa.45.0.copyload.i.i.i.i.i.i, i64 noundef %.sroa.56.0.copyload.i.i.i.i.i.i), !noalias !296 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.49.0.copyload.i.i.i.i) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.45.0.copyload.i.i.i.i.i.i) ] + %28 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hadccd45e93907b8aE"(ptr noalias noundef nonnull readonly align 1 %.sroa.49.0.copyload.i.i.i.i, i64 noundef %.sroa.510.0.copyload.i.i.i.i, ptr noalias noundef nonnull readonly align 1 %.sroa.45.0.copyload.i.i.i.i.i.i, i64 noundef %.sroa.56.0.copyload.i.i.i.i.i.i), !noalias !296 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !290 - br i1 %30, label %58, label %_ZN4core4iter6traits8iterator8Iterator12try_for_each17h5c088b38960a1ccfE.exit.thread.i + br i1 %28, label %58, label %_ZN4core4iter6traits8iterator8Iterator12try_for_each17h5c088b38960a1ccfE.exit.thread.i + +29: ; preds = %26 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.49.0.copyload.i.i.i.i) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.45.0.copyload.i.i.i.i.i.i) ] + %30 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hadccd45e93907b8aE"(ptr noalias noundef nonnull readonly align 1 %.sroa.49.0.copyload.i.i.i.i, i64 noundef %.sroa.510.0.copyload.i.i.i.i, ptr noalias noundef nonnull readonly align 1 %.sroa.45.0.copyload.i.i.i.i.i.i, i64 noundef %.sroa.56.0.copyload.i.i.i.i.i.i), !noalias !296 + br i1 %30, label %37, label %.loopexit.sink.split.i.i.i.i 31: ; preds = %26 - %32 = icmp ne ptr %.sroa.49.0.copyload.i.i.i.i, null - call void @llvm.assume(i1 %32) - %33 = icmp ne ptr %.sroa.45.0.copyload.i.i.i.i.i.i, null - call void @llvm.assume(i1 %33) + %32 = icmp eq i8 %.sroa.411.0.copyload.fr.i.i.i.i.i.i, %.sroa.2.0.copyload.fr.i.i.i.i.i.i + call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !290 + br i1 %32, label %44, label %_ZN4core4iter6traits8iterator8Iterator12try_for_each17h5c088b38960a1ccfE.exit.thread.i + +33: ; preds = %26 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.49.0.copyload.i.i.i.i) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.45.0.copyload.i.i.i.i.i.i) ] %34 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hadccd45e93907b8aE"(ptr noalias noundef nonnull readonly align 1 %.sroa.49.0.copyload.i.i.i.i, i64 noundef %.sroa.510.0.copyload.i.i.i.i, ptr noalias noundef nonnull readonly align 1 %.sroa.45.0.copyload.i.i.i.i.i.i, i64 noundef %.sroa.56.0.copyload.i.i.i.i.i.i), !noalias !296 - br i1 %34, label %45, label %.loopexit.sink.split.i.i.i.i + call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !290 + br i1 %34, label %44, label %_ZN4core4iter6traits8iterator8Iterator12try_for_each17h5c088b38960a1ccfE.exit.thread.i 35: ; preds = %26 - %36 = icmp eq i8 %.sroa.411.0.copyload.fr.i.i.i.i.i.i, %.sroa.2.0.copyload.fr.i.i.i.i.i.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.49.0.copyload.i.i.i.i) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.45.0.copyload.i.i.i.i.i.i) ] + %36 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hadccd45e93907b8aE"(ptr noalias noundef nonnull readonly align 1 %.sroa.49.0.copyload.i.i.i.i, i64 noundef %.sroa.510.0.copyload.i.i.i.i, ptr noalias noundef nonnull readonly align 1 %.sroa.45.0.copyload.i.i.i.i.i.i, i64 noundef %.sroa.56.0.copyload.i.i.i.i.i.i), !noalias !296 + br i1 %36, label %39, label %.loopexit.sink.split.i.i.i.i + +37: ; preds = %29 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.611.0.copyload.i.i.i.i) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.67.0.copyload.i.i.i.i.i.i) ] + %38 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hadccd45e93907b8aE"(ptr noalias noundef nonnull readonly align 1 %.sroa.611.0.copyload.i.i.i.i, i64 noundef %.sroa.712.0.copyload.i.i.i.i, ptr noalias noundef nonnull readonly align 1 %.sroa.67.0.copyload.i.i.i.i.i.i, i64 noundef %.sroa.78.0.copyload.i.i.i.i.i.i), !noalias !296 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !290 - br i1 %36, label %58, label %_ZN4core4iter6traits8iterator8Iterator12try_for_each17h5c088b38960a1ccfE.exit.thread.i - -37: ; preds = %26 - %38 = icmp ne ptr %.sroa.49.0.copyload.i.i.i.i, null - call void @llvm.assume(i1 %38) - %39 = icmp ne ptr %.sroa.45.0.copyload.i.i.i.i.i.i, null - call void @llvm.assume(i1 %39) - %40 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hadccd45e93907b8aE"(ptr noalias noundef nonnull readonly align 1 %.sroa.49.0.copyload.i.i.i.i, i64 noundef %.sroa.510.0.copyload.i.i.i.i, ptr noalias noundef nonnull readonly align 1 %.sroa.45.0.copyload.i.i.i.i.i.i, i64 noundef %.sroa.56.0.copyload.i.i.i.i.i.i), !noalias !296 - call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !290 - br i1 %40, label %58, label %_ZN4core4iter6traits8iterator8Iterator12try_for_each17h5c088b38960a1ccfE.exit.thread.i + br i1 %38, label %58, label %_ZN4core4iter6traits8iterator8Iterator12try_for_each17h5c088b38960a1ccfE.exit.thread.i -41: ; preds = %26 - %42 = icmp ne ptr %.sroa.49.0.copyload.i.i.i.i, null - call void @llvm.assume(i1 %42) - %43 = icmp ne ptr %.sroa.45.0.copyload.i.i.i.i.i.i, null - call void @llvm.assume(i1 %43) - %44 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hadccd45e93907b8aE"(ptr noalias noundef nonnull readonly align 1 %.sroa.49.0.copyload.i.i.i.i, i64 noundef %.sroa.510.0.copyload.i.i.i.i, ptr noalias noundef nonnull readonly align 1 %.sroa.45.0.copyload.i.i.i.i.i.i, i64 noundef %.sroa.56.0.copyload.i.i.i.i.i.i), !noalias !296 - br i1 %44, label %49, label %.loopexit.sink.split.i.i.i.i - -45: ; preds = %31 - %46 = icmp ne ptr %.sroa.611.0.copyload.i.i.i.i, null - call void @llvm.assume(i1 %46) - %47 = icmp ne ptr %.sroa.67.0.copyload.i.i.i.i.i.i, null - call void @llvm.assume(i1 %47) - %48 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hadccd45e93907b8aE"(ptr noalias noundef nonnull readonly align 1 %.sroa.611.0.copyload.i.i.i.i, i64 noundef %.sroa.712.0.copyload.i.i.i.i, ptr noalias noundef nonnull readonly align 1 %.sroa.67.0.copyload.i.i.i.i.i.i, i64 noundef %.sroa.78.0.copyload.i.i.i.i.i.i), !noalias !296 +41: ; preds = %35 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.611.0.copyload.i.i.i.i) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.67.0.copyload.i.i.i.i.i.i) ] + %40 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hadccd45e93907b8aE"(ptr noalias noundef nonnull readonly align 1 %.sroa.611.0.copyload.i.i.i.i, i64 noundef %.sroa.712.0.copyload.i.i.i.i, ptr noalias noundef nonnull readonly align 1 %.sroa.67.0.copyload.i.i.i.i.i.i, i64 noundef %.sroa.78.0.copyload.i.i.i.i.i.i), !noalias !296 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !290 - br i1 %48, label %58, label %_ZN4core4iter6traits8iterator8Iterator12try_for_each17h5c088b38960a1ccfE.exit.thread.i - -49: ; preds = %41 - %50 = icmp ne ptr %.sroa.611.0.copyload.i.i.i.i, null - call void @llvm.assume(i1 %50) - %51 = icmp ne ptr %.sroa.67.0.copyload.i.i.i.i.i.i, null - call void @llvm.assume(i1 %51) - %52 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hadccd45e93907b8aE"(ptr noalias noundef nonnull readonly align 1 %.sroa.611.0.copyload.i.i.i.i, i64 noundef %.sroa.712.0.copyload.i.i.i.i, ptr noalias noundef nonnull readonly align 1 %.sroa.67.0.copyload.i.i.i.i.i.i, i64 noundef %.sroa.78.0.copyload.i.i.i.i.i.i), !noalias !296 - call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !290 - br i1 %52, label %58, label %_ZN4core4iter6traits8iterator8Iterator12try_for_each17h5c088b38960a1ccfE.exit.thread.i + br i1 %40, label %58, label %_ZN4core4iter6traits8iterator8Iterator12try_for_each17h5c088b38960a1ccfE.exit.thread.i 53: ; preds = %22 - %54 = icmp ne ptr %.sroa.49.0.copyload.i.i.i.i, null - call void @llvm.assume(i1 %54) - %55 = icmp ne ptr %.sroa.45.0.copyload.i.i.i.i.i.i, null - call void @llvm.assume(i1 %55) - %56 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hadccd45e93907b8aE"(ptr noalias noundef nonnull readonly align 1 %.sroa.49.0.copyload.i.i.i.i, i64 noundef %.sroa.510.0.copyload.i.i.i.i, ptr noalias noundef nonnull readonly align 1 %.sroa.45.0.copyload.i.i.i.i.i.i, i64 noundef %.sroa.56.0.copyload.i.i.i.i.i.i), !noalias !309 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.49.0.copyload.i.i.i.i) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.45.0.copyload.i.i.i.i.i.i) ] + %42 = call noundef zeroext i1 @"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hadccd45e93907b8aE"(ptr noalias noundef nonnull readonly align 1 %.sroa.49.0.copyload.i.i.i.i, i64 noundef %.sroa.510.0.copyload.i.i.i.i, ptr noalias noundef nonnull readonly align 1 %.sroa.45.0.copyload.i.i.i.i.i.i, i64 noundef %.sroa.56.0.copyload.i.i.i.i.i.i), !noalias !309 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !290 - br i1 %56, label %58, label %_ZN4core4iter6traits8iterator8Iterator12try_for_each17h5c088b38960a1ccfE.exit.thread.i + br i1 %42, label %58, label %_ZN4core4iter6traits8iterator8Iterator12try_for_each17h5c088b38960a1ccfE.exit.thread.i "_ZN4core4iter6traits8iterator8Iterator5eq_by7compare28_$u7b$$u7b$closure$u7d$$u7d$17h903a9f7b0f3ea51dE.exit.thread21.i.i.i.i.i.i": ; preds = %23, %22 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !290 @@ -1157,11 +1143,11 @@ default.unreachable: ; preds = %26 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !290 br i1 %57, label %58, label %_ZN4core4iter6traits8iterator8Iterator12try_for_each17h5c088b38960a1ccfE.exit.thread.i -.loopexit.sink.split.i.i.i.i: ; preds = %41, %31, %24, %12, %9 +.loopexit.sink.split.i.i.i.i: ; preds = %35, %29, %24, %12, %9 call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !290 br label %_ZN4core4iter6traits8iterator8Iterator12try_for_each17h5c088b38960a1ccfE.exit.thread.i -58: ; preds = %"_ZN4core4iter6traits8iterator8Iterator5eq_by7compare28_$u7b$$u7b$closure$u7d$$u7d$17h903a9f7b0f3ea51dE.exit.i.i.i.i.i.i", %"_ZN4core4iter6traits8iterator8Iterator5eq_by7compare28_$u7b$$u7b$closure$u7d$$u7d$17h903a9f7b0f3ea51dE.exit.thread21.i.i.i.i.i.i", %53, %49, %45, %37, %35, %27 +58: ; preds = %"_ZN4core4iter6traits8iterator8Iterator5eq_by7compare28_$u7b$$u7b$closure$u7d$$u7d$17h903a9f7b0f3ea51dE.exit.i.i.i.i.i.i", %"_ZN4core4iter6traits8iterator8Iterator5eq_by7compare28_$u7b$$u7b$closure$u7d$$u7d$17h903a9f7b0f3ea51dE.exit.thread21.i.i.i.i.i.i", %53, %41, %37, %33, %31, %27 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !275 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !275 call void @"_ZN95_$LT$std..path..Components$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h1f83ca05b76f7239E"(ptr noalias noundef nonnull sret([56 x i8]) align 8 captures(none) dereferenceable(56) %4, ptr noalias noundef nonnull align 8 dereferenceable(64) %7) @@ -1169,7 +1155,7 @@ default.unreachable: ; preds = %26 %.not.i.i.i.i = icmp eq i8 %59, 10 br i1 %.not.i.i.i.i, label %.loopexit.i, label %9 -_ZN4core4iter6traits8iterator8Iterator12try_for_each17h5c088b38960a1ccfE.exit.thread.i: ; preds = %"_ZN4core4iter6traits8iterator8Iterator5eq_by7compare28_$u7b$$u7b$closure$u7d$$u7d$17h903a9f7b0f3ea51dE.exit.i.i.i.i.i.i", %53, %49, %45, %37, %35, %27, %.loopexit.sink.split.i.i.i.i +_ZN4core4iter6traits8iterator8Iterator12try_for_each17h5c088b38960a1ccfE.exit.thread.i: ; preds = %"_ZN4core4iter6traits8iterator8Iterator5eq_by7compare28_$u7b$$u7b$closure$u7d$$u7d$17h903a9f7b0f3ea51dE.exit.i.i.i.i.i.i", %53, %41, %37, %33, %31, %27, %.loopexit.sink.split.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !275 br label %_ZN4core4iter6traits8iterator12iter_compare17h071c4afbfcf10df8E.exit @@ -2311,6 +2297,7 @@ _ZN4core5slice4sort6stable9quicksort16stable_partition17hecaeb6ea825e1fa7E.exit: 261: ; preds = %155 %262 = getelementptr inbounds nuw ptr, ptr %.sroa.0.0.ph119, i64 %.sroa.27.2.lcssa.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.0.ph119) ] call void @_ZN4core5slice4sort6stable9quicksort9quicksort17h1e3aa831844e4180E(ptr noalias noundef nonnull align 8 %262, i64 noundef %146, ptr noalias noundef nonnull align 8 %2, i64 noundef %3, i32 noundef %16, ptr noalias noundef nonnull readonly align 8 dereferenceable_or_null(8) %9, ptr noalias noundef nonnull align 1 %6) call void @llvm.lifetime.end.p0(ptr nonnull %9) %263 = icmp ult i64 %.sroa.27.2.lcssa.i, 33 @@ -2585,6 +2572,7 @@ _ZN4core5slice4sort6stable9quicksort16stable_partition17hdb9247a1e0d49afdE.exit: 99: ; preds = %62 %100 = getelementptr inbounds nuw { i32, [1 x i32], { i64, i64 } }, ptr %.sroa.0.0.ph88, i64 %.sroa.11.1.lcssa.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.0.ph88) ] call void @_ZN4core5slice4sort6stable9quicksort9quicksort17h2e7554498940b30aE(ptr noalias noundef nonnull align 8 %100, i64 noundef %54, ptr noalias noundef nonnull align 8 %2, i64 noundef %3, i32 noundef %16, ptr noalias noundef nonnull readonly align 8 dereferenceable_or_null(24) %9, ptr noalias noundef nonnull align 8 dereferenceable(8) %6) call void @llvm.lifetime.end.p0(ptr nonnull %9) %101 = icmp ult i64 %.sroa.11.1.lcssa.i, 33 @@ -2868,6 +2856,7 @@ _ZN4core5slice4sort6stable9quicksort16stable_partition17h2c80d8391352ed83E.exit: 108: ; preds = %69 %109 = getelementptr inbounds nuw { { { { { { i64, ptr, {} }, {} }, i64 } } }, { i64, i64 }, [20 x i8], i32 }, ptr %.sroa.0.0.ph88, i64 %.sroa.11.1.lcssa.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.0.ph88) ] call void @_ZN4core5slice4sort6stable9quicksort9quicksort17h396848ec1b6a061eE(ptr noalias noundef nonnull align 8 %109, i64 noundef %61, ptr noalias noundef nonnull align 8 %2, i64 noundef %3, i32 noundef %18, ptr noalias noundef nonnull readonly align 8 dereferenceable_or_null(64) %9, ptr noalias noundef nonnull align 8 dereferenceable(8) %6) call void @llvm.lifetime.end.p0(ptr nonnull %9) %110 = icmp ult i64 %.sroa.11.1.lcssa.i, 33 @@ -3142,6 +3131,7 @@ _ZN4core5slice4sort6stable9quicksort16stable_partition17hd6283011512e7082E.exit: 99: ; preds = %62 %100 = getelementptr inbounds nuw { i32, [1 x i32], { i64, i64 } }, ptr %.sroa.0.0.ph88, i64 %.sroa.11.1.lcssa.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.0.ph88) ] call void @_ZN4core5slice4sort6stable9quicksort9quicksort17h5eef459956d2a3b6E(ptr noalias noundef nonnull align 8 %100, i64 noundef %54, ptr noalias noundef nonnull align 8 %2, i64 noundef %3, i32 noundef %16, ptr noalias noundef nonnull readonly align 8 dereferenceable_or_null(24) %9, ptr noalias noundef nonnull align 8 dereferenceable(8) %6) call void @llvm.lifetime.end.p0(ptr nonnull %9) %101 = icmp ult i64 %.sroa.11.1.lcssa.i, 33 @@ -3454,6 +3444,7 @@ _ZN4core5slice4sort6stable9quicksort16stable_partition17h7e60dc23c4b1f755E.exit: 125: ; preds = %83 %126 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 } } }, ptr %.sroa.0.0.ph91, i64 %.sroa.11.1.lcssa.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.0.ph91) ] call void @_ZN4core5slice4sort6stable9quicksort9quicksort17h9c399750ff8205b3E(ptr noalias noundef nonnull align 8 %126, i64 noundef %75, ptr noalias noundef nonnull align 8 %2, i64 noundef %3, i32 noundef %20, 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) %127 = icmp ult i64 %.sroa.11.1.lcssa.i, 33 @@ -3849,6 +3840,7 @@ _ZN4core5slice4sort6stable9quicksort16stable_partition17he5eeb1f347a6a0e8E.exit: 195: ; preds = %140 %196 = getelementptr inbounds nuw { { ptr, i64 }, ptr, ptr, i32, [1 x i32] }, ptr %.sroa.0.0.ph87, i64 %.sroa.11.1.lcssa.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.0.ph87) ] call void @_ZN4core5slice4sort6stable9quicksort9quicksort17hfb8fe4f1587c64e8E(ptr noalias noundef nonnull align 8 %196, i64 noundef %132, ptr noalias noundef nonnull align 8 %2, i64 noundef %3, i32 noundef %20, ptr noalias noundef nonnull readonly align 8 dereferenceable_or_null(40) %9, ptr noalias noundef nonnull align 8 dereferenceable(8) %6) call void @llvm.lifetime.end.p0(ptr nonnull %9) %197 = icmp ult i64 %.sroa.11.1.lcssa.i, 33 @@ -4107,9 +4099,9 @@ _ZN4core3ops8function5FnMut8call_mut17hd20f1c9a03c9784fE.exit: ; preds = %"_ZN4c br label %102 102: ; preds = %"_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic28_$u7b$$u7b$closure$u7d$$u7d$17hed13476e14ac41adE.exit.i.i", %.lr.ph37.i.i - %103 = phi ptr [ %131, %.lr.ph37.i.i ], [ %105, %"_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic28_$u7b$$u7b$closure$u7d$$u7d$17hed13476e14ac41adE.exit.i.i" ] - %104 = phi i64 [ %142, %.lr.ph37.i.i ], [ %116, %"_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic28_$u7b$$u7b$closure$u7d$$u7d$17hed13476e14ac41adE.exit.i.i" ] - %105 = phi ptr [ %143, %.lr.ph37.i.i ], [ %117, %"_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic28_$u7b$$u7b$closure$u7d$$u7d$17hed13476e14ac41adE.exit.i.i" ] + %103 = phi ptr [ %131, %.lr.ph42.i.i ], [ %105, %"_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic28_$u7b$$u7b$closure$u7d$$u7d$17hed13476e14ac41adE.exit.i.i" ] + %104 = phi i64 [ %142, %.lr.ph42.i.i ], [ %116, %"_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic28_$u7b$$u7b$closure$u7d$$u7d$17hed13476e14ac41adE.exit.i.i" ] + %105 = phi ptr [ %143, %.lr.ph42.i.i ], [ %117, %"_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic28_$u7b$$u7b$closure$u7d$$u7d$17hed13476e14ac41adE.exit.i.i" ] call void @llvm.experimental.noalias.scope.decl(metadata !839) %106 = invoke noundef range(i8 0, 3) i8 @_ZN4core3cmp21default_chaining_impl17ha02ee5ee4b2fa5b7E(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %105, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %.sroa.0.088) to label %.noexc.i.i unwind label %.loopexit.i.i @@ -4327,9 +4319,9 @@ _ZN4core5slice4sort8unstable9quicksort9partition17h9e110bd7f01a7d58E.exit: ; pre br label %164 164: ; preds = %"_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic28_$u7b$$u7b$closure$u7d$$u7d$17he868dbd9a2db04c4E.exit.i.i", %.lr.ph37.i.i36 - %165 = phi ptr [ %194, %.lr.ph37.i.i36 ], [ %167, %"_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic28_$u7b$$u7b$closure$u7d$$u7d$17he868dbd9a2db04c4E.exit.i.i" ] - %166 = phi i64 [ %206, %.lr.ph37.i.i36 ], [ %179, %"_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic28_$u7b$$u7b$closure$u7d$$u7d$17he868dbd9a2db04c4E.exit.i.i" ] - %167 = phi ptr [ %207, %.lr.ph37.i.i36 ], [ %180, %"_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic28_$u7b$$u7b$closure$u7d$$u7d$17he868dbd9a2db04c4E.exit.i.i" ] + %165 = phi ptr [ %194, %.lr.ph42.i.i36 ], [ %167, %"_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic28_$u7b$$u7b$closure$u7d$$u7d$17he868dbd9a2db04c4E.exit.i.i" ] + %166 = phi i64 [ %206, %.lr.ph42.i.i36 ], [ %179, %"_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic28_$u7b$$u7b$closure$u7d$$u7d$17he868dbd9a2db04c4E.exit.i.i" ] + %167 = phi ptr [ %207, %.lr.ph42.i.i36 ], [ %180, %"_ZN4core5slice4sort8unstable9quicksort34partition_lomuto_branchless_cyclic28_$u7b$$u7b$closure$u7d$$u7d$17he868dbd9a2db04c4E.exit.i.i" ] call void @llvm.experimental.noalias.scope.decl(metadata !908) %168 = invoke noundef range(i8 0, 3) i8 @_ZN4core3cmp21default_chaining_impl17ha02ee5ee4b2fa5b7E(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %.sroa.0.088, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %167) to label %.noexc.i.i39 unwind label %.loopexit.i.i37 diff --git a/bench/faiss/optimized/IVFlib.ll b/bench/faiss/optimized/IVFlib.ll index 23f103dcf83..12df064f4ed 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/folly/optimized/SocketAddress.ll b/bench/folly/optimized/SocketAddress.ll index 5fa4c0d6019..b9e3988b784 100644 --- a/bench/folly/optimized/SocketAddress.ll +++ b/bench/folly/optimized/SocketAddress.ll @@ -395,8 +395,7 @@ define void @_ZN5folly13SocketAddress16setFromLocalPortEt(ptr noundef nonnull al %5 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %3, i64 noundef 6, ptr noundef nonnull @.str.34, i32 noundef %4) #27 %6 = call noundef ptr @_ZN5folly13SocketAddress11getAddrInfoEPKcS2_i(ptr nonnull readnone align 8 poison, ptr noundef null, ptr noundef nonnull %3, i32 noundef 32) call void @llvm.lifetime.end.p0(ptr nonnull %3) - %.not12.i = icmp ne ptr %6, null - call void @llvm.assume(i1 %.not12.i) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %6) ] br label %.lr.ph.i .lr.ph.i: ; preds = %2, %10 @@ -463,8 +462,7 @@ define void @_ZN5folly13SocketAddress16setFromLocalAddrEPK8addrinfo(ptr noundef ; Function Attrs: mustprogress uwtable define void @_ZN5folly13SocketAddress16setFromLocalPortEPKc(ptr noundef nonnull align 8 captures(none) dereferenceable(27) %0, ptr noundef %1) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 { %3 = tail call noundef ptr @_ZN5folly13SocketAddress11getAddrInfoEPKcS2_i(ptr nonnull align 8 poison, ptr noundef null, ptr noundef %1, i32 noundef 32) - %.not12.i = icmp ne ptr %3, null - tail call void @llvm.assume(i1 %.not12.i) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %3) ] br label %.lr.ph.i .lr.ph.i: ; preds = %2, %7 @@ -627,8 +625,7 @@ _ZN12_GLOBAL__N_111HostAndPortC2EPKcb.exit: ; preds = %2, %9, %17, %21 to label %24 unwind label %35 24: ; preds = %_ZN12_GLOBAL__N_111HostAndPortC2EPKcb.exit - %.not12.i = icmp ne ptr %23, null - tail call void @llvm.assume(i1 %.not12.i) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %23) ] br label %.lr.ph.i .lr.ph.i: ; preds = %24, %28 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/25w8hapxpxs3e2f0.ll b/bench/html5ever-rs/optimized/25w8hapxpxs3e2f0.ll index ad0a0976bd8..ee2f671e987 100644 --- a/bench/html5ever-rs/optimized/25w8hapxpxs3e2f0.ll +++ b/bench/html5ever-rs/optimized/25w8hapxpxs3e2f0.ll @@ -94,10 +94,9 @@ define hidden noundef nonnull align 8 ptr @"_ZN3std3sys6common12thread_local10fa ; Function Attrs: nonlazybind uwtable define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList7entries17h4c9f8454ccc349d4E(ptr noalias noundef returned align 8 dereferenceable(16) %0, ptr noundef nonnull %1, ptr noundef readnone captures(address) %2) unnamed_addr #0 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 @@ -116,10 +115,9 @@ define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8buil ; Function Attrs: nonlazybind uwtable define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList7entries17hf0b93997ec53d3e6E(ptr noalias noundef returned align 8 dereferenceable(16) %0, ptr noundef nonnull %1, ptr noundef readnone captures(address) %2) unnamed_addr #0 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/hyper-rs/optimized/4lwa0ukf5hd0n1ju.ll b/bench/hyper-rs/optimized/4lwa0ukf5hd0n1ju.ll index 81feb0e59f1..e2fc20f6f35 100644 --- a/bench/hyper-rs/optimized/4lwa0ukf5hd0n1ju.ll +++ b/bench/hyper-rs/optimized/4lwa0ukf5hd0n1ju.ll @@ -14,27 +14,26 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr169drop_in_place$LT$std..sync..mutex..MutexGuard$LT$tokio..sync..oneshot..Receiver$LT$core..result..Result$LT$hyper..upgrade..Upgraded$C$hyper..error..Error$GT$$GT$$GT$$GT$17h2f6c31385455227aE"(ptr %.0.val, i8 %.8.val) unnamed_addr #0 { - %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$4drop17h16deae5573e5f5f8E.exit" @@ -258,8 +257,7 @@ common.resume: ; preds = %34, %27 br label %"_ZN74_$LT$hyper..upgrade..OnUpgrade$u20$as$u20$core..future..future..Future$GT$4poll28_$u7b$$u7b$closure$u7d$$u7d$17h602be501d17ab61aE.exit" 46: ; preds = %40 - %47 = icmp ne ptr %.sroa.527.0.copyload, null - tail call void @llvm.assume(i1 %47) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.527.0.copyload) ] br label %"_ZN74_$LT$hyper..upgrade..OnUpgrade$u20$as$u20$core..future..future..Future$GT$4poll28_$u7b$$u7b$closure$u7d$$u7d$17h602be501d17ab61aE.exit" 48: ; preds = %36 diff --git a/bench/icu/optimized/fmtable.ll b/bench/icu/optimized/fmtable.ll index d69af77f18f..6bf41032c38 100644 --- a/bench/icu/optimized/fmtable.ll +++ b/bench/icu/optimized/fmtable.ll @@ -710,10 +710,9 @@ define void @_ZN6icu_7711Formattable16setDecimalNumberENS_11StringPieceER10UErro 7: ; preds = %4 tail call void @_ZN6icu_7711Formattable7disposeEv(ptr noundef nonnull align 8 dereferenceable(112) %0) %8 = tail call noundef ptr @_ZN6icu_777UMemorynwEm(i64 noundef 72) #20 - %9 = icmp ne ptr %8, null - tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %8) ] invoke void @_ZN6icu_776number4impl15DecimalQuantityC1Ev(ptr noundef nonnull align 8 dereferenceable(66) %8) - to label %10 unwind label %34 + to label %9 unwind label %34 10: ; preds = %7 %11 = tail call noundef nonnull align 8 dereferenceable(66) ptr @_ZN6icu_776number4impl15DecimalQuantity14setToDecNumberENS_11StringPieceER10UErrorCode(ptr noundef nonnull align 8 dereferenceable(66) %8, ptr %1, i32 %2, ptr noundef nonnull align 4 dereferenceable(4) %3) @@ -726,7 +725,7 @@ define void @_ZN6icu_7711Formattable16setDecimalNumberENS_11StringPieceER10UErro %16 = load ptr, ptr %13, align 8, !tbaa !24 %17 = getelementptr inbounds nuw i8, ptr %16, i64 8 %18 = load ptr, ptr %17, align 8 - tail call void %18(ptr noundef nonnull align 8 dereferenceable(66) %13) #20 + tail call void %17(ptr noundef nonnull align 8 dereferenceable(66) %13) #20 br label %19 19: ; preds = %10, %15 @@ -754,7 +753,7 @@ define void @_ZN6icu_7711Formattable16setDecimalNumberENS_11StringPieceER10UErro 29: ; preds = %19 %30 = getelementptr inbounds nuw i8, ptr %0, i64 40 - store i32 1, ptr %30, align 8, !tbaa !16 + store i32 1, ptr %210, align 8, !tbaa !16 %31 = load ptr, ptr %12, align 8, !tbaa !26 %32 = tail call noundef double @_ZNK6icu_776number4impl15DecimalQuantity8toDoubleEv(ptr noundef nonnull align 8 dereferenceable(66) %31) %33 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -2653,10 +2652,9 @@ define noundef ptr @ufmt_open_77(ptr noundef readonly captures(none) %0) local_u 4: ; preds = %1 %5 = tail call noundef ptr @_ZN6icu_777UMemorynwEm(i64 noundef 112) #20 - %6 = icmp ne ptr %5, null - tail call void @llvm.assume(i1 %6) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %5) ] invoke void @_ZN6icu_7711FormattableC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %5) - to label %9 unwind label %7 + to label %8 unwind label %7 7: ; preds = %4 %8 = landingpad { ptr, i32 } 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/influxdb-rs/optimized/2hwft84a2d6liqrp.ll b/bench/influxdb-rs/optimized/2hwft84a2d6liqrp.ll index 1d72f54d9cf..e29a3cf6613 100644 --- a/bench/influxdb-rs/optimized/2hwft84a2d6liqrp.ll +++ b/bench/influxdb-rs/optimized/2hwft84a2d6liqrp.ll @@ -109,10 +109,8 @@ define hidden void @_ZN3std9panicking3try8do_catch17h3deb9dd2b5bfb964E.llvm.9308 6: ; preds = %2 %7 = extractvalue { ptr, ptr } %3, 0 %8 = extractvalue { ptr, ptr } %3, 1 - %9 = icmp ne ptr %7, null - tail call void @llvm.assume(i1 %9) - %10 = icmp ne ptr %8, 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 %8) ] store ptr %7, ptr %0, align 8 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %8, ptr %11, align 8 diff --git a/bench/influxdb-rs/optimized/2rfehyqstyicagph.ll b/bench/influxdb-rs/optimized/2rfehyqstyicagph.ll index 507af9e096d..fbf34c0ff18 100644 --- a/bench/influxdb-rs/optimized/2rfehyqstyicagph.ll +++ b/bench/influxdb-rs/optimized/2rfehyqstyicagph.ll @@ -3125,27 +3125,27 @@ define hidden void @"_ZN4core3ptr108drop_in_place$LT$core..result..Result$LT$cor } ; Function Attrs: nonlazybind uwtable -define internal fastcc void @"_ZN4core3ptr118drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$core..error..Error$u2b$core..marker..Send$u2b$core..marker..Sync$GT$$GT$17h4279f46a9cb37813E"(ptr %.0.val, ptr readonly captures(address_is_null) %.8.val) unnamed_addr #3 personality ptr @rust_eh_personality { - %1 = icmp ne ptr %.8.val, null - tail call void @llvm.assume(i1 %1) - %2 = load ptr, ptr %.8.val, align 8, !invariant.load !9, !nonnull !9 - invoke void %2(ptr noundef nonnull align 1 %.0.val) - to label %12 unwind label %3 - -3: ; preds = %0 - %4 = landingpad { ptr, i32 } +define internal fastcc void @"_ZN4core3ptr118drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$core..error..Error$u2b$core..marker..Send$u2b$core..marker..Sync$GT$$GT$17h4279f46a9cb37813E"(ptr %.0.val, ptr readonly captures(none) %.8.val) unnamed_addr #3 personality ptr @rust_eh_personality { + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.8.val) ] + %1 = load ptr, ptr %.8.val, align 8, !invariant.load !9, !nonnull !9 + invoke void %1(ptr noundef nonnull align 1 %.0.val) + to label %11 unwind label %2 + +2: ; preds = %0 + %3 = landingpad { ptr, i32 } cleanup - %5 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 - %6 = load i64, ptr %5, align 8, !range !1052, !invariant.load !9 - %7 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 - %8 = load i64, ptr %7, align 8, !range !1053, !invariant.load !9 - %9 = icmp ult i64 %8, -9223372036854775807 - tail call void @llvm.assume(i1 %9) - %10 = icmp eq i64 %6, 0 - br i1 %10, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6f95344b780b3da4E.exit", label %11 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.0.val) ] + %4 = getelementptr inbounds nuw i8, ptr %.8.val, i64 8 + %5 = load i64, ptr %4, align 8, !range !1052, !invariant.load !9 + %6 = getelementptr inbounds nuw i8, ptr %.8.val, i64 16 + %7 = load i64, ptr %6, align 8, !range !1053, !invariant.load !9 + %8 = icmp ult i64 %7, -9223372036854775807 + tail call void @llvm.assume(i1 %8) + %9 = icmp eq i64 %5, 0 + br i1 %9, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6f95344b780b3da4E.exit", label %10 -11: ; preds = %3 - tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, -9223372036854775808) %6, i64 noundef range(i64 1, -9223372036854775807) %8) #26 +11: ; preds = %2 + tail call void @__rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef range(i64 1, -9223372036854775808) %5, i64 noundef range(i64 1, -9223372036854775807) %7) #26 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6f95344b780b3da4E.exit" 12: ; preds = %0 @@ -3165,8 +3165,8 @@ define internal fastcc void @"_ZN4core3ptr118drop_in_place$LT$alloc..boxed..Box$ "_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6f95344b780b3da4E.exit4": ; preds = %12, %19 ret void -"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6f95344b780b3da4E.exit": ; preds = %11, %3 - resume { ptr, i32 } %4 +"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6f95344b780b3da4E.exit": ; preds = %11, %2 + resume { ptr, i32 } %3 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable @@ -3245,6 +3245,7 @@ define internal void @"_ZN4core3ptr40drop_in_place$LT$object_store..Error$GT$17h 24: ; preds = %20 %25 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val19) ] %26 = getelementptr inbounds nuw i8, ptr %.val20, i64 8 %27 = load i64, ptr %26, align 8, !range !1052, !invariant.load !9 %28 = getelementptr inbounds nuw i8, ptr %.val20, i64 16 @@ -3345,6 +3346,7 @@ common.resume: ; preds = %196, %204, %171, %1 67: ; preds = %63 %68 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val17) ] %69 = getelementptr inbounds nuw i8, ptr %.val18, i64 8 %70 = load i64, ptr %69, align 8, !range !1052, !invariant.load !9 %71 = getelementptr inbounds nuw i8, ptr %.val18, i64 16 @@ -3458,6 +3460,7 @@ common.resume: ; preds = %196, %204, %171, %1 119: ; preds = %115 %120 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val13) ] %121 = getelementptr inbounds nuw i8, ptr %.val14, i64 8 %122 = load i64, ptr %121, align 8, !range !1052, !invariant.load !9 %123 = getelementptr inbounds nuw i8, ptr %.val14, i64 16 @@ -3514,6 +3517,7 @@ common.resume: ; preds = %196, %204, %171, %1 146: ; preds = %142 %147 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val9) ] %148 = getelementptr inbounds nuw i8, ptr %.val10, i64 8 %149 = load i64, ptr %148, align 8, !range !1052, !invariant.load !9 %150 = getelementptr inbounds nuw i8, ptr %.val10, i64 16 @@ -3564,6 +3568,7 @@ common.resume: ; preds = %196, %204, %171, %1 171: ; preds = %167 %172 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val5) ] %173 = getelementptr inbounds nuw i8, ptr %.val6, i64 8 %174 = load i64, ptr %173, align 8, !range !1052, !invariant.load !9 %175 = getelementptr inbounds nuw i8, ptr %.val6, i64 16 @@ -3614,6 +3619,7 @@ common.resume: ; preds = %196, %204, %171, %1 196: ; preds = %192 %197 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %198 = getelementptr inbounds nuw i8, ptr %.val2, i64 8 %199 = load i64, ptr %198, align 8, !range !1052, !invariant.load !9 %200 = getelementptr inbounds nuw i8, ptr %.val2, i64 16 @@ -3952,6 +3958,7 @@ define internal void @"_ZN4core3ptr50drop_in_place$LT$parquet..errors..ParquetEr 11: ; preds = %7 %12 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %13 = getelementptr inbounds nuw i8, ptr %.val1, i64 8 %14 = load i64, ptr %13, align 8, !range !1052, !invariant.load !9 %15 = getelementptr inbounds nuw i8, ptr %.val1, i64 16 @@ -4201,6 +4208,7 @@ define hidden void @"_ZN4core3ptr52drop_in_place$LT$arrow_schema..error..ArrowEr 30: ; preds = %26 %31 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %32 = getelementptr inbounds nuw i8, ptr %.val1, i64 8 %33 = load i64, ptr %32, align 8, !range !1052, !invariant.load !9 %34 = getelementptr inbounds nuw i8, ptr %.val1, i64 16 @@ -5008,6 +5016,7 @@ define hidden void @"_ZN4core3ptr62drop_in_place$LT$datafusion_common..error..Da 122: ; preds = %118 %123 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %124 = getelementptr inbounds nuw i8, ptr %.val2, i64 8 %125 = load i64, ptr %124, align 8, !range !1052, !invariant.load !9 %126 = getelementptr inbounds nuw i8, ptr %.val2, i64 16 @@ -5203,6 +5212,7 @@ common.resume: ; preds = %148, %165, %196, %1 202: ; preds = %199 %203 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %201) ], !noalias !1578 tail call void @__rust_dealloc(ptr noundef nonnull %201, i64 noundef 112, i64 noundef 8) #26, !noalias !1578 br label %common.resume @@ -5376,6 +5386,7 @@ define internal fastcc void @"_ZN4core3ptr87drop_in_place$LT$alloc..boxed..Box$L 4: ; preds = %1 %5 = landingpad { ptr, i32 } cleanup + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] tail call void @__rust_dealloc(ptr noundef nonnull %2, i64 noundef 112, i64 noundef 8) #26 resume { ptr, i32 } %5 } diff --git a/bench/ipopt/optimized/SensDenseGenSchurDriver.ll b/bench/ipopt/optimized/SensDenseGenSchurDriver.ll index fa4244635e6..de38db11bbb 100644 --- a/bench/ipopt/optimized/SensDenseGenSchurDriver.ll +++ b/bench/ipopt/optimized/SensDenseGenSchurDriver.ll @@ -984,7 +984,8 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i64 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit66: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit63, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i64 call void @llvm.lifetime.end.p0(ptr nonnull %9) - %86 = call ptr @__dynamic_cast(ptr nonnull %25, ptr nonnull @_ZTIN5Ipopt6VectorE, ptr nonnull @_ZTIN5Ipopt11DenseVectorE, i64 0) #15 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %25) ] + %86 = call ptr @__dynamic_cast(ptr nonnull %25, ptr nonnull @_ZTIN5Ipopt6VectorE, ptr nonnull @_ZTIN5Ipopt11DenseVectorE, i64 0) #16 %87 = getelementptr inbounds nuw i8, ptr %86, i64 208 %88 = load ptr, ptr %87, align 8, !tbaa !48, !noalias !65 %89 = invoke noalias noundef nonnull dereferenceable(248) ptr @_Znwm(i64 noundef 248) #14 @@ -997,7 +998,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit66: ; preds = %_ZN 90: ; preds = %.noexc67 %91 = landingpad { ptr, i32 } cleanup - call void @_ZdlPvm(ptr noundef nonnull %89, i64 noundef 248) #16, !noalias !65 + call void @_ZdlPvm(ptr noundef nonnull %89, i64 noundef 248) #17, !noalias !65 br label %.body.thread 92: ; preds = %33 @@ -2156,6 +2157,9 @@ declare void @llvm.lifetime.start.p0(ptr captures(none)) #11 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(ptr captures(none)) #11 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #12 + ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immarg) #12 @@ -2175,11 +2179,12 @@ attributes #9 = { cold noreturn nounwind memory(inaccessiblemem: write) } attributes #10 = { uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #11 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #12 = { nocallback nofree nounwind willreturn memory(argmem: write) } -attributes #13 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #14 = { builtin allocsize(0) } -attributes #15 = { nounwind } -attributes #16 = { builtin nounwind } -attributes #17 = { noreturn nounwind } +attributes #13 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #14 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #15 = { builtin allocsize(0) } +attributes #16 = { nounwind } +attributes #17 = { builtin nounwind } +attributes #18 = { noreturn nounwind } !llvm.module.flags = !{!0, !1, !2} diff --git a/bench/jemalloc/optimized/tcache.ll b/bench/jemalloc/optimized/tcache.ll index d2a515b4ec7..5c89a986a81 100644 --- a/bench/jemalloc/optimized/tcache.ll +++ b/bench/jemalloc/optimized/tcache.ll @@ -5312,9 +5312,8 @@ declare ptr @llvm.stacksave.p0() #7 ; Function Attrs: nounwind uwtable define internal fastcc void @tcache_bin_flush_edatas_lookup(ptr noundef %0, ptr readonly captures(none) %.8.val, i64 noundef range(i64 0, 4294967296) %1, ptr noundef nonnull captures(none) %2) unnamed_addr #0 { - %4 = icmp ne ptr %0, null - tail call void @llvm.assume(i1 %4) - %5 = getelementptr inbounds nuw i8, ptr %0, i64 504 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] + %4 = getelementptr inbounds nuw i8, ptr %0, i64 504 %.not = icmp eq i64 %1, 0 br i1 %.not, label %emap_edata_lookup_batch.exit, label %.lr.ph @@ -5331,7 +5330,7 @@ define internal fastcc void @tcache_bin_flush_edatas_lookup(ptr noundef %0, ptr %12 = lshr i64 %11, 30 %13 = and i64 %12, 15 %14 = and i64 %11, -1073741824 - %15 = getelementptr inbounds nuw %struct.rtree_ctx_cache_elm_s, ptr %5, i64 %13 + %15 = getelementptr inbounds nuw %struct.rtree_ctx_cache_elm_s, ptr %4, i64 %13 %16 = load i64, ptr %15, align 8, !tbaa !5 %17 = icmp eq i64 %16, %14 br i1 %17, label %18, label %24, !prof !12 @@ -5368,7 +5367,7 @@ define internal fastcc void @tcache_bin_flush_edatas_lookup(ptr noundef %0, ptr br i1 %exitcond, label %50, label %.preheader6, !llvm.loop !14 .preheader6: ; preds = %24, %34 - %indvars.iv = phi i64 [ %indvars.iv.next, %34 ], [ 1, %24 ] + %indvars.iv = phi i64 [ %indvars.iv.next, %33 ], [ 1, %23 ] %35 = getelementptr inbounds nuw %struct.rtree_ctx_cache_elm_s, ptr %6, i64 %indvars.iv %36 = load i64, ptr %35, align 8, !tbaa !5 %37 = icmp eq i64 %36, %14 @@ -5395,11 +5394,11 @@ define internal fastcc void @tcache_bin_flush_edatas_lookup(ptr noundef %0, ptr br label %rtree_leaf_elm_lookup.exit.i 50: ; preds = %34 - %51 = tail call ptr @je_rtree_leaf_elm_lookup_hard(ptr noundef nonnull %0, ptr noundef nonnull @je_arena_emap_global, ptr noundef nonnull %5, i64 noundef %11, i1 noundef zeroext true, i1 noundef zeroext false) #16 + %51 = tail call ptr @je_rtree_leaf_elm_lookup_hard(ptr noundef nonnull %0, ptr noundef nonnull @je_arena_emap_global, ptr noundef nonnull %4, i64 noundef %11, i1 noundef zeroext true, i1 noundef zeroext false) #16 br label %rtree_leaf_elm_lookup.exit.i rtree_leaf_elm_lookup.exit.i: ; preds = %38, %50, %27, %18 - %.0.i.i = phi ptr [ %23, %18 ], [ %33, %27 ], [ %51, %50 ], [ %49, %38 ] + %.0.i.i = phi ptr [ %23, %17 ], [ %33, %26 ], [ %51, %49 ], [ %49, %37 ] %52 = getelementptr inbounds nuw %union.emap_batch_lookup_result_u, ptr %2, i64 %.0.i8 store ptr %.0.i.i, ptr %52, align 8, !tbaa !56 %53 = add nuw nsw i64 %.0.i8, 1 diff --git a/bench/jiff-rs/optimized/bc87zufzpghb0zqt1svthjsy4.ll b/bench/jiff-rs/optimized/bc87zufzpghb0zqt1svthjsy4.ll index ff0b50df50b..75e33ea1849 100644 --- a/bench/jiff-rs/optimized/bc87zufzpghb0zqt1svthjsy4.ll +++ b/bench/jiff-rs/optimized/bc87zufzpghb0zqt1svthjsy4.ll @@ -14172,8 +14172,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 +14244,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..06ec9102fd0 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 @@ -2081,9 +2080,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 +2113,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 +2148,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 090bc1c2a47..48cbc80e99f 100644 --- a/bench/libigl/optimized/point_areas.ll +++ b/bench/libigl/optimized/point_areas.ll @@ -34431,8 +34431,7 @@ define linkonce_odr dso_local ptr @_ZN4CGAL15Triangulation_2INS_5EpickENS_30Tria br i1 %226, label %._crit_edge, label %.lr.ph164, !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.i110 = load ptr, ptr %182, align 8, !tbaa !188, !nonnull !244, !noundef !244 %.sroa.0.0.copyload.i.i = load ptr, ptr %8, align 8, !tbaa !187 %228 = load ptr, ptr %.sroa.0.0.copyload.i.i.i.i110, align 8, !tbaa !179 @@ -34444,9 +34443,9 @@ define linkonce_odr dso_local ptr @_ZN4CGAL15Triangulation_2INS_5EpickENS_30Tria br i1 %or.cond.i.i165, 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, %238 - %233 = phi ptr [ %251, %238 ], [ %231, %._crit_edge ] - %234 = phi ptr [ %248, %238 ], [ %228, %._crit_edge ] - %.sroa.9.2166 = phi ptr [ %.sroa.0.0.copyload.i.i.i116, %238 ], [ %.sroa.0.0.copyload.i.i.i.i110, %._crit_edge ] + %233 = phi ptr [ %251, %237 ], [ %231, %._crit_edge ] + %234 = phi ptr [ %248, %237 ], [ %228, %._crit_edge ] + %.sroa.9.2166 = phi ptr [ %.sroa.0.0.copyload.i.i.i116, %237 ], [ %.sroa.0.0.copyload.i.i.i.i110, %._crit_edge ] %235 = getelementptr inbounds nuw i8, ptr %.sroa.9.2166, i64 16 %236 = load ptr, ptr %235, align 8, !tbaa !179 %237 = icmp eq ptr %236, %.sroa.0.0.copyload.i.i @@ -34472,7 +34471,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, %238, %._crit_edge - %.sroa.9.2.lcssa = phi ptr [ %.sroa.0.0.copyload.i.i.i.i110, %._crit_edge ], [ %.sroa.0.0.copyload.i.i.i116, %238 ], [ %.sroa.9.2166, %_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 [ %.sroa.0.0.copyload.i.i.i.i110, %._crit_edge ], [ %.sroa.0.0.copyload.i.i.i116, %237 ], [ %.sroa.9.2166, %_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) %253 = load ptr, ptr %6, align 8, !tbaa !938 @@ -34497,7 +34496,7 @@ _ZNSt7__cxx1110_List_baseIN4CGAL8internal11CC_iteratorINS1_17Compact_containerIN br i1 %.not8.i.i126, 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.exit130, label %.lr.ph.i.i127 .lr.ph.i.i127: ; preds = %255, %.lr.ph.i.i127 - %.09.i.i128 = phi ptr [ %257, %.lr.ph.i.i127 ], [ %256, %255 ] + %.09.i.i128 = phi ptr [ %257, %.lr.ph.i.i127 ], [ %256, %254 ] %257 = load ptr, ptr %.09.i.i128, align 8, !tbaa !938 call void @_ZdlPvm(ptr noundef nonnull %.09.i.i128, i64 noundef 24) #42 %.not.i.i129 = icmp eq ptr %257, %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 c88e1130fa2..3b2867b75a2 100644 --- a/bench/libzmq/optimized/socket_base.ll +++ b/bench/libzmq/optimized/socket_base.ll @@ -9686,28 +9686,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 @@ -9728,7 +9727,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/meilisearch-rs/optimized/2fpcolt33ttb4v7z.ll b/bench/meilisearch-rs/optimized/2fpcolt33ttb4v7z.ll index 4ed3c5ec443..442990cf285 100644 --- a/bench/meilisearch-rs/optimized/2fpcolt33ttb4v7z.ll +++ b/bench/meilisearch-rs/optimized/2fpcolt33ttb4v7z.ll @@ -3862,9 +3862,11 @@ define void @"_ZN17meilisearch_types5tasks164_$LT$impl$u20$core..convert..From$L define noundef zeroext i1 @"_ZN71_$LT$meilisearch_types..tasks..Status$u20$as$u20$core..fmt..Display$GT$3fmt17h9ab42d0807e7ee1cE"(ptr noalias noundef readonly align 1 captures(none) dereferenceable(1) %0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(64) %1) unnamed_addr #1 { %3 = load i8, ptr %0, align 1, !range !241, !noundef !14 %4 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val8 = load ptr, ptr %4, align 8, !nonnull !14, !noundef !14 + %.val8 = load ptr, ptr %4, align 8 %5 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val9 = load ptr, ptr %5, align 8, !nonnull !14, !noundef !14 + %.val9 = load ptr, ptr %5, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val8) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val9) ] %6 = getelementptr inbounds nuw i8, ptr %.val9, i64 24 %7 = load ptr, ptr %6, align 8, !invariant.load !14, !noalias !14, !nonnull !14 switch i8 %3, label %default.unreachable58 [ @@ -4165,9 +4167,11 @@ define noundef zeroext i1 @"_ZN85_$LT$meilisearch_types..tasks..ParseTaskStatusE %.sroa.48.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 24 store ptr @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..fmt..Display$GT$3fmt17h3dc9dfed4e9792baE", ptr %.sroa.48.0..sroa_idx, align 8 %18 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val = load ptr, ptr %18, align 8, !nonnull !14, !noundef !14 + %.val = load ptr, ptr %18, align 8 %19 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val11 = load ptr, ptr %19, align 8, !nonnull !14, !noundef !14 + %.val11 = load ptr, ptr %19, 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 %4), !noalias !477 store ptr @anon.eb4b09fcd0b9d0b1d99ed199e636ac98.40, ptr %4, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -4239,9 +4243,11 @@ define noundef zeroext i1 @_ZN17meilisearch_types5tasks4Kind20related_to_one_ind define noundef zeroext i1 @"_ZN69_$LT$meilisearch_types..tasks..Kind$u20$as$u20$core..fmt..Display$GT$3fmt17he2e42e90f5239643E"(ptr noalias noundef readonly align 1 captures(none) dereferenceable(1) %0, ptr noalias noundef readonly align 8 captures(none) dereferenceable(64) %1) unnamed_addr #1 { %3 = load i8, ptr %0, align 1, !range !489, !noundef !14 %4 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val20 = load ptr, ptr %4, align 8, !nonnull !14, !noundef !14 + %.val20 = load ptr, ptr %4, align 8 %5 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val21 = load ptr, ptr %5, align 8, !nonnull !14, !noundef !14 + %.val21 = load ptr, ptr %5, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val20) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val21) ] %6 = getelementptr inbounds nuw i8, ptr %.val21, i64 24 %7 = load ptr, ptr %6, align 8, !invariant.load !14, !noalias !14, !nonnull !14 switch i8 %3, label %default.unreachable142 [ @@ -4637,9 +4643,11 @@ define noundef zeroext i1 @"_ZN83_$LT$meilisearch_types..tasks..ParseTaskKindErr %.sroa.48.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 24 store ptr @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..fmt..Display$GT$3fmt17h3dc9dfed4e9792baE", ptr %.sroa.48.0..sroa_idx, align 8 %18 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %.val = load ptr, ptr %18, align 8, !nonnull !14, !noundef !14 + %.val = load ptr, ptr %18, align 8 %19 = getelementptr inbounds nuw i8, ptr %1, i64 40 - %.val11 = load ptr, ptr %19, align 8, !nonnull !14, !noundef !14 + %.val11 = load ptr, ptr %19, 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 %4), !noalias !619 store ptr @anon.eb4b09fcd0b9d0b1d99ed199e636ac98.65, ptr %4, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 diff --git a/bench/memcached/optimized/extstore.ll b/bench/memcached/optimized/extstore.ll index 2bc336c151b..3258c430604 100644 --- a/bench/memcached/optimized/extstore.ll +++ b/bench/memcached/optimized/extstore.ll @@ -566,26 +566,24 @@ define dso_local noundef ptr @extstore_init(ptr noundef captures(address) %0, pt br label %wbuf_new.exit wbuf_new.exit: ; preds = %.lr.ph180, %wbuf_new.exit - %119 = phi ptr [ null, %.lr.ph180 ], [ %129, %wbuf_new.exit ] + %119 = phi ptr [ null, %.lr.ph180 ], [ %127, %wbuf_new.exit ] %120 = phi ptr [ null, %.lr.ph180 ], [ %121, %wbuf_new.exit ] %.2142178 = phi i32 [ 0, %.lr.ph180 ], [ %131, %wbuf_new.exit ] %121 = call noalias dereferenceable_or_null(40) ptr @calloc(i64 noundef 1, i64 noundef 40) #14 - %122 = icmp ne ptr %121, null - call void @llvm.assume(i1 %122) - %123 = call noalias ptr @calloc(i64 noundef range(i64 0, 4294967296) %116, i64 noundef 1) #14 - %124 = getelementptr inbounds nuw i8, ptr %121, i64 8 - store ptr %123, ptr %124, align 8, !tbaa !95 - %125 = icmp ne ptr %123, null - call void @llvm.assume(i1 %125) - %126 = getelementptr inbounds nuw i8, ptr %121, i64 16 - store ptr %123, ptr %126, align 8, !tbaa !97 - %127 = getelementptr inbounds nuw i8, ptr %121, i64 24 - store i32 %115, ptr %127, align 8, !tbaa !98 - %128 = getelementptr inbounds nuw i8, ptr %121, i64 28 - store i32 %115, ptr %128, align 4, !tbaa !99 - %129 = call noalias dereferenceable_or_null(64) ptr @calloc(i64 noundef 1, i64 noundef 64) #14 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %121) ] + %122 = call noalias ptr @calloc(i64 noundef range(i64 0, 4294967296) %116, i64 noundef 1) #14 + %123 = getelementptr inbounds nuw i8, ptr %121, i64 8 + store ptr %122, ptr %123, align 8, !tbaa !95 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %122) ] + %124 = getelementptr inbounds nuw i8, ptr %121, i64 16 + store ptr %122, ptr %124, align 8, !tbaa !97 + %126 = getelementptr inbounds nuw i8, ptr %121, i64 24 + store i32 %115, ptr %126, align 8, !tbaa !98 + %127 = getelementptr inbounds nuw i8, ptr %121, i64 28 + store i32 %115, ptr %127, align 4, !tbaa !99 + %127 = call noalias dereferenceable_or_null(64) ptr @calloc(i64 noundef 1, i64 noundef 64) #14 store ptr %120, ptr %121, align 8, !tbaa !100 - %130 = getelementptr inbounds nuw i8, ptr %129, i64 8 + %130 = getelementptr inbounds nuw i8, ptr %127, i64 8 store ptr %119, ptr %130, align 8, !tbaa !101 %131 = add nuw nsw i32 %.2142178, 1 %exitcond.not = icmp eq i32 %131, %114 @@ -593,38 +591,38 @@ wbuf_new.exit: ; preds = %.lr.ph180, %wbuf_ne ._crit_edge181: ; preds = %wbuf_new.exit store ptr %121, ptr %117, align 8, !tbaa !105 - store ptr %129, ptr %118, align 8, !tbaa !106 + store ptr %127, ptr %118, align 8, !tbaa !106 br label %132 132: ; preds = %._crit_edge181, %._crit_edge177 %133 = call i32 @pthread_mutex_init(ptr noundef nonnull %26, ptr noundef null) #13 %134 = getelementptr inbounds nuw i8, ptr %26, i64 136 + %133 = call i32 @pthread_mutex_init(ptr noundef nonnull %132, ptr noundef null) #13 + %134 = getelementptr inbounds nuw i8, ptr %26, i64 320 %135 = call i32 @pthread_mutex_init(ptr noundef nonnull %134, ptr noundef null) #13 - %136 = getelementptr inbounds nuw i8, ptr %26, i64 320 - %137 = call i32 @pthread_mutex_init(ptr noundef nonnull %136, ptr noundef null) #13 - %138 = getelementptr inbounds nuw i8, ptr %1, i64 28 - %139 = load i32, ptr %138, align 4, !tbaa !107 - %140 = getelementptr inbounds nuw i8, ptr %26, i64 132 - store i32 %139, ptr %140, align 4, !tbaa !108 - %141 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %142 = load i32, ptr %141, align 4, !tbaa !109 - %143 = zext i32 %142 to i64 - %144 = call noalias ptr @calloc(i64 noundef %143, i64 noundef 120) #14 - %145 = getelementptr inbounds nuw i8, ptr %26, i64 64 - store ptr %144, ptr %145, align 8, !tbaa !26 - %.not191 = icmp eq i32 %142, 0 + %136 = getelementptr inbounds nuw i8, ptr %1, i64 28 + %137 = load i32, ptr %136, align 4, !tbaa !107 + %138 = getelementptr inbounds nuw i8, ptr %26, i64 132 + store i32 %137, ptr %138, align 4, !tbaa !108 + %140 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %140 = load i32, ptr %140, align 4, !tbaa !109 + %141 = zext i32 %140 to i64 + %142 = call noalias ptr @calloc(i64 noundef %141, i64 noundef 120) #14 + %143 = getelementptr inbounds nuw i8, ptr %26, i64 64 + store ptr %142, ptr %143, align 8, !tbaa !26 + %.not191 = icmp eq i32 %140, 0 br i1 %.not191, label %._crit_edge187, label %.lr.ph186 .lr.ph186: ; preds = %132, %.lr.ph186 - %indvars.iv202 = phi i64 [ %indvars.iv.next203, %.lr.ph186 ], [ 0, %132 ] - %146 = load ptr, ptr %145, align 8, !tbaa !26 + %indvars.iv202 = phi i64 [ %indvars.iv.next203, %.lr.ph186 ], [ 0, %130 ] + %146 = load ptr, ptr %143, align 8, !tbaa !26 %147 = getelementptr inbounds nuw %struct.store_io_thread, ptr %146, i64 %indvars.iv202 %148 = call i32 @pthread_mutex_init(ptr noundef %147, ptr noundef null) #13 - %149 = load ptr, ptr %145, align 8, !tbaa !26 + %149 = load ptr, ptr %143, align 8, !tbaa !26 %150 = getelementptr inbounds nuw %struct.store_io_thread, ptr %149, i64 %indvars.iv202 %151 = getelementptr inbounds nuw i8, ptr %150, i64 40 %152 = call i32 @pthread_cond_init(ptr noundef nonnull %151, ptr noundef null) #13 - %153 = load ptr, ptr %145, align 8, !tbaa !26 + %153 = load ptr, ptr %143, align 8, !tbaa !26 %154 = getelementptr inbounds nuw %struct.store_io_thread, ptr %153, i64 %indvars.iv202 %155 = getelementptr inbounds nuw i8, ptr %154, i64 104 store ptr %26, ptr %155, align 8, !tbaa !110 @@ -632,13 +630,13 @@ wbuf_new.exit: ; preds = %.lr.ph180, %wbuf_ne %157 = load i64, ptr %4, align 8, !tbaa !111 %158 = call i32 @pthread_setname_np(i64 noundef %157, ptr noundef nonnull @.str.8) #13 %indvars.iv.next203 = add nuw nsw i64 %indvars.iv202, 1 - %159 = load i32, ptr %141, align 4, !tbaa !109 + %159 = load i32, ptr %140, align 4, !tbaa !109 %160 = zext i32 %159 to i64 %161 = icmp samesign ult i64 %indvars.iv.next203, %160 br i1 %161, label %.lr.ph186, label %._crit_edge187, !llvm.loop !112 ._crit_edge187: ; preds = %.lr.ph186, %132 - %.lcssa = phi i32 [ 0, %132 ], [ %159, %.lr.ph186 ] + %.lcssa = phi i32 [ 0, %130 ], [ %159, %.lr.ph186 ] %162 = getelementptr inbounds nuw i8, ptr %26, i64 112 store i32 %.lcssa, ptr %162, align 8, !tbaa !22 %163 = call noalias dereferenceable_or_null(120) ptr @calloc(i64 noundef 1, i64 noundef 120) #14 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/2r9gly04tqoqnem4.ll b/bench/mini-lsm-rs/optimized/2r9gly04tqoqnem4.ll index d0cef49ec00..35391d5b310 100644 --- a/bench/mini-lsm-rs/optimized/2r9gly04tqoqnem4.ll +++ b/bench/mini-lsm-rs/optimized/2r9gly04tqoqnem4.ll @@ -164,11 +164,10 @@ define void @"_ZN16mini_lsm_starter7compact64_$LT$impl$u20$mini_lsm_starter..lsm 27: ; preds = %"_ZN68_$LT$alloc..sync..Arc$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h8686e217696c5b48E.exit" call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !16 - %28 = icmp ne ptr %26, null - tail call void @llvm.assume(i1 %28) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %26) ] store ptr %26, ptr %5, align 8, !noalias !16 invoke void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.dc11edbcffc71d2885bfbd8bf2d0ded7.0.llvm.11765080855088437741, i64 noundef 22, ptr noundef nonnull align 1 %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.dc11edbcffc71d2885bfbd8bf2d0ded7.11.llvm.11765080855088437741, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.dc11edbcffc71d2885bfbd8bf2d0ded7.2.llvm.11765080855088437741) #19 - to label %31 unwind label %29, !noalias !22 + to label %30 unwind label %29, !noalias !22 29: ; preds = %27 %30 = landingpad { ptr, i32 } @@ -248,11 +247,10 @@ define void @"_ZN16mini_lsm_starter7compact64_$LT$impl$u20$mini_lsm_starter..lsm 17: ; preds = %"_ZN68_$LT$alloc..sync..Arc$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h8686e217696c5b48E.exit" call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !33 - %18 = icmp ne ptr %16, null - tail call void @llvm.assume(i1 %18) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %16) ] store ptr %16, ptr %5, align 8, !noalias !33 invoke void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.dc11edbcffc71d2885bfbd8bf2d0ded7.0.llvm.11765080855088437741, i64 noundef 22, ptr noundef nonnull align 1 %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.dc11edbcffc71d2885bfbd8bf2d0ded7.11.llvm.11765080855088437741, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.dc11edbcffc71d2885bfbd8bf2d0ded7.2.llvm.11765080855088437741) #19 - to label %21 unwind label %19, !noalias !39 + to label %20 unwind label %19, !noalias !39 19: ; preds = %17 %20 = landingpad { ptr, i32 } @@ -969,6 +967,7 @@ define void @_ZN16mini_lsm_starter5table10FileObject4read17h31179e23291ff7acE(pt unreachable 19: ; preds = %4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %9) ] %20 = invoke noundef ptr @_ZN3std2os4unix2fs7FileExt13read_exact_at17h94991042782b6ef1E(ptr noalias noundef nonnull readonly align 4 dereferenceable(4) %12, ptr noalias noundef nonnull align 1 %9, i64 noundef %3, i64 noundef %2) to label %21 unwind label %16 diff --git a/bench/mini-lsm-rs/optimized/300n4o8itowzm2cs.ll b/bench/mini-lsm-rs/optimized/300n4o8itowzm2cs.ll index de922db94d4..519eea2d56e 100644 --- a/bench/mini-lsm-rs/optimized/300n4o8itowzm2cs.ll +++ b/bench/mini-lsm-rs/optimized/300n4o8itowzm2cs.ll @@ -190,25 +190,24 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. ; 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_extend17hbc816a84a1178c2eE"(ptr noalias noundef align 8 dereferenceable(24) %0, ptr noundef nonnull %1, ptr noundef %2) unnamed_addr #1 { - %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 !38, !noundef !13 - %10 = load i64, ptr %0, align 8, !alias.scope !38, !noundef !13 - %11 = sub i64 %10, %9 - %12 = icmp ugt i64 %7, %11 - br i1 %12, label %13, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hf6288cbc7034a063E.llvm.16478127874811385373.exit" - -13: ; preds = %3 - tail call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h9b9df28c4d3d1f7aE"(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 !38, !noundef !13 + %9 = load i64, ptr %0, align 8, !alias.scope !38, !noundef !13 + %10 = sub i64 %9, %8 + %11 = icmp ugt i64 %6, %10 + br i1 %11, label %12, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hf6288cbc7034a063E.llvm.16478127874811385373.exit" + +12: ; preds = %3 + tail call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h9b9df28c4d3d1f7aE"(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$7reserve17hf6288cbc7034a063E.llvm.16478127874811385373.exit" -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hf6288cbc7034a063E.llvm.16478127874811385373.exit": ; preds = %3, %13 - %14 = phi i64 [ %9, %3 ], [ %.pre, %13 ] +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hf6288cbc7034a063E.llvm.16478127874811385373.exit": ; preds = %3, %12 + %14 = phi i64 [ %9, %3 ], [ %.pre, %12 ] %15 = getelementptr inbounds nuw i8, ptr %0, i64 8 %16 = load ptr, ptr %15, align 8, !nonnull !13, !noundef !13 %17 = getelementptr inbounds i8, ptr %16, i64 %14 @@ -1524,10 +1523,9 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G ; Function Attrs: nonlazybind uwtable define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList7entries17h971d23bc5774ba21E(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 @@ -1546,10 +1544,9 @@ define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8buil ; Function Attrs: nonlazybind uwtable define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList7entries17hcee3c84a6bfc2786E(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/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 22e565fd74c..61d6ee417ed 100644 --- a/bench/mini-lsm-rs/optimized/pew1bqmcl3zb6gg.ll +++ b/bench/mini-lsm-rs/optimized/pew1bqmcl3zb6gg.ll @@ -735,7 +735,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 @@ -918,7 +919,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 @@ -2209,27 +2211,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 8fd86719685..4c1658b1290 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/ocio/optimized/CTFTransform.ll b/bench/ocio/optimized/CTFTransform.ll index 344fb7d1c64..06f2dc7af29 100644 --- a/bench/ocio/optimized/CTFTransform.ll +++ b/bench/ocio/optimized/CTFTransform.ll @@ -3482,8 +3482,7 @@ _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i: ; preds = %183, % %190 = load i32, ptr getelementptr inbounds nuw (i8, ptr @_ZN19OpenColorIO_v2_5devL28CTF_PROCESS_LIST_VERSION_2_0E, i64 8), align 4, !tbaa !22, !noalias !111 %191 = load ptr, ptr %.sroa.01.015.i, align 8, !tbaa !65, !noalias !136, !nonnull !90, !noundef !90 %192 = call ptr @__dynamic_cast(ptr nonnull %191, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev6OpDataE, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev19FixedFunctionOpDataE, i64 0) #29, !noalias !136 - %.not.not.i20.i.i = icmp ne ptr %192, null - call void @llvm.assume(i1 %.not.not.i20.i.i) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %192) ] %193 = getelementptr inbounds nuw i8, ptr %.sroa.01.015.i, i64 8 %194 = load ptr, ptr %193, align 8, !tbaa !36, !noalias !136 %.not.i.i.i.i21.i.i = icmp eq ptr %194, null @@ -3589,8 +3588,7 @@ _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i29.i.i: ; preds = %226, 234: ; preds = %.noexc79 %235 = load ptr, ptr %.sroa.01.015.i, align 8, !tbaa !65, !noalias !147, !nonnull !90, !noundef !90 %236 = call ptr @__dynamic_cast(ptr nonnull %235, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev6OpDataE, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev14ExponentOpDataE, i64 0) #29, !noalias !147 - %.not.not.i33.i.i = icmp ne ptr %236, null - call void @llvm.assume(i1 %.not.not.i33.i.i) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %236) ] %237 = getelementptr inbounds nuw i8, ptr %.sroa.01.015.i, i64 8 %238 = load ptr, ptr %237, align 8, !tbaa !36, !noalias !147 %.not.i.i.i.i34.i.i = icmp eq ptr %238, null @@ -3677,8 +3675,7 @@ _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i40.i.i: ; preds = %270, call void @llvm.experimental.noalias.scope.decl(metadata !151) %275 = load ptr, ptr %.sroa.01.015.i, align 8, !tbaa !65, !noalias !154, !nonnull !90, !noundef !90 %276 = call ptr @__dynamic_cast(ptr nonnull %275, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev6OpDataE, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev11GammaOpDataE, i64 0) #29, !noalias !154 - %.not.not.i42.i.i = icmp ne ptr %276, null - call void @llvm.assume(i1 %.not.not.i42.i.i) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %276) ] store ptr %276, ptr %4, align 8, !tbaa !155, !alias.scope !151, !noalias !111 %277 = getelementptr inbounds nuw i8, ptr %.sroa.01.015.i, i64 8 %278 = load ptr, ptr %277, align 8, !tbaa !36, !noalias !154 @@ -3940,8 +3937,7 @@ _ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i62.i.i: ; preds = %379, 383: ; preds = %.noexc79 %384 = load ptr, ptr %.sroa.01.015.i, align 8, !tbaa !65, !noalias !181, !nonnull !90, !noundef !90 %385 = call ptr @__dynamic_cast(ptr nonnull %384, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev6OpDataE, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev11Lut3DOpDataE, i64 0) #29, !noalias !181 - %.not.not.i64.i.i = icmp ne ptr %385, null - call void @llvm.assume(i1 %.not.not.i64.i.i) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %385) ] %386 = getelementptr inbounds nuw i8, ptr %.sroa.01.015.i, i64 8 %387 = load ptr, ptr %386, align 8, !tbaa !36, !noalias !181 %.not.i.i.i.i65.i.i = icmp eq ptr %387, null @@ -11497,8 +11493,7 @@ _ZNSt12__shared_ptrIKN19OpenColorIO_v2_5dev12MatrixOpDataELN9__gnu_cxx12_Lock_po call void @llvm.experimental.noalias.scope.decl(metadata !291) %1887 = load ptr, ptr %223, align 8, !tbaa !65, !noalias !291, !nonnull !90, !noundef !90 %1888 = call ptr @__dynamic_cast(ptr nonnull %1887, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev6OpDataE, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev11RangeOpDataE, i64 0) #29, !noalias !291 - %.not.not.i582 = icmp ne ptr %1888, null - call void @llvm.assume(i1 %.not.not.i582) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %1888) ] store ptr %1888, ptr %62, align 8, !tbaa !294, !alias.scope !291 %1889 = getelementptr inbounds nuw i8, ptr %223, i64 8 %1890 = load ptr, ptr %1889, align 8, !tbaa !36, !noalias !291 @@ -12395,8 +12390,7 @@ define internal fastcc noundef i32 @_ZN19OpenColorIO_v2_5dev12_GLOBAL__N_114GetI tail call void @llvm.experimental.noalias.scope.decl(metadata !307) %12 = load ptr, ptr %0, align 8, !tbaa !65, !noalias !307, !nonnull !90, !noundef !90 %13 = tail call ptr @__dynamic_cast(ptr nonnull %12, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev6OpDataE, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev12MatrixOpDataE, i64 0) #29, !noalias !307 - %.not.not.i = icmp ne ptr %13, null - tail call void @llvm.assume(i1 %.not.not.i) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %13) ] store ptr %13, ptr %2, align 8, !tbaa !281, !alias.scope !307 %14 = getelementptr inbounds nuw i8, ptr %2, i64 8 %15 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -12495,8 +12489,7 @@ _ZNSt12__shared_ptrIKN19OpenColorIO_v2_5dev12MatrixOpDataELN9__gnu_cxx12_Lock_po tail call void @llvm.experimental.noalias.scope.decl(metadata !311) %56 = load ptr, ptr %0, align 8, !tbaa !65, !noalias !311, !nonnull !90, !noundef !90 %57 = tail call ptr @__dynamic_cast(ptr nonnull %56, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev6OpDataE, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev11RangeOpDataE, i64 0) #29, !noalias !311 - %.not.not.i25 = icmp ne ptr %57, null - tail call void @llvm.assume(i1 %.not.not.i25) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %57) ] store ptr %57, ptr %3, align 8, !tbaa !294, !alias.scope !311 %58 = getelementptr inbounds nuw i8, ptr %3, i64 8 %59 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -12595,8 +12588,7 @@ _ZNSt12__shared_ptrIKN19OpenColorIO_v2_5dev11RangeOpDataELN9__gnu_cxx12_Lock_pol tail call void @llvm.experimental.noalias.scope.decl(metadata !315) %100 = load ptr, ptr %0, align 8, !tbaa !65, !noalias !315, !nonnull !90, !noundef !90 %101 = tail call ptr @__dynamic_cast(ptr nonnull %100, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev6OpDataE, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev11Lut1DOpDataE, i64 0) #29, !noalias !315 - %.not.not.i32 = icmp ne ptr %101, null - tail call void @llvm.assume(i1 %.not.not.i32) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %101) ] store ptr %101, ptr %4, align 8, !tbaa !267, !alias.scope !315 %102 = getelementptr inbounds nuw i8, ptr %4, i64 8 %103 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -12702,8 +12694,7 @@ _ZNSt12__shared_ptrIKN19OpenColorIO_v2_5dev11Lut1DOpDataELN9__gnu_cxx12_Lock_pol tail call void @llvm.experimental.noalias.scope.decl(metadata !318) %147 = load ptr, ptr %0, align 8, !tbaa !65, !noalias !318, !nonnull !90, !noundef !90 %148 = tail call ptr @__dynamic_cast(ptr nonnull %147, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev6OpDataE, ptr nonnull @_ZTIN19OpenColorIO_v2_5dev11Lut3DOpDataE, i64 0) #29, !noalias !318 - %.not.not.i39 = icmp ne ptr %148, null - tail call void @llvm.assume(i1 %.not.not.i39) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %148) ] store ptr %148, ptr %5, align 8, !tbaa !274, !alias.scope !318 %149 = getelementptr inbounds nuw i8, ptr %5, i64 8 %150 = getelementptr inbounds nuw i8, ptr %0, i64 8 diff --git a/bench/ockam-rs/optimized/1z7cyf6rmx8jvemg.ll b/bench/ockam-rs/optimized/1z7cyf6rmx8jvemg.ll index 745d032e731..6c08d7c598a 100644 --- a/bench/ockam-rs/optimized/1z7cyf6rmx8jvemg.ll +++ b/bench/ockam-rs/optimized/1z7cyf6rmx8jvemg.ll @@ -1529,6 +1529,7 @@ define hidden noundef nonnull ptr @"_ZN5tokio4sync4mpsc4list11Tx$LT$T$GT$10find_ ._crit_edge: ; preds = %44, %2 %.012.lcssa = phi ptr [ %5, %2 ], [ %.0, %44 ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.012.lcssa) ] ret ptr %.012.lcssa 19: ; preds = %14 @@ -1629,6 +1630,7 @@ define hidden noundef nonnull ptr @"_ZN5tokio4sync4mpsc4list11Tx$LT$T$GT$10find_ ._crit_edge: ; preds = %44, %2 %.012.lcssa = phi ptr [ %5, %2 ], [ %.0, %44 ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.012.lcssa) ] ret ptr %.012.lcssa 19: ; preds = %14 @@ -1729,6 +1731,7 @@ define hidden noundef nonnull ptr @"_ZN5tokio4sync4mpsc4list11Tx$LT$T$GT$10find_ ._crit_edge: ; preds = %44, %2 %.012.lcssa = phi ptr [ %5, %2 ], [ %.0, %44 ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.012.lcssa) ] ret ptr %.012.lcssa 19: ; preds = %14 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 a52c74a8a38..108c9992942 100644 --- a/bench/opencv/optimized/ransac_solvers.ll +++ b/bench/opencv/optimized/ransac_solvers.ll @@ -11039,8 +11039,7 @@ _ZNSt6vectorIN2cv3MatESaIS1_EED2Ev.exit427: ; preds = %.thread1298, %_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 c2018b68805..663d0797695 100644 --- a/bench/openssl/optimized/quic_impl.ll +++ b/bench/openssl/optimized/quic_impl.ll @@ -7483,7 +7483,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 @@ -7519,7 +7519,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 @@ -7548,47 +7548,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 @@ -7596,8 +7595,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/pingora-rs/optimized/4rsii32vb3uxsu1nwv70pm7gl.ll b/bench/pingora-rs/optimized/4rsii32vb3uxsu1nwv70pm7gl.ll index c53a17931b9..657f19e0cb7 100644 --- a/bench/pingora-rs/optimized/4rsii32vb3uxsu1nwv70pm7gl.ll +++ b/bench/pingora-rs/optimized/4rsii32vb3uxsu1nwv70pm7gl.ll @@ -32,9 +32,11 @@ _ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit: store ptr %3, ptr %4, align 8 %.sroa.42.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h46f9cd2d8e237319E", ptr %.sroa.42.0..sroa_idx, align 8 - %.val = load ptr, ptr %1, align 8, !nonnull !4, !noundef !4 + %.val = load ptr, ptr %1, align 8 %6 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.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 !5 store ptr @anon.fa6cdb27709eec1d453d91b23a4d5fda.1, ptr %2, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -71,12 +73,11 @@ define void @"_ZN103_$LT$pingora_error..immut_str..ImmutStr$u20$as$u20$core..con %5 = extractvalue { ptr, i64 } %4, 0 %6 = extractvalue { ptr, i64 } %4, 1 call void @llvm.lifetime.end.p0(ptr nonnull %3) - %7 = icmp ne ptr %5, null - tail call void @llvm.assume(i1 %7) - %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %5, ptr %8, align 8 - %9 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %6, ptr %9, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %5) ] + %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %5, ptr %7, align 8 + %8 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i64 %6, ptr %8, align 8 store i64 1, ptr %0, align 8 ret void } diff --git a/bench/pingora-rs/optimized/e93q9y45cqp7emaz0boy5m6s2.ll b/bench/pingora-rs/optimized/e93q9y45cqp7emaz0boy5m6s2.ll index f00f33ec2e6..b355e32e317 100644 --- a/bench/pingora-rs/optimized/e93q9y45cqp7emaz0boy5m6s2.ll +++ b/bench/pingora-rs/optimized/e93q9y45cqp7emaz0boy5m6s2.ll @@ -202,8 +202,9 @@ switch.lookup: ; preds = %10 "_ZN12pingora_http16case_header_name18titled_header_name28_$u7b$$u7b$closure$u7d$$u7d$17h412fc4d1c747f322E.exit.i": ; preds = %switch.lookup, %13 %.sroa.3.0.i.i.in = phi ptr [ %14, %13 ], [ %switch.gep, %switch.lookup ] %.sroa.0.0.i.i.in = phi ptr [ %12, %13 ], [ %switch.gep1, %switch.lookup ] - %.sroa.0.0.i.i = load ptr, ptr %.sroa.0.0.i.i.in, align 8, !nonnull !3, !noundef !3 + %.sroa.0.0.i.i = load ptr, ptr %.sroa.0.0.i.i.in, align 8 %.sroa.3.0.i.i = load i64, ptr %.sroa.3.0.i.i.in, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.0.i.i) ] tail call void @_ZN5bytes5bytes5Bytes15copy_from_slice17h8538a77de2500018E(ptr noalias noundef nonnull sret([32 x i8]) align 8 captures(none) dereferenceable(32) %0, ptr noalias noundef nonnull readonly align 1 %.sroa.0.0.i.i, i64 noundef %.sroa.3.0.i.i), !noalias !17 br label %"_ZN4core6option15Option$LT$T$GT$11map_or_else17h9fa920550db9e6faE.exit" @@ -293,6 +294,9 @@ declare void @"_ZN88_$LT$bytes..bytes..Bytes$u20$as$u20$core..convert..From$LT$a ; Function Attrs: nonlazybind uwtable declare void @_ZN5bytes5bytes5Bytes15copy_from_slice17h8538a77de2500018E(ptr dead_on_unwind noalias noundef writable sret([32 x i8]) align 8 captures(none) dereferenceable(32), ptr noalias noundef nonnull readonly align 1, i64 noundef) unnamed_addr #2 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #7 + ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #7 @@ -303,7 +307,8 @@ attributes #3 = { mustprogress nofree norecurse nosync nounwind nonlazybind will attributes #4 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #5 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #7 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #7 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #8 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } !llvm.module.flags = !{!0, !1} !llvm.ident = !{!2} diff --git a/bench/pola-rs/optimized/0vv5nrmroubc6gns0tdninfa0.ll b/bench/pola-rs/optimized/0vv5nrmroubc6gns0tdninfa0.ll index 5f4b93fd241..8024673f823 100644 --- a/bench/pola-rs/optimized/0vv5nrmroubc6gns0tdninfa0.ll +++ b/bench/pola-rs/optimized/0vv5nrmroubc6gns0tdninfa0.ll @@ -35,10 +35,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 @@ -107,10 +105,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/proxygen/optimized/HeaderTable.ll b/bench/proxygen/optimized/HeaderTable.ll index 79613f8445b..9b494eb0f9e 100644 --- a/bench/proxygen/optimized/HeaderTable.ll +++ b/bench/proxygen/optimized/HeaderTable.ll @@ -418,7 +418,8 @@ if.then28: ; preds = %if.end25 store ptr %header, ptr %ref.tmp.i.i, align 8, !alias.scope !13, !noalias !16 call void @_ZN5folly3f146detail8F14TableINS1_21VectorContainerPolicyIN8proxygen15HPACKHeaderNameENSt7__cxx114listIjSaIjEEEvvvSt17integral_constantIbLb1EEEEE15tryEmplaceValueIS5_JRKSt21piecewise_construct_tSt5tupleIJRKS5_EESI_IJEEEEESt4pairINS1_11F14ItemIterIPNS1_8F14ChunkIjEEEEbERKT_DpOT0_(ptr nonnull sret(%"struct.std::pair.27") align 8 %rv.i.i, ptr noundef nonnull align 8 dereferenceable(24) %names_, ptr noundef nonnull align 8 dereferenceable(8) %header, ptr noundef nonnull align 1 dereferenceable(1) @_ZSt19piecewise_construct, ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp.i.i, ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp2.i.i), !noalias !16 %25 = load ptr, ptr %rv.i.i, align 8, !noalias !16, !nonnull !19, !noundef !19 - %26 = load ptr, ptr %names_, align 8, !noalias !16, !nonnull !19, !noundef !19 + %26 = load ptr, ptr %names_, align 8, !noalias !16 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %26) ] %27 = load i32, ptr %25, align 4, !noalias !16 %idx.ext8.i.i.i = zext i32 %27 to i64 %add.ptr9.i.i.i = getelementptr inbounds nuw %"struct.std::pair.8", ptr %26, i64 %idx.ext8.i.i.i @@ -790,7 +791,8 @@ if.end20.i.i: ; preds = %while.end.i.i if.end: ; preds = %land.rhs.i.i.i.i, %while.body.i.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.i - %22 = load ptr, ptr %names_, align 8, !nonnull !19, !noundef !19 + %22 = load ptr, ptr %names_, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %22) ] %23 = load i32, ptr %arrayidx.i.i.i.i.le, align 4 %idx.ext8.i.i = zext i32 %23 to i64 %add.ptr9.i.i = getelementptr inbounds nuw %"struct.std::pair.8", ptr %22, i64 %idx.ext8.i.i @@ -913,8 +915,8 @@ for.end: ; preds = %for.inc, %for.inc.u %44 = shl nuw i64 %43, 32 br label %return -return: ; preds = %if.end20.i.i, %while.end.i.i, %for.end, %if.then26 - %retval.sroa.0.0.insert.insert = phi i64 [ %44, %for.end ], [ %38, %if.then26 ], [ 0, %while.end.i.i ], [ 0, %if.end20.i.i ] +return: ; preds = %while.end.i.i, %if.end20.i.i, %for.end, %if.then26 + %retval.sroa.0.0.insert.insert = phi i64 [ %44, %for.end ], [ %38, %if.then26 ], [ 0, %if.end20.i.i ], [ 0, %while.end.i.i ] ret i64 %retval.sroa.0.0.insert.insert } @@ -1399,7 +1401,8 @@ while.end.i.i: ; preds = %while.cond.i.i.back if.else.i: ; preds = %land.rhs.i.i.i.i, %while.body.i.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.i - %21 = load ptr, ptr %names_, align 8, !nonnull !19, !noundef !19 + %21 = load ptr, ptr %names_, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %21) ] %22 = load i32, ptr %arrayidx.i.i.i.i.le, align 4 %idx.ext8.i = zext i32 %22 to i64 %add.ptr9.i = getelementptr inbounds nuw %"struct.std::pair.8", ptr %21, i64 %idx.ext8.i @@ -3357,8 +3360,7 @@ for.body: ; preds = %entry, %_ZNSt16allo %i.013 = phi i64 [ %inc, %_ZNSt16allocator_traitsISaISt4pairIKN8proxygen15HPACKHeaderNameENSt7__cxx114listIjSaIjEEEEEE7destroyIS8_EEvRS9_PT_.exit ], [ 0, %entry ] %src.addr.012 = phi ptr [ %incdec.ptr, %_ZNSt16allocator_traitsISaISt4pairIKN8proxygen15HPACKHeaderNameENSt7__cxx114listIjSaIjEEEEEE7destroyIS8_EEvRS9_PT_.exit ], [ %src, %entry ] %dst.addr.011 = phi ptr [ %incdec.ptr4, %_ZNSt16allocator_traitsISaISt4pairIKN8proxygen15HPACKHeaderNameENSt7__cxx114listIjSaIjEEEEEE7destroyIS8_EEvRS9_PT_.exit ], [ %dst, %entry ] - %cmp2 = icmp ne ptr %dst.addr.011, null - tail call void @llvm.assume(i1 %cmp2) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %dst.addr.011) ] %second.i = getelementptr inbounds nuw i8, ptr %src.addr.012, i64 8 store ptr null, ptr %dst.addr.011, align 8 %0 = load ptr, ptr %src.addr.012, align 8 @@ -3784,22 +3786,21 @@ while.body.i: ; preds = %while.cond.i %arrayidx.i.i.i.i = getelementptr inbounds nuw %"union.std::aligned_storage<4, 4>::type", ptr %rawItems_.i.i, i64 %conv9.i %23 = load i32, ptr %arrayidx.i.i.i.i, align 4 %cmp.i34 = icmp eq i32 %23, %conv6 - br i1 %cmp.i34, label %_ZNK5folly3f146detail8F14TableINS1_21VectorContainerPolicyIN8proxygen15HPACKHeaderNameENSt7__cxx114listIjSaIjEEEvvvSt17integral_constantIbLb1EEEEE8findImplINS1_26VectorContainerIndexSearchEEENS1_11F14ItemIterIPNS1_8F14ChunkIjEEEESt4pairImmERKT_NSD_8PrefetchE.exit, label %while.cond.i, !llvm.loop !26 + br i1 %cmp.i34, label %if.then13.i, label %while.cond.i, !llvm.loop !26 -while.end.i: ; preds = %while.cond.i - %add.i = add i64 %add.i24, %index.i.0 - br label %for.cond.i, !llvm.loop !27 - -_ZNK5folly3f146detail8F14TableINS1_21VectorContainerPolicyIN8proxygen15HPACKHeaderNameENSt7__cxx114listIjSaIjEEEvvvSt17integral_constantIbLb1EEEEE8findImplINS1_26VectorContainerIndexSearchEEENS1_11F14ItemIterIPNS1_8F14ChunkIjEEEESt4pairImmERKT_NSD_8PrefetchE.exit: ; preds = %while.body.i +while.end.i: ; preds = %while.body.i %arrayidx.i.i.i.i.le = getelementptr inbounds nuw %"union.std::aligned_storage<4, 4>::type", ptr %rawItems_.i.i, i64 %conv9.i store i32 %1, ptr %arrayidx.i.i.i.i.le, align 4 - %cmp11 = icmp ne ptr %0, null - call void @llvm.assume(i1 %cmp11) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] %arrayidx13 = getelementptr inbounds nuw %"struct.std::pair.8", ptr %0, i64 %shr.i.i.i.i call void @_ZN5folly3f146detail21VectorContainerPolicyIN8proxygen15HPACKHeaderNameENSt7__cxx114listIjSaIjEEEvvvSt17integral_constantIbLb1EEE8transferERSaISt4pairIKS4_S8_EEPSE_SH_m(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef nonnull %arrayidx13, ptr noundef nonnull %arrayidx, i64 noundef 1) br label %if.end -if.end: ; preds = %_ZNK5folly3f146detail8F14TableINS1_21VectorContainerPolicyIN8proxygen15HPACKHeaderNameENSt7__cxx114listIjSaIjEEEvvvSt17integral_constantIbLb1EEEEE8findImplINS1_26VectorContainerIndexSearchEEENS1_11F14ItemIterIPNS1_8F14ChunkIjEEEESt4pairImmERKT_NSD_8PrefetchE.exit, %_ZNSt16allocator_traitsISaISt4pairIKN8proxygen15HPACKHeaderNameENSt7__cxx114listIjSaIjEEEEEE7destroyIS8_EEvRS9_PT_.exit +if.end: ; preds = %while.cond.i + %add.i = add i64 %add.i24, %index.i.0 + br label %for.cond.i, !llvm.loop !27 + +if.end: ; preds = %if.then13.i, %_ZNSt16allocator_traitsISaISt4pairIKN8proxygen15HPACKHeaderNameENSt7__cxx114listIjSaIjEEEEEE7destroyIS8_EEvRS9_PT_.exit ret void } 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/qdrant-rs/optimized/4cyb8cwzfo9kxjxt.ll b/bench/qdrant-rs/optimized/4cyb8cwzfo9kxjxt.ll index 762e1181035..107a357294d 100644 --- a/bench/qdrant-rs/optimized/4cyb8cwzfo9kxjxt.ll +++ b/bench/qdrant-rs/optimized/4cyb8cwzfo9kxjxt.ll @@ -16,8 +16,7 @@ define hidden void @_ZN10serde_json5value8to_value17h4041d4398addf962E(ptr noali %6 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h022b4b45eda90453E"(i64 noundef %5, i1 noundef zeroext false), !noalias !22 %7 = extractvalue { i64, ptr } %6, 0 %8 = extractvalue { i64, ptr } %6, 1 - %9 = icmp ne ptr %8, null - tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %8) ] tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %8, ptr nonnull readonly align 1 %3, i64 %5, i1 false), !noalias !25 store i8 3, ptr %0, align 8, !alias.scope !26, !noalias !27 %.sroa.4.sroa.3.0..sroa.4.0..sroa_idx.sroa_idx.i.i.i.i = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -42,8 +41,7 @@ define hidden void @_ZN10serde_json5value8to_value17h7879e5b1c01ba21cE(ptr noali %7 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h022b4b45eda90453E"(i64 noundef %6, i1 noundef zeroext false), !noalias !41 %8 = extractvalue { i64, ptr } %7, 0 %9 = extractvalue { i64, ptr } %7, 1 - %10 = icmp ne ptr %9, null - tail call void @llvm.assume(i1 %10) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %9) ] tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %9, ptr nonnull readonly align 1 %4, i64 %6, i1 false), !noalias !43 store i8 3, ptr %0, align 8, !alias.scope !44, !noalias !45 %.sroa.4.sroa.3.0..sroa.4.0..sroa_idx.sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -114,8 +112,7 @@ define hidden void @"_ZN5serde3ser5impls55_$LT$impl$u20$serde..ser..Serialize$u2 %4 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h022b4b45eda90453E"(i64 noundef %2, i1 noundef zeroext false), !noalias !90 %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 readonly align 1 %1, i64 %2, i1 false), !noalias !87 store i8 3, ptr %0, align 8, !alias.scope !87, !noalias !92 %.sroa.4.sroa.3.0..sroa.4.0..sroa_idx.sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -147,8 +144,7 @@ define hidden void @"_ZN5serde3ser5impls57_$LT$impl$u20$serde..ser..Serialize$u2 %8 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h022b4b45eda90453E"(i64 noundef %7, i1 noundef zeroext false), !noalias !102 %9 = extractvalue { i64, ptr } %8, 0 %10 = extractvalue { i64, ptr } %8, 1 - %11 = icmp ne ptr %10, null - tail call void @llvm.assume(i1 %11) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %10) ] tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %10, ptr nonnull readonly align 1 %5, i64 %7, i1 false), !noalias !104 store i8 3, ptr %0, align 8, !alias.scope !105, !noalias !106 %.sroa.4.sroa.3.0..sroa.4.0..sroa_idx.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -201,8 +197,7 @@ define hidden void @"_ZN5serde3ser5impls57_$LT$impl$u20$serde..ser..Serialize$u2 %6 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h022b4b45eda90453E"(i64 noundef %5, i1 noundef zeroext false), !noalias !130 %7 = extractvalue { i64, ptr } %6, 0 %8 = extractvalue { i64, ptr } %6, 1 - %9 = icmp ne ptr %8, null - tail call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %8) ] tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %8, ptr nonnull readonly align 1 %3, i64 %5, i1 false), !noalias !133 store i8 3, ptr %0, align 8, !alias.scope !133, !noalias !134 %.sroa.4.sroa.3.0..sroa.4.0..sroa_idx.sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -236,8 +231,7 @@ define hidden void @"_ZN5serde3ser5impls57_$LT$impl$u20$serde..ser..Serialize$u2 %7 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h022b4b45eda90453E"(i64 noundef %6, i1 noundef zeroext false), !noalias !151 %8 = extractvalue { i64, ptr } %7, 0 %9 = extractvalue { i64, ptr } %7, 1 - %10 = icmp ne ptr %9, null - tail call void @llvm.assume(i1 %10) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %9) ] tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %9, ptr nonnull readonly align 1 %4, i64 %6, i1 false), !noalias !154 store i8 3, ptr %0, align 8, !alias.scope !155, !noalias !156 %.sroa.4.sroa.3.0..sroa.4.0..sroa_idx.sroa_idx.i.i.i = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -270,8 +264,7 @@ define hidden void @"_ZN5serde3ser5impls73_$LT$impl$u20$serde..ser..Serialize$u2 %7 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h022b4b45eda90453E"(i64 noundef %6, i1 noundef zeroext false), !noalias !163 %8 = extractvalue { i64, ptr } %7, 0 %9 = extractvalue { i64, ptr } %7, 1 - %10 = icmp ne ptr %9, null - tail call void @llvm.assume(i1 %10) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %9) ] tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %9, ptr nonnull readonly align 1 %4, i64 %6, i1 false), !noalias !160 store i8 3, ptr %0, align 8, !alias.scope !160, !noalias !165 %.sroa.4.sroa.3.0..sroa.4.0..sroa_idx.sroa_idx.i = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -301,8 +294,7 @@ define hidden void @"_ZN77_$LT$serde_json..value..ser..Serializer$u20$as$u20$ser %4 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h022b4b45eda90453E"(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 i8 3, ptr %0, align 8 %.sroa.4.sroa.3.0..sroa.4.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 diff --git a/bench/quantlib/optimized/gaussian1dmodel.ll b/bench/quantlib/optimized/gaussian1dmodel.ll index a781b79162c..ec686d46222 100644 --- a/bench/quantlib/optimized/gaussian1dmodel.ll +++ b/bench/quantlib/optimized/gaussian1dmodel.ll @@ -4483,7 +4483,8 @@ 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) ] %.pre = load double, ptr %12, align 8, !tbaa !176 br label %invoke.cont73 @@ -4661,7 +4662,7 @@ 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 %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 @@ -4672,6 +4673,7 @@ if.end.thread: ; preds = %if.else %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,7 +4748,7 @@ 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 %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 @@ -4754,6 +4756,7 @@ invoke.cont167: ; preds = %if.else %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 12706d78d29..d6de2d01dcb 100644 --- a/bench/quantlib/optimized/gaussian1dnonstandardswaptionengine.ll +++ b/bench/quantlib/optimized/gaussian1dnonstandardswaptionengine.ll @@ -3847,7 +3847,7 @@ lpad377: ; preds = %invoke.cont384 invoke.cont384: ; preds = %invoke.cont371, %invoke.cont402 %i375.01760 = phi i64 [ %add399, %invoke.cont402 ], [ 0, %invoke.cont371 ] %price.11759 = 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 %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 @@ -3857,6 +3857,7 @@ invoke.cont384: ; preds = %invoke.cont371, %in %158 = load ptr, ptr %b_.i, align 8, !tbaa !69 %add.ptr.i435 = getelementptr inbounds nuw double, ptr %158, i64 %i375.01760 %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.01760 @@ -3913,7 +3914,7 @@ 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 %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 @@ -3926,6 +3927,7 @@ invoke.cont443: ; preds = %if.else440 %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 @@ -3949,6 +3951,7 @@ invoke.cont482: ; preds = %if.else440 %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,7 +4330,7 @@ lpad626: ; preds = %invoke.cont633 invoke.cont633: ; preds = %invoke.cont620, %invoke.cont651 %i624.01768 = phi i64 [ %add648, %invoke.cont651 ], [ 0, %invoke.cont620 ] %price522.11767 = 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 %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 @@ -4337,6 +4340,7 @@ invoke.cont633: ; preds = %invoke.cont620, %in %261 = load ptr, ptr %b_.i558, align 8, !tbaa !69 %add.ptr.i559 = getelementptr inbounds nuw double, ptr %261, i64 %i624.01768 %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.01768 @@ -4393,7 +4397,7 @@ 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 %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 @@ -4406,6 +4410,7 @@ invoke.cont695: ; preds = %if.else692 %286 = load ptr, ptr %b_.i581, align 8, !tbaa !69 %add.ptr.i583 = getelementptr inbounds nuw double, ptr %286, i64 %.lcssa1547 %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 %.lcssa1547 @@ -4429,6 +4434,7 @@ invoke.cont734: ; preds = %if.else692 %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/quiche-rs/optimized/918pywf5kjejgzslmxsek0i51.ll b/bench/quiche-rs/optimized/918pywf5kjejgzslmxsek0i51.ll index 3358054ef6f..42e69a66ffb 100644 --- a/bench/quiche-rs/optimized/918pywf5kjejgzslmxsek0i51.ll +++ b/bench/quiche-rs/optimized/918pywf5kjejgzslmxsek0i51.ll @@ -535,10 +535,9 @@ define hidden noundef zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent$ %4 = tail call { ptr, i64 } @"_ZN5alloc5slice98_$LT$impl$u20$core..borrow..Borrow$LT$$u5b$T$u5d$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A$GT$$GT$6borrow17h54171a51b0b2f7cdE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) %5 = extractvalue { ptr, i64 } %4, 0 %6 = extractvalue { ptr, i64 } %4, 1 - %7 = icmp ne ptr %5, null - tail call void @llvm.assume(i1 %7) - %8 = tail call noundef zeroext i1 @"_ZN4core5slice3cmp81_$LT$impl$u20$core..cmp..PartialEq$LT$$u5b$U$u5d$$GT$$u20$for$u20$$u5b$T$u5d$$GT$2eq17h0232a3dda14b5cb7E"(ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 1 %5, i64 noundef %6) - ret i1 %8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %5) ] + %7 = tail call noundef zeroext i1 @"_ZN4core5slice3cmp81_$LT$impl$u20$core..cmp..PartialEq$LT$$u5b$U$u5d$$GT$$u20$for$u20$$u5b$T$u5d$$GT$2eq17h0232a3dda14b5cb7E"(ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 1 %5, i64 noundef %6) + ret i1 %7 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable @@ -927,6 +926,7 @@ define hidden void @_ZN5alloc3str17join_generic_copy17h0d8ff8e881057f72E(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 !87 %.not89 = icmp ugt i64 %.val102, %129 br i1 %.not89, label %130, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h2ccda8f819825e8aE.exit148", !prof !42 @@ -1614,11 +1614,12 @@ define hidden { i64, i64 } @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6ins %5 = getelementptr inbounds nuw i8, ptr %0, i64 32 %6 = call noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h72245255f1e140ebE(ptr noalias noundef nonnull readonly align 1 %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %4) call void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hdc9af3a1cce6dd05E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef 1, ptr noalias noundef nonnull readonly align 1 %5), !noalias !152 - %.val.i = load ptr, ptr %0, align 8, !alias.scope !155, !noalias !157, !nonnull !12, !noundef !12 + %.val.i = load ptr, ptr %0, align 8, !alias.scope !155, !noalias !157 %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val6.i = load i64, ptr %7, align 8, !alias.scope !155, !noalias !157, !noundef !12 %8 = lshr i64 %6, 57 %9 = trunc nuw nsw i64 %8 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.01.0.vec.insert.i.i.i.i = insertelement <16 x i8> poison, i8 %9, i64 0 %.sroa.01.15.vec.insert.i.i.i.i = shufflevector <16 x i8> %.sroa.01.0.vec.insert.i.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer br label %10 @@ -1752,11 +1753,12 @@ define hidden void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17hb9 %7 = getelementptr inbounds nuw i8, ptr %1, i64 32 %8 = call noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h72245255f1e140ebE(ptr noalias noundef nonnull readonly align 1 %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %6) call void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h78b339df64e0cd09E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %1, i64 noundef 1, ptr noalias noundef nonnull readonly align 1 %7), !noalias !169 - %.val.i = load ptr, ptr %1, align 8, !alias.scope !172, !noalias !174, !nonnull !12, !noundef !12 + %.val.i = load ptr, ptr %1, align 8, !alias.scope !172, !noalias !174 %9 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.val6.i = load i64, ptr %9, align 8, !alias.scope !172, !noalias !174, !noundef !12 %10 = lshr i64 %8, 57 %11 = trunc nuw nsw i64 %10 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.01.0.vec.insert.i.i.i.i = insertelement <16 x i8> poison, i8 %11, i64 0 %.sroa.01.15.vec.insert.i.i.i.i = shufflevector <16 x i8> %.sroa.01.0.vec.insert.i.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer br label %12 @@ -1897,11 +1899,12 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G %4 = getelementptr inbounds nuw i8, ptr %0, i64 32 %5 = call noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h72245255f1e140ebE(ptr noalias noundef nonnull readonly align 1 %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %3) call void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h54da508ea21dc7c8E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef 1, ptr noalias noundef nonnull readonly align 1 %4), !noalias !189 - %.val.i = load ptr, ptr %0, align 8, !alias.scope !192, !noalias !194, !nonnull !12, !noundef !12 + %.val.i = load ptr, ptr %0, align 8, !alias.scope !192, !noalias !194 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val6.i = load i64, ptr %6, align 8, !alias.scope !192, !noalias !194, !noundef !12 %7 = lshr i64 %5, 57 %8 = trunc nuw nsw i64 %7 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.01.0.vec.insert.i.i.i.i = insertelement <16 x i8> poison, i8 %8, i64 0 %.sroa.01.15.vec.insert.i.i.i.i = shufflevector <16 x i8> %.sroa.01.0.vec.insert.i.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer br label %9 diff --git a/bench/quinn-rs/optimized/0x4duqd2ka75dnynyn9eu6svo.ll b/bench/quinn-rs/optimized/0x4duqd2ka75dnynyn9eu6svo.ll index 00bf338af1e..cbf879217ed 100644 --- a/bench/quinn-rs/optimized/0x4duqd2ka75dnynyn9eu6svo.ll +++ b/bench/quinn-rs/optimized/0x4duqd2ka75dnynyn9eu6svo.ll @@ -82,27 +82,26 @@ define internal noundef zeroext i1 @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt.. ; Function Attrs: nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr83drop_in_place$LT$std..sync..poison..mutex..MutexGuard$LT$std..time..Instant$GT$$GT$17h12b4994302c9f4e3E"(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 %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i, label %4 - -4: ; preds = %0 - %5 = load atomic i64, ptr @_ZN3std9panicking11panic_count18GLOBAL_PANIC_COUNT17hbe50f93f4fcd319cE monotonic, align 8 - %6 = and i64 %5, 9223372036854775807 - %7 = icmp eq i64 %6, 0 - br i1 %7, label %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i, label %8, !prof !6 - -8: ; preds = %4 - %9 = tail call noundef zeroext i1 @_ZN3std9panicking11panic_count17is_zero_slow_path17h1c1768a2b70327b8E() - br i1 %9, label %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.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 %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i, label %3 + +3: ; preds = %0 + %4 = load atomic i64, ptr @_ZN3std9panicking11panic_count18GLOBAL_PANIC_COUNT17hbe50f93f4fcd319cE monotonic, align 8 + %5 = and i64 %4, 9223372036854775807 + %6 = icmp eq i64 %5, 0 + br i1 %6, label %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i, label %7, !prof !6 + +7: ; preds = %3 + %8 = tail call noundef zeroext i1 @_ZN3std9panicking11panic_count17is_zero_slow_path17h1c1768a2b70327b8E() + br i1 %8, label %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i, label %9 + +9: ; preds = %7 + store atomic i8 1, ptr %1 monotonic, align 1 br label %_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i -_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.exit.i: ; preds = %10, %8, %4, %0 +_ZN3std4sync6poison4Flag4done17h5bd12da882ef54a3E.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 %"_ZN87_$LT$std..sync..poison..mutex..MutexGuard$LT$T$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h2554e0ea41194172E.exit", !prof !7 diff --git a/bench/quinn-rs/optimized/4qf6j99489y125gs242873d2k.ll b/bench/quinn-rs/optimized/4qf6j99489y125gs242873d2k.ll index bc9b2a7c4d8..b9fc24f3330 100644 --- a/bench/quinn-rs/optimized/4qf6j99489y125gs242873d2k.ll +++ b/bench/quinn-rs/optimized/4qf6j99489y125gs242873d2k.ll @@ -566,16 +566,15 @@ define internal fastcc void @"_ZN4core3ptr100drop_in_place$LT$core..option..Opti 3: ; preds = %0 %4 = icmp eq i64 %.0.val, 0 - %5 = icmp ne ptr %.8.val, null - tail call void @llvm.assume(i1 %5) - br i1 %4, label %6, label %9 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.8.val) ] + br i1 %4, label %5, label %8 6: ; preds = %3 invoke void @"_ZN4core3ptr65drop_in_place$LT$quinn_proto..connection..streams..recv..Recv$GT$17hdefbe03c1fb8c58bE"(ptr noalias noundef nonnull align 8 dereferenceable(136) %.8.val) to label %"_ZN4core3ptr72drop_in_place$LT$quinn_proto..connection..streams..state..StreamRecv$GT$17h7119ff472c27c373E.exit" unwind label %7 common.resume.i: ; preds = %10, %7 - %common.resume.op.i = phi { ptr, i32 } [ %8, %7 ], [ %11, %10 ] + %common.resume.op.i = phi { ptr, i32 } [ %8, %6 ], [ %11, %9 ] tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.8.val, i64 noundef 136, i64 noundef 8) #27 resume { ptr, i32 } %common.resume.op.i @@ -2354,11 +2353,12 @@ define hidden { i64, i64 } @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6ins tail call void @llvm.experimental.noalias.scope.decl(metadata !226) tail call void @llvm.experimental.noalias.scope.decl(metadata !229) tail call void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17he9ac5ba01a303ff3E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef 1, ptr noalias noundef nonnull readonly align 1 %4), !noalias !229 - %.val.i = load ptr, ptr %0, align 8, !alias.scope !226, !noalias !231, !nonnull !7, !noundef !7 + %.val.i = load ptr, ptr %0, align 8, !alias.scope !226, !noalias !231 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val6.i = load i64, ptr %6, align 8, !alias.scope !226, !noalias !231, !noundef !7 %7 = lshr i64 %5, 57 %8 = trunc nuw nsw i64 %7 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.01.0.vec.insert.i.i.i.i = insertelement <16 x i8> poison, i8 %8, i64 0 %.sroa.01.15.vec.insert.i.i.i.i = shufflevector <16 x i8> %.sroa.01.0.vec.insert.i.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer %9 = getelementptr inbounds nuw i8, ptr %1, i64 20 @@ -2506,11 +2506,12 @@ define hidden { i64, i64 } @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6ins tail call void @llvm.experimental.noalias.scope.decl(metadata !256) tail call void @llvm.experimental.noalias.scope.decl(metadata !259) tail call void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h412fbc608600f8bdE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef 1, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %4), !noalias !259 - %.val.i = load ptr, ptr %0, align 8, !alias.scope !256, !noalias !261, !nonnull !7, !noundef !7 + %.val.i = load ptr, ptr %0, align 8, !alias.scope !256, !noalias !261 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val6.i = load i64, ptr %6, align 8, !alias.scope !256, !noalias !261, !noundef !7 %7 = lshr i64 %5, 57 %8 = trunc nuw nsw i64 %7 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.01.0.vec.insert.i.i.i.i = insertelement <16 x i8> poison, i8 %8, i64 0 %.sroa.01.15.vec.insert.i.i.i.i = shufflevector <16 x i8> %.sroa.01.0.vec.insert.i.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer %9 = load i16, ptr %1, align 4, !range !82, !alias.scope !259, !noalias !263 @@ -2761,11 +2762,12 @@ define hidden { i64, i64 } @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6ins %4 = getelementptr inbounds nuw i8, ptr %0, i64 32 %5 = tail call noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h640a391948f7fc06E(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %4, ptr noalias noundef nonnull readonly align 1 dereferenceable(16) %1) tail call void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17ha2f90c03b0d3b7d0E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef 1, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %4), !noalias !282 - %.val.i = load ptr, ptr %0, align 8, !alias.scope !285, !noalias !287, !nonnull !7, !noundef !7 + %.val.i = load ptr, ptr %0, align 8, !alias.scope !285, !noalias !287 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val6.i = load i64, ptr %6, align 8, !alias.scope !285, !noalias !287, !noundef !7 %7 = lshr i64 %5, 57 %8 = trunc nuw nsw i64 %7 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.01.0.vec.insert.i.i.i.i = insertelement <16 x i8> poison, i8 %8, i64 0 %.sroa.01.15.vec.insert.i.i.i.i = shufflevector <16 x i8> %.sroa.01.0.vec.insert.i.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer br label %9 @@ -2905,11 +2907,12 @@ define hidden { i64, i64 } @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6ins tail call void @llvm.experimental.noalias.scope.decl(metadata !299) tail call void @llvm.experimental.noalias.scope.decl(metadata !302) tail call void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h4c4caf2dc466c0dcE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef 1, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %5), !noalias !302 - %.val.i = load ptr, ptr %0, align 8, !alias.scope !299, !noalias !304, !nonnull !7, !noundef !7 + %.val.i = load ptr, ptr %0, align 8, !alias.scope !299, !noalias !304 %7 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val6.i = load i64, ptr %7, align 8, !alias.scope !299, !noalias !304, !noundef !7 %8 = lshr i64 %6, 57 %9 = trunc nuw nsw i64 %8 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.01.0.vec.insert.i.i.i.i = insertelement <16 x i8> poison, i8 %9, i64 0 %.sroa.01.15.vec.insert.i.i.i.i = shufflevector <16 x i8> %.sroa.01.0.vec.insert.i.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer %10 = getelementptr inbounds nuw i8, ptr %1, i64 20 @@ -3061,11 +3064,12 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G %4 = getelementptr inbounds nuw i8, ptr %0, i64 32 %5 = call noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h2ca142b8e5aa8772E(ptr noalias noundef nonnull readonly align 1 %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %3) call void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h6fdb31328720d276E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef 1, ptr noalias noundef nonnull readonly align 1 %4), !noalias !330 - %.val.i = load ptr, ptr %0, align 8, !alias.scope !333, !noalias !335, !nonnull !7, !noundef !7 + %.val.i = load ptr, ptr %0, align 8, !alias.scope !333, !noalias !335 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val6.i = load i64, ptr %6, align 8, !alias.scope !333, !noalias !335, !noundef !7 %7 = lshr i64 %5, 57 %8 = trunc nuw nsw i64 %7 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.01.0.vec.insert.i.i.i.i = insertelement <16 x i8> poison, i8 %8, i64 0 %.sroa.01.15.vec.insert.i.i.i.i = shufflevector <16 x i8> %.sroa.01.0.vec.insert.i.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer br label %9 @@ -3196,11 +3200,12 @@ define hidden { i64, ptr } @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6ins to label %.noexc unwind label %75 .noexc: ; preds = %7 - %.val.i = load ptr, ptr %0, align 8, !alias.scope !347, !noalias !352, !nonnull !7, !noundef !7 + %.val.i = load ptr, ptr %0, align 8, !alias.scope !347, !noalias !352 %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val6.i = load i64, ptr %8, align 8, !alias.scope !347, !noalias !352, !noundef !7 %9 = lshr i64 %6, 57 %10 = trunc nuw nsw i64 %9 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.01.0.vec.insert.i.i.i.i = insertelement <16 x i8> poison, i8 %10, i64 0 %.sroa.01.15.vec.insert.i.i.i.i = shufflevector <16 x i8> %.sroa.01.0.vec.insert.i.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer %.val.i.i.i.i = load i64, ptr %4, align 8, !alias.scope !350, !noalias !354 @@ -3349,11 +3354,12 @@ define hidden { i64, i64 } @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6ins %4 = getelementptr inbounds nuw i8, ptr %0, i64 32 %5 = tail call noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h2c3c6638e6de8360E(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %4, ptr noalias noundef nonnull readonly align 4 dereferenceable(52) %1) tail call void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h34dabea5a4d72e8aE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef 1, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %4), !noalias !368 - %.val.i = load ptr, ptr %0, align 8, !alias.scope !371, !noalias !373, !nonnull !7, !noundef !7 + %.val.i = load ptr, ptr %0, align 8, !alias.scope !371, !noalias !373 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val6.i = load i64, ptr %6, align 8, !alias.scope !371, !noalias !373, !noundef !7 %7 = lshr i64 %5, 57 %8 = trunc nuw nsw i64 %7 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.01.0.vec.insert.i.i.i.i = insertelement <16 x i8> poison, i8 %8, i64 0 %.sroa.01.15.vec.insert.i.i.i.i = shufflevector <16 x i8> %.sroa.01.0.vec.insert.i.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer br label %9 @@ -3492,11 +3498,12 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G %4 = getelementptr inbounds nuw i8, ptr %0, i64 32 %5 = call noundef i64 @_ZN4core4hash11BuildHasher8hash_one17hb328dfa7186d5664E(ptr noalias noundef nonnull readonly align 1 %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %3) call void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h652e759969202cc9E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef 1, ptr noalias noundef nonnull readonly align 1 %4), !noalias !385 - %.val.i = load ptr, ptr %0, align 8, !alias.scope !388, !noalias !390, !nonnull !7, !noundef !7 + %.val.i = load ptr, ptr %0, align 8, !alias.scope !388, !noalias !390 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val6.i = load i64, ptr %6, align 8, !alias.scope !388, !noalias !390, !noundef !7 %7 = lshr i64 %5, 57 %8 = trunc nuw nsw i64 %7 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.01.0.vec.insert.i.i.i.i = insertelement <16 x i8> poison, i8 %8, i64 0 %.sroa.01.15.vec.insert.i.i.i.i = shufflevector <16 x i8> %.sroa.01.0.vec.insert.i.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer br label %9 @@ -3620,11 +3627,12 @@ define hidden void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17hd8 %6 = getelementptr inbounds nuw i8, ptr %1, i64 32 %7 = call noundef i64 @_ZN4core4hash11BuildHasher8hash_one17hf89995a6b01bbe12E(ptr noalias noundef nonnull readonly align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %5) call void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hd27805a98580d7e6E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %1, i64 noundef 1, ptr noalias noundef nonnull readonly align 1 %6), !noalias !399 - %.val.i = load ptr, ptr %1, align 8, !alias.scope !402, !noalias !404, !nonnull !7, !noundef !7 + %.val.i = load ptr, ptr %1, align 8, !alias.scope !402, !noalias !404 %8 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.val6.i = load i64, ptr %8, align 8, !alias.scope !402, !noalias !404, !noundef !7 %9 = lshr i64 %7, 57 %10 = trunc nuw nsw i64 %9 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.01.0.vec.insert.i.i.i.i = insertelement <16 x i8> poison, i8 %10, i64 0 %.sroa.01.15.vec.insert.i.i.i.i = shufflevector <16 x i8> %.sroa.01.0.vec.insert.i.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer br label %11 @@ -3768,11 +3776,12 @@ define hidden { i64, ptr } @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6ins to label %.noexc unwind label %77 .noexc: ; preds = %8 - %.val.i = load ptr, ptr %0, align 8, !alias.scope !416, !noalias !421, !nonnull !7, !noundef !7 + %.val.i = load ptr, ptr %0, align 8, !alias.scope !416, !noalias !421 %9 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val6.i = load i64, ptr %9, align 8, !alias.scope !416, !noalias !421, !noundef !7 %10 = lshr i64 %7, 57 %11 = trunc nuw nsw i64 %10 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.01.0.vec.insert.i.i.i.i = insertelement <16 x i8> poison, i8 %11, i64 0 %.sroa.01.15.vec.insert.i.i.i.i = shufflevector <16 x i8> %.sroa.01.0.vec.insert.i.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer %.val.i.i.i.i = load i64, ptr %5, align 8, !alias.scope !419, !noalias !423 @@ -3927,11 +3936,12 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G %4 = getelementptr inbounds nuw i8, ptr %0, i64 32 %5 = call noundef i64 @_ZN4core4hash11BuildHasher8hash_one17hf89995a6b01bbe12E(ptr noalias noundef nonnull readonly align 1 %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %3) call void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hcd662504ee3d3cbbE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef 1, ptr noalias noundef nonnull readonly align 1 %4), !noalias !438 - %.val.i = load ptr, ptr %0, align 8, !alias.scope !441, !noalias !443, !nonnull !7, !noundef !7 + %.val.i = load ptr, ptr %0, align 8, !alias.scope !441, !noalias !443 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val6.i = load i64, ptr %6, align 8, !alias.scope !441, !noalias !443, !noundef !7 %7 = lshr i64 %5, 57 %8 = trunc nuw nsw i64 %7 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.01.0.vec.insert.i.i.i.i = insertelement <16 x i8> poison, i8 %8, i64 0 %.sroa.01.15.vec.insert.i.i.i.i = shufflevector <16 x i8> %.sroa.01.0.vec.insert.i.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer br label %9 diff --git a/bench/quinn-rs/optimized/94z0rmq3mlh67s9f6xgkqgoqb.ll b/bench/quinn-rs/optimized/94z0rmq3mlh67s9f6xgkqgoqb.ll index 44c22b01271..a1f50f13524 100644 --- a/bench/quinn-rs/optimized/94z0rmq3mlh67s9f6xgkqgoqb.ll +++ b/bench/quinn-rs/optimized/94z0rmq3mlh67s9f6xgkqgoqb.ll @@ -380,8 +380,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) diff --git a/bench/quinn-rs/optimized/eayza7vkb46gzjwgeak3s8z5x.ll b/bench/quinn-rs/optimized/eayza7vkb46gzjwgeak3s8z5x.ll index 98fc624b4d8..07a9715832c 100644 --- a/bench/quinn-rs/optimized/eayza7vkb46gzjwgeak3s8z5x.ll +++ b/bench/quinn-rs/optimized/eayza7vkb46gzjwgeak3s8z5x.ll @@ -498,8 +498,9 @@ _ZN4core5alloc6layout6Layout6repeat17hfd062edb70f5ec8fE.exit.i: ; preds = %2 br i1 %11, label %"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$14current_memory17h49bcf4666f3a5672E.exit.i", label %12 12: ; preds = %_ZN4core5alloc6layout6Layout6repeat17hfd062edb70f5ec8fE.exit.i - %.val39.i = load ptr, ptr %10, align 8, !alias.scope !29, !nonnull !3, !noundef !3 + %.val39.i = load ptr, ptr %10, align 8, !alias.scope !29 %13 = mul nuw nsw i64 %5, 40 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val39.i) ] store ptr %.val39.i, ptr %3, align 8, !alias.scope !32, !noalias !29 %.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 !32, !noalias !29 @@ -557,8 +558,9 @@ _ZN4core5alloc6layout6Layout6repeat17hfd062edb70f5ec8fE.exit.i: ; preds = %2 br i1 %11, label %"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$14current_memory17h49bcf4666f3a5672E.exit.i", label %12 12: ; preds = %_ZN4core5alloc6layout6Layout6repeat17hfd062edb70f5ec8fE.exit.i - %.val39.i = load ptr, ptr %10, align 8, !alias.scope !36, !nonnull !3, !noundef !3 + %.val39.i = load ptr, ptr %10, align 8, !alias.scope !36 %13 = mul nuw nsw i64 %5, 376 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val39.i) ] store ptr %.val39.i, ptr %3, align 8, !alias.scope !39, !noalias !36 %.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 !39, !noalias !36 @@ -613,8 +615,9 @@ define hidden void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$10deallocate17h38546 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) #20 br label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit" @@ -700,10 +703,9 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$16shrink_unc 8: ; preds = %4 %9 = mul nuw i64 %.val, %3 - %10 = icmp ne ptr %.val24, null - tail call void @llvm.assume(i1 %10) - %11 = icmp eq i64 %1, 0 - br i1 %11, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h142e5a9580be609aE.exit" + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val24) ] + %10 = icmp eq i64 %1, 0 + br i1 %10, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h142e5a9580be609aE.exit" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hbe0bed701c47e163E.exit": ; preds = %8 tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val24, i64 noundef %9, i64 noundef range(i64 1, -9223372036854775807) %2) #20 @@ -725,8 +727,8 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$16shrink_unc br label %18 18: ; preds = %4, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h142e5a9580be609aE.exit", %17 - %.sroa.4.0 = phi i64 [ undef, %17 ], [ %13, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h142e5a9580be609aE.exit" ], [ undef, %4 ] - %.sroa.03.0 = phi i64 [ -9223372036854775807, %17 ], [ %2, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h142e5a9580be609aE.exit" ], [ -9223372036854775807, %4 ] + %.sroa.4.0 = phi i64 [ undef, %16 ], [ %13, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h142e5a9580be609aE.exit" ], [ undef, %4 ] + %.sroa.03.0 = phi i64 [ -9223372036854775807, %16 ], [ %2, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h142e5a9580be609aE.exit" ], [ -9223372036854775807, %4 ] %19 = insertvalue { i64, i64 } poison, i64 %.sroa.03.0, 0 %20 = insertvalue { i64, i64 } %19, i64 %.sroa.4.0, 1 ret { i64, i64 } %20 @@ -775,8 +777,9 @@ _ZN4core5alloc6layout6Layout6repeat17hfd062edb70f5ec8fE.exit.i: ; preds = %12 br i1 %29, label %"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$14current_memory17h49bcf4666f3a5672E.exit.i", label %30 30: ; preds = %_ZN4core5alloc6layout6Layout6repeat17hfd062edb70f5ec8fE.exit.i - %.val39.i = load ptr, ptr %28, align 8, !alias.scope !42, !nonnull !3, !noundef !3 + %.val39.i = load ptr, ptr %28, align 8, !alias.scope !42 %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 !45, !noalias !42 %.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 !45, !noalias !42 diff --git a/bench/raft-rs/optimized/47x49b2y4duzhm1v2f6oqasii.ll b/bench/raft-rs/optimized/47x49b2y4duzhm1v2f6oqasii.ll index 4b99c005325..c7a192e8755 100644 --- a/bench/raft-rs/optimized/47x49b2y4duzhm1v2f6oqasii.ll +++ b/bench/raft-rs/optimized/47x49b2y4duzhm1v2f6oqasii.ll @@ -112,10 +112,9 @@ define hidden noundef zeroext i1 @"_ZN52_$LT$Q$u20$as$u20$hashbrown..Equivalent$ %4 = tail call { ptr, i64 } @"_ZN5alloc5slice98_$LT$impl$u20$core..borrow..Borrow$LT$$u5b$T$u5d$$GT$$u20$for$u20$alloc..vec..Vec$LT$T$C$A$GT$$GT$6borrow17hb2be72ac14a7d521E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) %5 = extractvalue { ptr, i64 } %4, 0 %6 = extractvalue { ptr, i64 } %4, 1 - %7 = icmp ne ptr %5, null - tail call void @llvm.assume(i1 %7) - %8 = tail call noundef zeroext i1 @"_ZN4core5slice3cmp81_$LT$impl$u20$core..cmp..PartialEq$LT$$u5b$U$u5d$$GT$$u20$for$u20$$u5b$T$u5d$$GT$2eq17hf4c9e1e0248b6055E"(ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 1 %5, i64 noundef %6) - ret i1 %8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %5) ] + %7 = tail call noundef zeroext i1 @"_ZN4core5slice3cmp81_$LT$impl$u20$core..cmp..PartialEq$LT$$u5b$U$u5d$$GT$$u20$for$u20$$u5b$T$u5d$$GT$2eq17hf4c9e1e0248b6055E"(ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1, ptr noalias noundef nonnull readonly align 1 %5, i64 noundef %6) + ret i1 %7 } ; Function Attrs: nonlazybind uwtable @@ -689,11 +688,12 @@ define hidden void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h10 to label %.noexc unwind label %.loopexit.split-lp .noexc: ; preds = %8 - %.val.i = load ptr, ptr %1, align 8, !alias.scope !66, !noalias !69, !nonnull !7, !noundef !7 + %.val.i = load ptr, ptr %1, align 8, !alias.scope !66, !noalias !69 %9 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.val6.i = load i64, ptr %9, align 8, !alias.scope !66, !noalias !69, !noundef !7 %10 = lshr i64 %7, 57 %11 = trunc nuw nsw i64 %10 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.01.0.vec.insert.i.i.i.i = insertelement <16 x i8> poison, i8 %11, i64 0 %.sroa.01.15.vec.insert.i.i.i.i = shufflevector <16 x i8> %.sroa.01.0.vec.insert.i.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer br label %12 @@ -861,11 +861,12 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G %4 = getelementptr inbounds nuw i8, ptr %0, i64 32 %5 = call noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h3025a8cc7a934c15E(ptr noalias noundef nonnull readonly align 1 %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %3) call void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17he0225500986838c9E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef 1, ptr noalias noundef nonnull readonly align 1 %4), !noalias !81 - %.val.i = load ptr, ptr %0, align 8, !alias.scope !84, !noalias !86, !nonnull !7, !noundef !7 + %.val.i = load ptr, ptr %0, align 8, !alias.scope !84, !noalias !86 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val6.i = load i64, ptr %6, align 8, !alias.scope !84, !noalias !86, !noundef !7 %7 = lshr i64 %5, 57 %8 = trunc nuw nsw i64 %7 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.01.0.vec.insert.i.i.i.i = insertelement <16 x i8> poison, i8 %8, i64 0 %.sroa.01.15.vec.insert.i.i.i.i = shufflevector <16 x i8> %.sroa.01.0.vec.insert.i.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer br label %9 @@ -996,11 +997,12 @@ define hidden void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17hfe to label %.noexc unwind label %72 .noexc: ; preds = %8 - %.val.i = load ptr, ptr %1, align 8, !alias.scope !98, !noalias !103, !nonnull !7, !noundef !7 + %.val.i = load ptr, ptr %1, align 8, !alias.scope !98, !noalias !103 %9 = getelementptr inbounds nuw i8, ptr %1, i64 8 %.val6.i = load i64, ptr %9, align 8, !alias.scope !98, !noalias !103, !noundef !7 %10 = lshr i64 %7, 57 %11 = trunc nuw nsw i64 %10 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.01.0.vec.insert.i.i.i.i = insertelement <16 x i8> poison, i8 %11, i64 0 %.sroa.01.15.vec.insert.i.i.i.i = shufflevector <16 x i8> %.sroa.01.0.vec.insert.i.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer %.val.i.i.i.i = load i64, ptr %5, align 8, !alias.scope !101, !noalias !105 diff --git a/bench/rand-rs/optimized/1l07c6ml3r7a5z09.ll b/bench/rand-rs/optimized/1l07c6ml3r7a5z09.ll index 913d35ef7f2..afcde59c543 100644 --- a/bench/rand-rs/optimized/1l07c6ml3r7a5z09.ll +++ b/bench/rand-rs/optimized/1l07c6ml3r7a5z09.ll @@ -5,19 +5,17 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write, inaccessiblemem: write) uwtable define hidden void @"_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$3new17h7ebdd95848b74027E"(ptr noalias noundef writeonly sret({ { ptr, ptr }, { ptr, ptr }, i64, i64, i64 }) align 8 captures(none) dereferenceable(56) initializes((0, 56)) %0, ptr noundef nonnull %1, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4) unnamed_addr #0 personality ptr @rust_eh_personality { - %6 = icmp ne ptr %2, null - tail call void @llvm.assume(i1 %6) - %7 = ptrtoint ptr %2 to i64 - %8 = ptrtoint ptr %1 to i64 - %9 = sub nuw i64 %7, %8 - %10 = lshr exact i64 %9, 3 - %11 = icmp ne ptr %4, null - tail call void @llvm.assume(i1 %11) - %12 = ptrtoint ptr %4 to i64 - %13 = ptrtoint ptr %3 to i64 - %14 = sub nuw i64 %12, %13 - %15 = lshr exact i64 %14, 2 - %.0.sroa.speculated.i = tail call noundef i64 @llvm.umin.i64(i64 %10, i64 %15) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] + %6 = ptrtoint ptr %2 to i64 + %7 = ptrtoint ptr %1 to i64 + %8 = sub nuw i64 %6, %7 + %9 = lshr exact i64 %8, 3 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %4) ] + %10 = ptrtoint ptr %4 to i64 + %11 = ptrtoint ptr %3 to i64 + %12 = sub nuw i64 %10, %11 + %13 = lshr exact i64 %12, 2 + %.0.sroa.speculated.i = tail call noundef i64 @llvm.umin.i64(i64 %9, i64 %13) store ptr %1, ptr %0, align 8 %16 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %2, ptr %16, align 8 @@ -30,25 +28,23 @@ define hidden void @"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$ %20 = getelementptr inbounds nuw i8, ptr %0, i64 40 store i64 %.0.sroa.speculated.i, ptr %20, align 8 %21 = getelementptr inbounds nuw i8, ptr %0, i64 48 - store i64 %10, ptr %21, align 8 + store i64 %11, ptr %21, align 8 ret void } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write, inaccessiblemem: write) uwtable define hidden void @"_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$3new17hfb51a901d2c7ce4dE"(ptr noalias noundef writeonly sret({ { ptr, ptr }, { ptr, ptr }, i64, i64, i64 }) align 8 captures(none) dereferenceable(56) initializes((0, 56)) %0, ptr noundef nonnull %1, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4) unnamed_addr #0 personality ptr @rust_eh_personality { - %6 = icmp ne ptr %2, null - tail call void @llvm.assume(i1 %6) - %7 = ptrtoint ptr %2 to i64 - %8 = ptrtoint ptr %1 to i64 - %9 = sub nuw i64 %7, %8 - %10 = lshr exact i64 %9, 2 - %11 = icmp ne ptr %4, null - tail call void @llvm.assume(i1 %11) - %12 = ptrtoint ptr %4 to i64 - %13 = ptrtoint ptr %3 to i64 - %14 = sub nuw i64 %12, %13 - %15 = lshr exact i64 %14, 3 - %.0.sroa.speculated.i = tail call noundef i64 @llvm.umin.i64(i64 %10, i64 %15) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] + %6 = ptrtoint ptr %2 to i64 + %7 = ptrtoint ptr %1 to i64 + %8 = sub nuw i64 %6, %7 + %9 = lshr exact i64 %8, 2 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %4) ] + %10 = ptrtoint ptr %4 to i64 + %11 = ptrtoint ptr %3 to i64 + %12 = sub nuw i64 %10, %11 + %13 = lshr exact i64 %12, 3 + %.0.sroa.speculated.i = tail call noundef i64 @llvm.umin.i64(i64 %9, i64 %13) store ptr %1, ptr %0, align 8 %16 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %2, ptr %16, align 8 @@ -61,7 +57,7 @@ define hidden void @"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$ %20 = getelementptr inbounds nuw i8, ptr %0, i64 40 store i64 %.0.sroa.speculated.i, ptr %20, align 8 %21 = getelementptr inbounds nuw i8, ptr %0, i64 48 - store i64 %10, ptr %21, align 8 + store i64 %11, ptr %21, align 8 ret void } @@ -146,10 +142,8 @@ define hidden void @_ZN3std9panicking3try8do_catch17ha011cd346e9a9ea0E.llvm.5094 6: ; preds = %2 %7 = extractvalue { ptr, ptr } %3, 0 %8 = extractvalue { ptr, ptr } %3, 1 - %9 = icmp ne ptr %7, null - tail call void @llvm.assume(i1 %9) - %10 = icmp ne ptr %8, 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 %8) ] store ptr %7, ptr %0, align 8 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %8, ptr %11, align 8 diff --git a/bench/re2/optimized/regexp.ll b/bench/re2/optimized/regexp.ll index 48d03dad9da..13c91c1ac29 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/33whcn8n29l9c6ys.ll b/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll index eccbc7aa8ab..b3db8ec33aa 100644 --- a/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll +++ b/bench/regex-rs/optimized/33whcn8n29l9c6ys.ll @@ -733,6 +733,7 @@ define hidden void @_ZN5alloc3str17join_generic_copy17hbe8d5069f3b9ae10E(ptr noa 96: ; preds = %.lr.ph311 %97 = sub nuw i64 %.sroa.27.0310, %4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.016.0309) ] call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %.sroa.016.0309, ptr nonnull readonly align 1 %3, i64 %4, i1 false), !alias.scope !116, !noalias !120 %.not.i168 = icmp ugt i64 %.val3.i158, %97 br i1 %.not.i168, label %.invoke, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17he39ac50599e88614E.exit173" @@ -1826,8 +1827,8 @@ _ZN14regex_automata3dfa7onepass3DFA20set_pattern_epsilons17hd7653d042860e1b5E.ex .lr.ph498: ; preds = %.loopexit364 %148 = getelementptr inbounds nuw i8, ptr %1, i64 408 - %149 = getelementptr inbounds nuw i8, ptr %1, i64 440 - %150 = getelementptr inbounds nuw i8, ptr %1, i64 432 + %149 = getelementptr inbounds nuw i8, ptr %1, i64 432 + %150 = getelementptr inbounds nuw i8, ptr %1, i64 440 %151 = getelementptr inbounds nuw i8, ptr %1, i64 792 %152 = getelementptr inbounds nuw i8, ptr %1, i64 520 %153 = getelementptr inbounds nuw i8, ptr %1, i64 464 @@ -1875,7 +1876,7 @@ _ZN14regex_automata3nfa8thompson3nfa3NFA8patterns17h040d108c81c2c8eeE.exit: ; pr %174 = getelementptr inbounds i32, ptr %173, i64 %170 %175 = load i32, ptr %174, align 4, !noalias !271, !noundef !4 %176 = zext i32 %175 to i64 - %.val211 = load i64, ptr %149, align 8, !noundef !4 + %.val211 = load i64, ptr %150, align 8, !noundef !4 %177 = icmp ugt i64 %.val211, %176 br i1 %177, label %178, label %.invoke753, !prof !29 @@ -1884,7 +1885,7 @@ _ZN14regex_automata3nfa8thompson3nfa3NFA8patterns17h040d108c81c2c8eeE.exit: ; pr to label %345 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp 178: ; preds = %168 - %.val = load ptr, ptr %150, align 8, !nonnull !4, !noundef !4 + %.val = load ptr, ptr %149, align 8, !nonnull !4, !noundef !4 %179 = getelementptr inbounds nuw i32, ptr %.val, i64 %176 %180 = load i32, ptr %179, align 4, !noundef !4 store i8 0, ptr %151, align 8 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/ring-rs/optimized/1y6av6yno9dk5en7.ll b/bench/ring-rs/optimized/1y6av6yno9dk5en7.ll index e5e3c79a1ca..5494a643970 100644 --- a/bench/ring-rs/optimized/1y6av6yno9dk5en7.ll +++ b/bench/ring-rs/optimized/1y6av6yno9dk5en7.ll @@ -2278,11 +2278,10 @@ define noundef i8 @_ZN4ring10arithmetic8constant11parse_digit17hd846fe16e04af1c1 ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write, inaccessiblemem: write) uwtable define hidden void @"_ZN4ring8polyfill14array_flat_map36ArrayFlatMap$LT$I$C$Item$C$F$C$_$GT$3new17h6ceb1bf0790386f3E"(ptr noalias noundef writeonly sret({ i64, [10 x i64] }) align 8 captures(none) dereferenceable(88) initializes((0, 8), (32, 40), (64, 88)) %0, ptr noundef nonnull %1, ptr noundef %2) unnamed_addr #11 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 + 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 store i64 0, ptr %0, align 8 %.sroa.02.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 32 store i64 0, ptr %.sroa.02.sroa.5.0..sroa_idx, align 8 @@ -2291,7 +2290,7 @@ define hidden void @"_ZN4ring8polyfill14array_flat_map36ArrayFlatMap$LT$I$C$Item %.sroa.02.sroa.8.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 72 store ptr %2, ptr %.sroa.02.sroa.8.0..sroa_idx, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 80 - store i64 %7, ptr %.sroa.4.0..sroa_idx, align 8 + store i64 %6, ptr %.sroa.4.0..sroa_idx, align 8 ret void } diff --git a/bench/ring-rs/optimized/2y22w349mvmovez2.ll b/bench/ring-rs/optimized/2y22w349mvmovez2.ll index 6dcb8bf8466..2bcf5dbb3c4 100644 --- a/bench/ring-rs/optimized/2y22w349mvmovez2.ll +++ b/bench/ring-rs/optimized/2y22w349mvmovez2.ll @@ -2139,12 +2139,10 @@ define void @"_ZN107_$LT$ring..hmac..Key$u20$as$u20$core..convert..From$LT$ring. unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hbd7f023510873fc8E.llvm.12309478120345669377.exit.i": ; preds = %2 - %12 = icmp ne ptr %.sroa.03.0.copyload, null - tail call void @llvm.assume(i1 %12) - %13 = icmp ne ptr %.sroa.4.0.copyload, null - tail call void @llvm.assume(i1 %13) - %14 = call noundef zeroext i1 @_ZN4ring4hkdf8fill_okm17hadb4f6f109bf9d24E(ptr noalias noundef nonnull readonly align 8 dereferenceable(160) %.sroa.03.0.copyload, ptr noalias noundef nonnull readonly align 8 %.sroa.4.0.copyload, i64 noundef %.sroa.5.0.copyload, ptr noalias noundef nonnull align 1 %5, i64 noundef %9, i64 noundef %.sroa.65.0.copyload), !noalias !482 - br i1 %14, label %_ZN4ring4hmac3Key9construct17he4bd5933a63b9cd0E.llvm.12309478120345669377.exit.thread, label %_ZN4ring4hmac3Key9construct17he4bd5933a63b9cd0E.llvm.12309478120345669377.exit + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.03.0.copyload) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.4.0.copyload) ] + %12 = call noundef zeroext i1 @_ZN4ring4hkdf8fill_okm17hadb4f6f109bf9d24E(ptr noalias noundef nonnull readonly align 8 dereferenceable(160) %.sroa.03.0.copyload, ptr noalias noundef nonnull readonly align 8 %.sroa.4.0.copyload, i64 noundef %.sroa.5.0.copyload, ptr noalias noundef nonnull align 1 %5, i64 noundef %9, i64 noundef %.sroa.65.0.copyload), !noalias !482 + br i1 %12, label %_ZN4ring4hmac3Key9construct17he4bd5933a63b9cd0E.llvm.12309478120345669377.exit.thread, label %_ZN4ring4hmac3Key9construct17he4bd5933a63b9cd0E.llvm.12309478120345669377.exit _ZN4ring4hmac3Key9construct17he4bd5933a63b9cd0E.llvm.12309478120345669377.exit.thread: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hbd7f023510873fc8E.llvm.12309478120345669377.exit.i" call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !472 diff --git a/bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll b/bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll index 4e16e681f1e..0ad0f2af883 100644 --- a/bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll +++ b/bench/ring-rs/optimized/52ihu0vizw1hcp4s.ll @@ -96,10 +96,9 @@ define hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZN113_$LT$core.. ; Function Attrs: nonlazybind uwtable define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList7entries17h77da35f9671cf6ccE(ptr noalias noundef returned align 8 dereferenceable(16) %0, ptr noundef nonnull %1, ptr noundef readnone captures(address) %2) unnamed_addr #2 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 @@ -225,6 +224,7 @@ define hidden void @_ZN4core5array25try_from_trusted_iterator17h55af298352255ed7 store ptr %1, ptr %6, align 8 %7 = getelementptr inbounds nuw i8, ptr %6, i64 8 store ptr %2, ptr %7, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] %8 = ptrtoint ptr %2 to i64 %9 = ptrtoint ptr %1 to i64 %10 = sub nuw i64 %8, %9 @@ -276,6 +276,7 @@ define hidden void @_ZN4core5array25try_from_trusted_iterator17h56929bb818d33921 store ptr %1, ptr %6, align 8 %7 = getelementptr inbounds nuw i8, ptr %6, i64 8 store ptr %2, ptr %7, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] %8 = ptrtoint ptr %2 to i64 %9 = ptrtoint ptr %1 to i64 %10 = sub nuw i64 %8, %9 @@ -328,6 +329,7 @@ define hidden void @_ZN4core5array25try_from_trusted_iterator17h8fcca485d356ed95 store ptr %1, ptr %5, align 8 %6 = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr %2, ptr %6, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] %7 = ptrtoint ptr %2 to i64 %8 = ptrtoint ptr %1 to i64 %9 = sub nuw i64 %7, %8 @@ -400,6 +402,7 @@ define hidden void @_ZN4core5array25try_from_trusted_iterator17he6fd0080cf798f2e store ptr %1, ptr %5, align 8 %6 = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr %2, ptr %6, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] %7 = ptrtoint ptr %2 to i64 %8 = ptrtoint ptr %1 to i64 %9 = sub nuw i64 %7, %8 @@ -451,6 +454,7 @@ define hidden void @"_ZN4core5array40_$LT$impl$u20$$u5b$T$u3b$$u20$N$u5d$$GT$7tr store ptr %1, ptr %6, align 8, !noalias !130 %7 = getelementptr inbounds nuw i8, ptr %6, i64 8 store ptr %2, ptr %7, align 8, !noalias !130 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] %8 = ptrtoint ptr %2 to i64 %9 = ptrtoint ptr %1 to i64 %10 = sub nuw i64 %8, %9 @@ -504,6 +508,7 @@ define hidden void @"_ZN4core5array40_$LT$impl$u20$$u5b$T$u3b$$u20$N$u5d$$GT$7tr store ptr %1, ptr %6, align 8, !noalias !152 %7 = getelementptr inbounds nuw i8, ptr %6, i64 8 store ptr %2, ptr %7, align 8, !noalias !152 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] %8 = ptrtoint ptr %2 to i64 %9 = ptrtoint ptr %1 to i64 %10 = sub nuw i64 %8, %9 @@ -559,6 +564,7 @@ define hidden void @"_ZN4core5array40_$LT$impl$u20$$u5b$T$u3b$$u20$N$u5d$$GT$7tr store ptr %1, ptr %5, align 8, !noalias !174 %6 = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr %2, ptr %6, align 8, !noalias !174 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] %7 = ptrtoint ptr %2 to i64 %8 = ptrtoint ptr %1 to i64 %9 = sub nuw i64 %7, %8 @@ -634,6 +640,7 @@ define hidden void @"_ZN4core5array40_$LT$impl$u20$$u5b$T$u3b$$u20$N$u5d$$GT$7tr store ptr %1, ptr %5, align 8, !noalias !202 %6 = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr %2, ptr %6, align 8, !noalias !202 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] %7 = ptrtoint ptr %2 to i64 %8 = ptrtoint ptr %1 to i64 %9 = sub nuw i64 %7, %8 @@ -1927,10 +1934,9 @@ define hidden { ptr, i64 } @_ZN4ring3rsa10public_key5Inner17exponentiate_elem17h %26 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17he07aa3d467f5369aE"(i64 noundef %25, i1 noundef zeroext false), !noalias !461 %27 = extractvalue { i64, ptr } %26, 0 %28 = extractvalue { i64, ptr } %26, 1 - %29 = icmp ne ptr %28, null - tail call void @llvm.assume(i1 %29) - %30 = shl i64 %25, 3 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %28, ptr nonnull readonly align 8 %23, i64 %30, i1 false), !noalias !463 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %28) ] + %29 = shl i64 %25, 3 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %28, ptr nonnull readonly align 8 %23, i64 %29, i1 false), !noalias !463 store i64 %27, ptr %6, align 8, !alias.scope !458, !noalias !464 %.sroa.4.0..sroa_idx.i.i = getelementptr inbounds nuw i8, ptr %6, i64 8 store ptr %28, ptr %.sroa.4.0..sroa_idx.i.i, align 8, !alias.scope !458, !noalias !464 @@ -1940,8 +1946,7 @@ define hidden { ptr, i64 } @_ZN4ring3rsa10public_key5Inner17exponentiate_elem17h call void @llvm.lifetime.end.p0(ptr nonnull %6), !noalias !455 %32 = extractvalue { ptr, i64 } %31, 0 %33 = extractvalue { ptr, i64 } %31, 1 - %34 = icmp ne ptr %32, null - tail call void @llvm.assume(i1 %34) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %32) ] tail call void @llvm.experimental.noalias.scope.decl(metadata !465) call void @llvm.lifetime.start.p0(ptr nonnull %5) store ptr %32, ptr %5, align 8, !noalias !468 @@ -1964,7 +1969,7 @@ define hidden { ptr, i64 } @_ZN4ring3rsa10public_key5Inner17exponentiate_elem17h unreachable common.resume: ; preds = %46, %37 - %common.resume.op = phi { ptr, i32 } [ %38, %37 ], [ %47, %46 ] + %common.resume.op = phi { ptr, i32 } [ %38, %35 ], [ %47, %44 ] resume { ptr, i32 } %common.resume.op _ZN4ring10arithmetic6bigint8elem_mul17h225a4517e1319722E.exit: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17haa4678cfcc20381dE.llvm.5814777820638942741.exit" diff --git a/bench/ripgrep-rs/optimized/5bsdb1a7c3bw15pg.ll b/bench/ripgrep-rs/optimized/5bsdb1a7c3bw15pg.ll index 9eee854bd71..c35831e532b 100644 --- a/bench/ripgrep-rs/optimized/5bsdb1a7c3bw15pg.ll +++ b/bench/ripgrep-rs/optimized/5bsdb1a7c3bw15pg.ll @@ -867,11 +867,10 @@ _ZN5alloc5alloc15exchange_malloc17ha641d2894b944555E.llvm.15295859283566592961.e define hidden { ptr, i64 } @"_ZN5alloc5boxed22Box$LT$$u5b$T$u5d$$GT$16new_uninit_slice17h512a60462a7b7e9dE"(i64 noundef %0) unnamed_addr #0 { %2 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17he6c54b6d5f2929f2E"(i64 noundef %0, i1 noundef zeroext false) %3 = extractvalue { i64, ptr } %2, 1 - %4 = icmp ne ptr %3, null - tail call void @llvm.assume(i1 %4) - %5 = insertvalue { ptr, i64 } poison, ptr %3, 0 - %6 = insertvalue { ptr, i64 } %5, i64 %0, 1 - ret { ptr, i64 } %6 + 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 } ; Function Attrs: nonlazybind uwtable 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/2p9nf7n6i9ycxebu.ll b/bench/ropey-rs/optimized/2p9nf7n6i9ycxebu.ll index 76bfb2bc149..2cf8411ae1c 100644 --- a/bench/ropey-rs/optimized/2p9nf7n6i9ycxebu.ll +++ b/bench/ropey-rs/optimized/2p9nf7n6i9ycxebu.ll @@ -308,19 +308,17 @@ define hidden void @"_ZN4core3ptr86drop_in_place$LT$$RF$$RF$$u5b$alloc..sync..Ar ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write, inaccessiblemem: write) uwtable define hidden void @_ZN4core4iter6traits8iterator8Iterator3zip17h5e8264817a2f3afdE.llvm.1041312438752767756(ptr dead_on_unwind noalias noundef writable writeonly sret([56 x i8]) align 8 captures(none) dereferenceable(56) initializes((0, 56)) %0, ptr noundef nonnull %1, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4) unnamed_addr #5 personality ptr @rust_eh_personality { - %6 = icmp ne ptr %2, null - tail call void @llvm.assume(i1 %6) - %7 = ptrtoint ptr %2 to i64 - %8 = ptrtoint ptr %1 to i64 - %9 = sub nuw i64 %7, %8 - %10 = lshr exact i64 %9, 5 - %11 = icmp ne ptr %4, null - tail call void @llvm.assume(i1 %11) - %12 = ptrtoint ptr %4 to i64 - %13 = ptrtoint ptr %3 to i64 - %14 = sub nuw i64 %12, %13 - %15 = lshr exact i64 %14, 3 - %.sroa.0.0.sroa.speculated.i.i = tail call noundef i64 @llvm.umin.i64(i64 %10, i64 %15) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %2) ] + %6 = ptrtoint ptr %2 to i64 + %7 = ptrtoint ptr %1 to i64 + %8 = sub nuw i64 %6, %7 + %9 = lshr exact i64 %8, 5 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %4) ] + %10 = ptrtoint ptr %4 to i64 + %11 = ptrtoint ptr %3 to i64 + %12 = sub nuw i64 %10, %11 + %13 = lshr exact i64 %12, 3 + %.sroa.0.0.sroa.speculated.i.i = tail call noundef i64 @llvm.umin.i64(i64 %9, i64 %13) store ptr %1, ptr %0, align 8, !alias.scope !15 %16 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %2, ptr %16, align 8, !alias.scope !15 @@ -333,7 +331,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator3zip17h5e8264817a2f3af %20 = getelementptr inbounds nuw i8, ptr %0, i64 40 store i64 %.sroa.0.0.sroa.speculated.i.i, ptr %20, align 8, !alias.scope !15 %21 = getelementptr inbounds nuw i8, ptr %0, i64 48 - store i64 %10, ptr %21, align 8, !alias.scope !15 + store i64 %9, ptr %21, align 8, !alias.scope !15 ret void } 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/serde-rs-json/optimized/2bynnyw1do6foacb.ll b/bench/serde-rs-json/optimized/2bynnyw1do6foacb.ll index 1b6fff1bf09..4da43bf70af 100644 --- a/bench/serde-rs-json/optimized/2bynnyw1do6foacb.ll +++ b/bench/serde-rs-json/optimized/2bynnyw1do6foacb.ll @@ -329,8 +329,7 @@ define void @"_ZN77_$LT$serde_json..value..ser..Serializer$u20$as$u20$serde..ser %9 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h0c6cafb5da1ad993E"(i64 noundef %5, i1 noundef zeroext false), !noalias !37 %10 = extractvalue { i64, ptr } %9, 0 %11 = extractvalue { i64, ptr } %9, 1 - %12 = icmp ne ptr %11, null - tail call void @llvm.assume(i1 %12) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %11) ] tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %11, ptr nonnull readonly align 1 %4, i64 %5, i1 false), !noalias !41 store i64 %10, ptr %8, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 8 @@ -344,7 +343,7 @@ define void @"_ZN77_$LT$serde_json..value..ser..Serializer$u20$as$u20$serde..ser %15 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h9caea5b8ca0babb1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %8) #15 - to label %21 unwind label %19 + to label %20 unwind label %19 16: ; preds = %7 %17 = extractvalue { i64, ptr } %13, 0 @@ -396,8 +395,7 @@ define void @"_ZN77_$LT$serde_json..value..ser..Serializer$u20$as$u20$serde..ser %8 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h0c6cafb5da1ad993E"(i64 noundef %5, i1 noundef zeroext false), !noalias !45 %9 = extractvalue { i64, ptr } %8, 0 %10 = extractvalue { i64, ptr } %8, 1 - %11 = icmp ne ptr %10, null - tail call void @llvm.assume(i1 %11) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %10) ] tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %10, ptr nonnull readonly align 1 %4, i64 %5, i1 false), !noalias !49 store i64 %9, ptr %0, align 8 %.sroa.03.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -673,8 +671,7 @@ define void @"_ZN83_$LT$serde_json..value..ser..MapKeySerializer$u20$as$u20$serd %3 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h0c6cafb5da1ad993E"(i64 noundef %., i1 noundef zeroext false), !noalias !104 %4 = extractvalue { i64, ptr } %3, 0 %5 = extractvalue { i64, ptr } %3, 1 - %6 = icmp ne ptr %5, null - tail call void @llvm.assume(i1 %6) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %5) ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(4) %5, ptr noundef nonnull readonly align 1 dereferenceable(4) %anon.23a239e370bc73ecc2abaad27a737150.19.anon.23a239e370bc73ecc2abaad27a737150.18, i64 %., i1 false), !noalias !108 store i64 %4, ptr %0, align 8 %.sroa.0.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -1282,8 +1279,7 @@ define void @"_ZN83_$LT$serde_json..value..ser..MapKeySerializer$u20$as$u20$serd %11 = call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h0c6cafb5da1ad993E"(i64 noundef %10, i1 noundef zeroext false), !noalias !161 %12 = extractvalue { i64, ptr } %11, 0 %13 = extractvalue { i64, ptr } %11, 1 - %14 = icmp ne ptr %13, null - call void @llvm.assume(i1 %14) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %13) ] call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %13, ptr nonnull readonly align 1 %4, i64 %10, i1 false), !noalias !165 %.sroa.0.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store i64 %10, ptr %.sroa.0.sroa.5.0..sroa_idx, align 8 @@ -1320,8 +1316,7 @@ define void @"_ZN83_$LT$serde_json..value..ser..MapKeySerializer$u20$as$u20$serd %11 = call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h0c6cafb5da1ad993E"(i64 noundef %10, i1 noundef zeroext false), !noalias !166 %12 = extractvalue { i64, ptr } %11, 0 %13 = extractvalue { i64, ptr } %11, 1 - %14 = icmp ne ptr %13, null - call void @llvm.assume(i1 %14) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %13) ] call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %13, ptr nonnull readonly align 1 %4, i64 %10, i1 false), !noalias !170 %.sroa.0.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 store i64 %10, ptr %.sroa.0.sroa.5.0..sroa_idx, align 8 diff --git a/bench/serde-rs-json/optimized/36shr7j8gl5gy6fn.ll b/bench/serde-rs-json/optimized/36shr7j8gl5gy6fn.ll index 42b6268825b..205ff06c17b 100644 --- a/bench/serde-rs-json/optimized/36shr7j8gl5gy6fn.ll +++ b/bench/serde-rs-json/optimized/36shr7j8gl5gy6fn.ll @@ -375,8 +375,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 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/serde-rs-json/optimized/fa1ay6huy2tg8jn.ll b/bench/serde-rs-json/optimized/fa1ay6huy2tg8jn.ll index 38577d76db1..f2a5940c745 100644 --- a/bench/serde-rs-json/optimized/fa1ay6huy2tg8jn.ll +++ b/bench/serde-rs-json/optimized/fa1ay6huy2tg8jn.ll @@ -84,8 +84,7 @@ define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8buil call void @llvm.lifetime.start.p0(ptr nonnull %4) store ptr %.fca.0.extract6, ptr %4, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %3) - %9 = icmp ne ptr %.fca.1.extract, null - call void @llvm.assume(i1 %9) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.fca.1.extract) ] store ptr %.fca.1.extract, ptr %3, align 8 %10 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders8DebugMap5entry17h21a6ff5a03673b25E(ptr noalias noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 1 %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.f288aba1288e7a615443dffa1f18fa93.2.llvm.17788874430417167, ptr noundef nonnull align 1 %3, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.f288aba1288e7a615443dffa1f18fa93.3.llvm.17788874430417167) call void @llvm.lifetime.end.p0(ptr nonnull %3) @@ -99,10 +98,9 @@ define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8buil ; Function Attrs: nonlazybind uwtable define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList7entries17h98a615cf2a9210e6E(ptr noalias noundef returned align 8 dereferenceable(16) %0, ptr noundef nonnull %1, ptr noundef readnone captures(address) %2) unnamed_addr #0 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/smol-rs/optimized/21eidrukyvr99qqv.ll b/bench/smol-rs/optimized/21eidrukyvr99qqv.ll index 12c54b0a6c6..bdcccee8cd7 100644 --- a/bench/smol-rs/optimized/21eidrukyvr99qqv.ll +++ b/bench/smol-rs/optimized/21eidrukyvr99qqv.ll @@ -244,10 +244,9 @@ define hidden void @"_ZN16concurrent_queue9unbounded18Unbounded$LT$T$GT$3pop17h4 br label %"_ZN16concurrent_queue9unbounded14Block$LT$T$GT$7destroy17h0d81b4a9a06c8c79E.exit" "_ZN16concurrent_queue9unbounded14Block$LT$T$GT$7destroy17h0d81b4a9a06c8c79E.exit": ; preds = %89, %76, %"_ZN16concurrent_queue9unbounded14Block$LT$T$GT$7destroy17h0d81b4a9a06c8c79E.exit.sink.split", %66 - %94 = icmp ne ptr %65, null - call void @llvm.assume(i1 %94) - %95 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %65, ptr %95, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %65) ] + %94 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %65, ptr %94, align 8 br label %33 } diff --git a/bench/smol-rs/optimized/3jwiggzh2qey4o2f.ll b/bench/smol-rs/optimized/3jwiggzh2qey4o2f.ll index 24aa8e7b40b..d76f9ac8621 100644 --- a/bench/smol-rs/optimized/3jwiggzh2qey4o2f.ll +++ b/bench/smol-rs/optimized/3jwiggzh2qey4o2f.ll @@ -137,7 +137,7 @@ define hidden void @"_ZN107_$LT$event_listener..notify..Additional$LT$N$GT$$u20$ %2 = alloca i64, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %2) store i64 0, ptr %2, align 8 - call void asm sideeffect inteldialect "lock not qword ptr [${0:q}]", "r,~{memory}"(ptr nonnull %2) #12, !srcloc !68 + call void asm sideeffect inteldialect "lock not qword ptr [${0:q}]", "r,~{memory}"(ptr nonnull %2) #13, !srcloc !68 call void @llvm.lifetime.end.p0(ptr nonnull %2) ret void } @@ -199,7 +199,7 @@ define hidden noundef align 8 ptr @"_ZN108_$LT$async_lock..mutex..AcquireSlow$LT .preheader: ; preds = %27 %30 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %.val = load ptr, ptr %2, align 8, !nonnull !4 + %.val = load ptr, ptr %2, align 8 %31 = getelementptr inbounds nuw i8, ptr %24, i64 8 br label %.backedge103 @@ -210,7 +210,7 @@ define hidden noundef align 8 ptr @"_ZN108_$LT$async_lock..mutex..AcquireSlow$LT 33: ; preds = %88, %27 %34 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %.val73 = load ptr, ptr %2, align 8, !nonnull !4 + %.val73 = load ptr, ptr %2, align 8 %35 = getelementptr inbounds nuw i8, ptr %24, i64 8 br label %.backedge @@ -230,11 +230,12 @@ define hidden noundef align 8 ptr @"_ZN108_$LT$async_lock..mutex..AcquireSlow$LT store ptr @anon.c645e1ab9ea8f5aeef2ce74ed8e1943d.2.llvm.6090777742988092048, ptr %42, align 8, !noalias !75 %43 = getelementptr inbounds nuw i8, ptr %9, i64 24 store i64 0, ptr %43, align 8, !noalias !75 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %9, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c645e1ab9ea8f5aeef2ce74ed8e1943d.5.llvm.6090777742988092048) #13, !noalias !75 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %9, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c645e1ab9ea8f5aeef2ce74ed8e1943d.5.llvm.6090777742988092048) #14, !noalias !75 unreachable 44: ; preds = %36 %45 = getelementptr inbounds nuw i8, ptr %37, i64 16 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] %46 = call noundef i8 @"_ZN14event_listener3sys48_$LT$impl$u20$event_listener..Inner$LT$T$GT$$GT$8register17h8af9ae2206abefa9E.llvm.6090777742988092048"(ptr noundef nonnull align 8 %45, ptr noundef nonnull align 8 %0, i64 noundef 0, ptr noundef nonnull %.val), !range !78, !noalias !75 switch i8 %46, label %.unreachabledefault [ i8 0, label %55 @@ -259,7 +260,7 @@ default.unreachable: ; preds = %99 store ptr @anon.c645e1ab9ea8f5aeef2ce74ed8e1943d.2.llvm.6090777742988092048, ptr %50, align 8, !noalias !75 %51 = getelementptr inbounds nuw i8, ptr %8, i64 24 store i64 0, ptr %51, align 8, !noalias !75 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %8, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c645e1ab9ea8f5aeef2ce74ed8e1943d.17.llvm.6090777742988092048) #13, !noalias !75 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %8, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c645e1ab9ea8f5aeef2ce74ed8e1943d.17.llvm.6090777742988092048) #14, !noalias !75 unreachable 52: ; preds = %.backedge103 @@ -286,7 +287,7 @@ default.unreachable: ; preds = %99 %59 = call noundef i64 @"_ZN64_$LT$i32$u20$as$u20$event_listener..notify..IntoNotification$GT$17into_notification17h1560063b65d058faE"(i32 noundef 1) call void @llvm.lifetime.start.p0(ptr nonnull %7) store i64 0, ptr %7, align 8 - call void asm sideeffect inteldialect "lock not qword ptr [${0:q}]", "r,~{memory}"(ptr nonnull %7) #12, !srcloc !68 + call void asm sideeffect inteldialect "lock not qword ptr [${0:q}]", "r,~{memory}"(ptr nonnull %7) #13, !srcloc !68 call void @llvm.lifetime.end.p0(ptr nonnull %7) %60 = load atomic i64, ptr %31 acquire, align 8 %.0.i.i.i = inttoptr i64 %60 to ptr @@ -390,11 +391,12 @@ default.unreachable: ; preds = %99 store ptr @anon.c645e1ab9ea8f5aeef2ce74ed8e1943d.2.llvm.6090777742988092048, ptr %97, align 8, !noalias !79 %98 = getelementptr inbounds nuw i8, ptr %6, i64 24 store i64 0, ptr %98, align 8, !noalias !79 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c645e1ab9ea8f5aeef2ce74ed8e1943d.5.llvm.6090777742988092048) #13, !noalias !79 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c645e1ab9ea8f5aeef2ce74ed8e1943d.5.llvm.6090777742988092048) #14, !noalias !79 unreachable 99: ; preds = %91 %100 = getelementptr inbounds nuw i8, ptr %92, i64 16 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val73) ] %101 = call noundef i8 @"_ZN14event_listener3sys48_$LT$impl$u20$event_listener..Inner$LT$T$GT$$GT$8register17h8af9ae2206abefa9E.llvm.6090777742988092048"(ptr noundef nonnull align 8 %100, ptr noundef nonnull align 8 %0, i64 noundef 0, ptr noundef nonnull %.val73), !range !78, !noalias !79 switch i8 %101, label %default.unreachable [ i8 0, label %110 @@ -413,7 +415,7 @@ default.unreachable: ; preds = %99 store ptr @anon.c645e1ab9ea8f5aeef2ce74ed8e1943d.2.llvm.6090777742988092048, ptr %105, align 8, !noalias !79 %106 = getelementptr inbounds nuw i8, ptr %5, i64 24 store i64 0, ptr %106, align 8, !noalias !79 - call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c645e1ab9ea8f5aeef2ce74ed8e1943d.17.llvm.6090777742988092048) #13, !noalias !79 + call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c645e1ab9ea8f5aeef2ce74ed8e1943d.17.llvm.6090777742988092048) #14, !noalias !79 unreachable 107: ; preds = %.backedge @@ -475,7 +477,7 @@ default.unreachable: ; preds = %99 %132 = call noundef i64 @"_ZN64_$LT$i32$u20$as$u20$event_listener..notify..IntoNotification$GT$17into_notification17h1560063b65d058faE"(i32 noundef 1) call void @llvm.lifetime.start.p0(ptr nonnull %4) store i64 0, ptr %4, align 8 - call void asm sideeffect inteldialect "lock not qword ptr [${0:q}]", "r,~{memory}"(ptr nonnull %4) #12, !srcloc !68 + call void asm sideeffect inteldialect "lock not qword ptr [${0:q}]", "r,~{memory}"(ptr nonnull %4) #13, !srcloc !68 call void @llvm.lifetime.end.p0(ptr nonnull %4) %133 = load atomic i64, ptr %35 acquire, align 8 %.0.i.i.i92 = inttoptr i64 %133 to ptr @@ -501,7 +503,7 @@ define hidden void @"_ZN10async_lock5mutex14Mutex$LT$T$GT$16unlock_unchecked17ha %5 = tail call noundef i64 @"_ZN64_$LT$i32$u20$as$u20$event_listener..notify..IntoNotification$GT$17into_notification17h1560063b65d058faE"(i32 noundef 1) call void @llvm.lifetime.start.p0(ptr nonnull %2) store i64 0, ptr %2, align 8 - call void asm sideeffect inteldialect "lock not qword ptr [${0:q}]", "r,~{memory}"(ptr nonnull %2) #12, !srcloc !68 + call void asm sideeffect inteldialect "lock not qword ptr [${0:q}]", "r,~{memory}"(ptr nonnull %2) #13, !srcloc !68 call void @llvm.lifetime.end.p0(ptr nonnull %2) %6 = load atomic i64, ptr %4 acquire, align 8 %.0.i.i.i = inttoptr i64 %6 to ptr @@ -553,7 +555,7 @@ define hidden void @"_ZN110_$LT$event_listener..notify..GenericNotify$LT$F$GT$$u br i1 %trunc.i.i, label %"_ZN57_$LT$F$u20$as$u20$event_listener..notify..TagProducer$GT$8next_tag17hc37681dd9dbb5601E.exit", label %4 4: ; preds = %1 - tail call void @_ZN4core6option13expect_failed17hc85eb6037a3050f7E(ptr noalias noundef nonnull readonly align 1 @anon.0fa89ed10688b635e1331aca50fe0be6.3.llvm.3826330461689352739, i64 noundef 17, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.0fa89ed10688b635e1331aca50fe0be6.4.llvm.3826330461689352739) #13, !noalias !88 + tail call void @_ZN4core6option13expect_failed17hc85eb6037a3050f7E(ptr noalias noundef nonnull readonly align 1 @anon.0fa89ed10688b635e1331aca50fe0be6.3.llvm.3826330461689352739, i64 noundef 17, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.0fa89ed10688b635e1331aca50fe0be6.4.llvm.3826330461689352739) #14, !noalias !88 unreachable "_ZN57_$LT$F$u20$as$u20$event_listener..notify..TagProducer$GT$8next_tag17hc37681dd9dbb5601E.exit": ; preds = %1 @@ -566,7 +568,7 @@ define hidden noundef i64 @"_ZN14event_listener14Event$LT$T$GT$6notify17h10aee82 %4 = tail call noundef i64 @"_ZN64_$LT$i32$u20$as$u20$event_listener..notify..IntoNotification$GT$17into_notification17h1560063b65d058faE"(i32 noundef %1) 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) #12, !srcloc !68 + call void asm sideeffect inteldialect "lock not qword ptr [${0:q}]", "r,~{memory}"(ptr nonnull %3) #13, !srcloc !68 call void @llvm.lifetime.end.p0(ptr nonnull %3) %5 = load atomic i64, ptr %0 acquire, align 8 %.0.i.i = inttoptr i64 %5 to ptr @@ -1182,7 +1184,7 @@ define hidden void @"_ZN94_$LT$event_listener..notify..Notify$u20$as$u20$event_l %2 = alloca i64, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %2) store i64 0, ptr %2, align 8 - call void asm sideeffect inteldialect "lock not qword ptr [${0:q}]", "r,~{memory}"(ptr nonnull %2) #12, !srcloc !68 + call void asm sideeffect inteldialect "lock not qword ptr [${0:q}]", "r,~{memory}"(ptr nonnull %2) #13, !srcloc !68 call void @llvm.lifetime.end.p0(ptr nonnull %2) ret void } @@ -1225,6 +1227,9 @@ declare void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias nound ; Function Attrs: nonlazybind uwtable declare { i64, i32 } @_ZN3std4time7Instant3now17hcaf082b521a24e93E() unnamed_addr #5 +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #10 + ; Function Attrs: nonlazybind uwtable declare hidden noundef i8 @"_ZN14event_listener3sys48_$LT$impl$u20$event_listener..Inner$LT$T$GT$$GT$8register17h8af9ae2206abefa9E.llvm.6090777742988092048"(ptr noundef nonnull align 8, ptr noundef nonnull align 8, i64 noundef, ptr noundef) unnamed_addr #5 @@ -1253,10 +1258,11 @@ attributes #6 = { mustprogress nofree norecurse nounwind nonlazybind willreturn attributes #7 = { inlinehint nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #8 = { inlinehint mustprogress nofree norecurse nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #9 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #10 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #10 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: write) } attributes #11 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #12 = { nounwind } -attributes #13 = { noreturn } +attributes #12 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #13 = { nounwind } +attributes #14 = { noreturn } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/softposit-rs/optimized/1jooigl29qhneyer.ll b/bench/softposit-rs/optimized/1jooigl29qhneyer.ll index dbe71452643..fb6d4874388 100644 --- a/bench/softposit-rs/optimized/1jooigl29qhneyer.ll +++ b/bench/softposit-rs/optimized/1jooigl29qhneyer.ll @@ -1854,9 +1854,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 @@ -1884,9 +1886,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 @@ -3736,6 +3740,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 @@ -3775,9 +3782,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/4wrr62dd33canpwl.ll b/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll index 09a87191036..c9433c68d98 100644 --- a/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll +++ b/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll @@ -332,9 +332,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.ade9f7a0850fbf939fbb2c4249dd7fa3.2, ptr %3, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -355,6 +357,9 @@ _ZN4core3fmt9Formatter9write_fmt17h40252474da72b710E.exit: ; preds = %2, %7, %_Z ; Function Attrs: nonlazybind uwtable declare noundef zeroext i1 @_ZN4core3fmt5write17hd9a8d7d029f9ea1aE(ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(24), ptr noalias noundef align 8 captures(none) dereferenceable(48)) unnamed_addr #2 +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #6 + ; Function Attrs: nonlazybind uwtable declare void @_ZN9softposit7quire163ops3fdp17h6da150bf3eda9608E(ptr noalias noundef align 16 dereferenceable(16), i16 noundef, i16 noundef, i1 noundef zeroext) unnamed_addr #2 @@ -373,7 +378,8 @@ attributes #2 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x attributes #3 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #4 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #5 = { mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } -attributes #6 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #6 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: write) } +attributes #7 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } !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 e73e9d0586a..390edc2c189 100644 --- a/bench/sqlite/optimized/sqlite3.ll +++ b/bench/sqlite/optimized/sqlite3.ll @@ -59545,8 +59545,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 @@ -199245,9 +199244,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 @@ -203363,7 +203361,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 @@ -212290,7 +212289,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 @@ -268975,8 +268975,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 @@ -269384,7 +269384,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 ] @@ -269731,7 +269731,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 @@ -271480,8 +271480,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 @@ -321733,8 +321732,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 @@ -426719,8 +426717,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/2ao4u4y4ndqxwz8u.ll b/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll index 9f046ef6780..c23444dc35b 100644 --- a/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll +++ b/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll @@ -548,7 +548,7 @@ common.resume.i: ; preds = %104, %84, %63, %43 br label %144 144: ; preds = %.lr.ph, %290 - %145 = phi ptr [ %139, %.lr.ph ], [ %292, %290 ] + %145 = phi ptr [ %139, %.lr.ph ], [ %291, %290 ] %.sroa.0.0134 = phi ptr [ %9, %.lr.ph ], [ %.sroa.061.0, %290 ] %.sroa.6.0133 = phi i64 [ %18, %.lr.ph ], [ %.sroa.763.1, %290 ] %.sroa.7.0132 = phi ptr [ %19, %.lr.ph ], [ %.sroa.866.1, %290 ] @@ -897,11 +897,10 @@ _ZN5alloc11collections5btree3mem7replace17ha955f20bf239a92fE.exit.i: ; preds = % br label %.loopexit 290: ; preds = %"_ZN5alloc11collections5btree4node214Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$6insert17h49f95f56033beca8E.exit" - %291 = icmp ne ptr %.sroa.866.1, null - tail call void @llvm.assume(i1 %291) - %292 = load ptr, ptr %.sroa.061.0, align 8, !noalias !98, !noundef !4 - %293 = icmp eq ptr %292, null - br i1 %293, label %._crit_edge, label %144 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.866.1) ] + %291 = load ptr, ptr %.sroa.061.0, align 8, !noalias !98, !noundef !4 + %292 = icmp eq ptr %291, null + br i1 %292, label %._crit_edge, label %144 .loopexit: ; preds = %"_ZN5alloc11collections5btree4node214Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$6insert17h49f95f56033beca8E.exit", %"_ZN5alloc11collections5btree4node214Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$6insert17h49f95f56033beca8E.exit.thread", %129, %"_ZN5alloc11collections5btree3map5entry28VacantEntry$LT$K$C$V$C$A$GT$6insert28_$u7b$$u7b$closure$u7d$$u7d$17h2788e6f50e4a264bE.exit" %.sink = phi ptr [ %9, %129 ], [ %.sroa.021.0.i, %"_ZN5alloc11collections5btree3map5entry28VacantEntry$LT$K$C$V$C$A$GT$6insert28_$u7b$$u7b$closure$u7d$$u7d$17h2788e6f50e4a264bE.exit" ], [ %.sroa.021.0.i, %"_ZN5alloc11collections5btree4node214Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$6insert17h49f95f56033beca8E.exit.thread" ], [ %.sroa.021.0.i, %"_ZN5alloc11collections5btree4node214Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Internal$GT$$C$alloc..collections..btree..node..marker..Edge$GT$6insert17h49f95f56033beca8E.exit" ] @@ -941,17 +940,23 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node212Handle$LT$allo %14 = add i64 %12, %13 %15 = trunc i64 %14 to i16 store i16 %15, ptr %9, align 2, !alias.scope !178 - %16 = icmp ugt i64 %14, 11 - br i1 %16, label %17, label %22 - -17: ; preds = %"_ZN5alloc11collections5btree4node25InternalNode$LT$K$C$V$GT$3new17h0be88ef804756912E.exit" + %16 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %17 = getelementptr inbounds double, ptr %16, i64 %.val6 + %18 = load double, ptr %17, align 8, !noalias !178, !noundef !4 + %19 = getelementptr inbounds nuw i8, ptr %3, i64 96 + %20 = getelementptr inbounds i64, ptr %19, i64 %.val6 + %21 = load i64, ptr %20, align 8, !noalias !178, !noundef !4 + %22 = icmp ugt i64 %14, 11 + br i1 %22, label %23, label %28 + +23: ; preds = %"_ZN5alloc11collections5btree4node25InternalNode$LT$K$C$V$GT$3new17h0be88ef804756912E.exit" invoke void @_ZN4core5slice5index24slice_end_index_len_fail17h70ffde91723d2a46E(i64 noundef %14, i64 noundef 11, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.a535fe7ef364fcb4762aa7ab38aa75fd.21) #20 to label %.noexc unwind label %18 -.noexc: ; preds = %17 +.noexc: ; preds = %23 unreachable -18: ; preds = %17 +18: ; preds = %23 %19 = landingpad { ptr, i32 } cleanup br label %66 @@ -962,18 +967,12 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node212Handle$LT$allo br label %66 22: ; preds = %"_ZN5alloc11collections5btree4node25InternalNode$LT$K$C$V$GT$3new17h0be88ef804756912E.exit" - %23 = getelementptr inbounds nuw i8, ptr %3, i64 96 - %24 = getelementptr inbounds i64, ptr %23, i64 %.val6 - %25 = load i64, ptr %24, align 8, !noalias !178, !noundef !4 - %26 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %27 = getelementptr inbounds double, ptr %26, i64 %.val6 - %28 = load double, ptr %27, align 8, !noalias !178, !noundef !4 %29 = add i64 %.val6, 1 %30 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %31 = getelementptr inbounds double, ptr %26, i64 %29 + %31 = getelementptr inbounds double, ptr %16, i64 %29 %32 = shl nuw nsw i64 %14, 3 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %30, ptr nonnull readonly align 8 %31, i64 %32, i1 false), !alias.scope !181 - %33 = getelementptr inbounds i64, ptr %23, i64 %29 + %33 = getelementptr inbounds i64, ptr %19, i64 %29 %34 = getelementptr inbounds nuw i8, ptr %6, i64 96 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %34, ptr nonnull readonly align 8 %33, i64 %32, i1 false), !alias.scope !185 %35 = trunc i64 %.val6 to i16 @@ -1036,9 +1035,9 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node212Handle$LT$allo %61 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %52, ptr %61, align 8 %62 = getelementptr inbounds nuw i8, ptr %0, i64 32 - store double %28, ptr %62, align 8 + store double %18, ptr %62, align 8 %63 = getelementptr inbounds nuw i8, ptr %0, i64 40 - store i64 %25, ptr %63, align 8 + store i64 %21, ptr %63, align 8 %64 = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %6, ptr %64, align 8 %65 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -1046,7 +1045,7 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node212Handle$LT$allo ret void 66: ; preds = %20, %18 - %.pn = phi { ptr, i32 } [ %21, %20 ], [ %19, %18 ] + %.pn = phi { ptr, i32 } [ %21, %26 ], [ %19, %24 ] tail call void @__rust_dealloc(ptr noundef nonnull %6, i64 noundef 288, i64 noundef 8) #21 resume { ptr, i32 } %.pn } @@ -2028,14 +2027,16 @@ define hidden void @"_ZN5alloc11collections5btree6remove269_$LT$impl$u20$alloc.. %30 = getelementptr inbounds nuw i8, ptr %.sroa.013.0.lcssa.i.i, i64 186 %31 = load i16, ptr %30, align 2, !noalias !404, !noundef !4 %32 = zext i16 %31 to i64 - %.not.i = icmp ne i16 %31, 0 + %.not.i = icmp eq i16 %31, 0 %33 = add nsw i64 %32, -1 - tail call void @llvm.assume(i1 %.not.i) - store ptr %.sroa.013.0.lcssa.i.i, ptr %5, align 8, !noalias !410 + %spec.select.i = select i1 %.not.i, i64 undef, i64 %33 + %spec.select54.i = select i1 %.not.i, ptr null, ptr %.sroa.013.0.lcssa.i.i + call void @llvm.assume(i1 true) [ "nonnull"(ptr %spec.select54.i) ] + store ptr %spec.select54.i, ptr %5, align 8, !noalias !410 %.sroa.7.0..sroa_idx5.i = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 0, ptr %.sroa.7.0..sroa_idx5.i, align 8, !noalias !410 %.sroa.7.sroa.5.0..sroa.7.0..sroa_idx5.sroa_idx.i = getelementptr inbounds nuw i8, ptr %5, i64 16 - store i64 %33, ptr %.sroa.7.sroa.5.0..sroa.7.0..sroa_idx5.sroa_idx.i, align 8, !noalias !410 + store i64 %spec.select.i, ptr %.sroa.7.sroa.5.0..sroa.7.0..sroa_idx5.sroa_idx.i, align 8, !noalias !410 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !410 call fastcc void @"_ZN5alloc11collections5btree6remove259_$LT$impl$u20$alloc..collections..btree..node..Handle$LT$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Mut$C$K$C$V$C$alloc..collections..btree..node..marker..Leaf$GT$$C$alloc..collections..btree..node..marker..KV$GT$$GT$14remove_leaf_kv17h2c659e006d430588E"(ptr noalias noundef align 8 captures(none) dereferenceable(40) %4, ptr noalias noundef align 8 captures(none) dereferenceable(24) %5, ptr noalias noundef nonnull align 1 dereferenceable(1) %2), !noalias !411 %34 = load double, ptr %4, align 8, !noalias !410, !noundef !4 diff --git a/bench/stat-rs/optimized/3koi1gt1wwkf7v6z.ll b/bench/stat-rs/optimized/3koi1gt1wwkf7v6z.ll index 3d232e68493..a460cfc8a67 100644 --- a/bench/stat-rs/optimized/3koi1gt1wwkf7v6z.ll +++ b/bench/stat-rs/optimized/3koi1gt1wwkf7v6z.ll @@ -136,9 +136,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$i64$GT$3fmt17h805203273244cd98E", 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 !5 store ptr @anon.e454849c71ff0ccf6bad19ade5623ee4.15, ptr %2, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -408,9 +410,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 !8 store ptr @anon.e454849c71ff0ccf6bad19ade5623ee4.19, ptr %2, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -853,9 +857,11 @@ _ZN4core3fmt9Arguments23as_statically_known_str17hd4a07815937ed51bE.exit.i: %.sroa.108.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 104 store i8 3, ptr %.sroa.108.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 - %.val20 = load ptr, ptr %9, align 8, !nonnull !4, !noundef !4 + %.val20 = load ptr, ptr %9, 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 %2), !noalias !37 store ptr @anon.e454849c71ff0ccf6bad19ade5623ee4.23, ptr %2, align 8 %.sroa.5.0..sroa_idx21 = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -1091,7 +1097,7 @@ common.resume: ; preds = %.body, %31, %38 %43 = mul i64 %21, %21 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !96 invoke void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17h745c1f7f1ceb76d9E.llvm.7371537965014501254"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %5, double noundef 0.000000e+00, i64 noundef %43) - to label %.noexc unwind label %73 + to label %.noexc unwind label %71 .noexc: ; preds = %"_ZN8nalgebra4base12construction258_$LT$impl$u20$nalgebra..base..matrix..Matrix$LT$T$C$nalgebra..base..dimension..Dyn$C$C$C$$LT$nalgebra..base..default_allocator..DefaultAllocator$u20$as$u20$nalgebra..base..allocator..Allocator$LT$T$C$nalgebra..base..dimension..Dyn$C$C$GT$$GT$..Buffer$GT$$GT$8from_vec17h64e38006ce8b435eE.exit" %44 = getelementptr inbounds nuw i8, ptr %5, i64 16 @@ -1156,35 +1162,33 @@ common.resume: ; preds = %.body, %31, %38 br i1 %.not.i, label %"_ZN8nalgebra4base12construction200_$LT$impl$u20$nalgebra..base..matrix..Matrix$LT$T$C$D$C$D$C$$LT$nalgebra..base..default_allocator..DefaultAllocator$u20$as$u20$nalgebra..base..allocator..Allocator$LT$T$C$D$C$D$GT$$GT$..Buffer$GT$$GT$13from_diagonal17h34b81d67fd78135cE.exit", label %.lr.ph.i .lr.ph.i: ; preds = %63 - %64 = icmp ne ptr %.val, null - call void @llvm.assume(i1 %64) - %65 = icmp ne ptr %.sroa.4.0.copyload4.i, null - call void @llvm.assume(i1 %65) - br label %66 - -66: ; preds = %66, %.lr.ph.i - %.sroa.02.01.i = phi i64 [ 0, %.lr.ph.i ], [ %67, %66 ] - %67 = add nuw i64 %.sroa.02.01.i, 1 - %68 = getelementptr double, ptr %.val, i64 %.sroa.02.01.i - %69 = load double, ptr %68, align 8, !alias.scope !110, !noalias !109, !noundef !4 - %70 = mul i64 %.sroa.02.01.i, %21 - %71 = getelementptr double, ptr %.sroa.4.0.copyload4.i, i64 %70 - %72 = getelementptr double, ptr %71, i64 %.sroa.02.01.i - store double %69, ptr %72, align 8, !noalias !109 - %exitcond.not.i = icmp eq i64 %67, %21 - br i1 %exitcond.not.i, label %"_ZN8nalgebra4base12construction200_$LT$impl$u20$nalgebra..base..matrix..Matrix$LT$T$C$D$C$D$C$$LT$nalgebra..base..default_allocator..DefaultAllocator$u20$as$u20$nalgebra..base..allocator..Allocator$LT$T$C$D$C$D$GT$$GT$..Buffer$GT$$GT$13from_diagonal17h34b81d67fd78135cE.exit", label %66 - -73: ; preds = %"_ZN8nalgebra4base12construction258_$LT$impl$u20$nalgebra..base..matrix..Matrix$LT$T$C$nalgebra..base..dimension..Dyn$C$C$C$$LT$nalgebra..base..default_allocator..DefaultAllocator$u20$as$u20$nalgebra..base..allocator..Allocator$LT$T$C$nalgebra..base..dimension..Dyn$C$C$GT$$GT$..Buffer$GT$$GT$8from_vec17h64e38006ce8b435eE.exit" - %74 = landingpad { ptr, i32 } + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.4.0.copyload4.i) ] + br label %64 + +64:; preds = %64, %.lr.ph.i + %.sroa.02.01.i = phi i64 [ 0, %.lr.ph.i ], [ %65, %64 ] + %65 = add nuw i64 %.sroa.02.01.i, 1 + %66 = getelementptr double, ptr %.val, i64 %.sroa.02.01.i + %67 = load double, ptr %66, align 8, !alias.scope !110, !noalias !109, !noundef !4 + %68 = mul i64 %.sroa.02.01.i, %21 + %69 = getelementptr double, ptr %.sroa.4.0.copyload4.i, i64 %68 + %70 = getelementptr double, ptr %69, i64 %.sroa.02.01.i + store double %67, ptr %70, align 8, !noalias !109 + %exitcond.not.i = icmp eq i64 %65, %21 + br i1 %exitcond.not.i, label %"_ZN8nalgebra4base12construction200_$LT$impl$u20$nalgebra..base..matrix..Matrix$LT$T$C$D$C$D$C$$LT$nalgebra..base..default_allocator..DefaultAllocator$u20$as$u20$nalgebra..base..allocator..Allocator$LT$T$C$D$C$D$GT$$GT$..Buffer$GT$$GT$13from_diagonal17h34b81d67fd78135cE.exit", label %64 + +71:; preds = %"_ZN8nalgebra4base12construction258_$LT$impl$u20$nalgebra..base..matrix..Matrix$LT$T$C$nalgebra..base..dimension..Dyn$C$C$C$$LT$nalgebra..base..default_allocator..DefaultAllocator$u20$as$u20$nalgebra..base..allocator..Allocator$LT$T$C$nalgebra..base..dimension..Dyn$C$C$GT$$GT$..Buffer$GT$$GT$8from_vec17h64e38006ce8b435eE.exit" + %72 = landingpad { ptr, i32 } cleanup br label %.body -.body: ; preds = %52, %59, %73 - %eh.lpad-body = phi { ptr, i32 } [ %74, %73 ], [ %60, %59 ], [ %53, %52 ] +.body: ; preds = %52, %59, %71 + %eh.lpad-body = phi { ptr, i32 } [ %72, %71 ], [ %60, %59 ], [ %53, %52 ] invoke void @"_ZN4core3ptr281drop_in_place$LT$nalgebra..base..matrix..Matrix$LT$f64$C$nalgebra..base..dimension..Dyn$C$nalgebra..base..dimension..Const$LT$1_usize$GT$$C$nalgebra..base..vec_storage..VecStorage$LT$f64$C$nalgebra..base..dimension..Dyn$C$nalgebra..base..dimension..Const$LT$1_usize$GT$$GT$$GT$$GT$17h549f0e96b1f23bf3E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %9) #18 to label %common.resume unwind label %84 -"_ZN8nalgebra4base12construction200_$LT$impl$u20$nalgebra..base..matrix..Matrix$LT$T$C$D$C$D$C$$LT$nalgebra..base..default_allocator..DefaultAllocator$u20$as$u20$nalgebra..base..allocator..Allocator$LT$T$C$D$C$D$GT$$GT$..Buffer$GT$$GT$13from_diagonal17h34b81d67fd78135cE.exit": ; preds = %66, %63 +"_ZN8nalgebra4base12construction200_$LT$impl$u20$nalgebra..base..matrix..Matrix$LT$T$C$D$C$D$C$$LT$nalgebra..base..default_allocator..DefaultAllocator$u20$as$u20$nalgebra..base..allocator..Allocator$LT$T$C$D$C$D$GT$$GT$..Buffer$GT$$GT$13from_diagonal17h34b81d67fd78135cE.exit": ; preds = %64, %63 store i64 %.sroa.0.0.copyload2.i, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.4.0.copyload4.i, ptr %.sroa.4.0..sroa_idx, align 8 @@ -1484,9 +1488,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 !156 store ptr @anon.e454849c71ff0ccf6bad19ade5623ee4.31, ptr %2, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %2, i64 8 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/19z3k5eqgbxjiezn.ll b/bench/syn/optimized/19z3k5eqgbxjiezn.ll index 657e105ec81..e5605646dc9 100644 --- a/bench/syn/optimized/19z3k5eqgbxjiezn.ll +++ b/bench/syn/optimized/19z3k5eqgbxjiezn.ll @@ -4479,17 +4479,16 @@ default.unreachable1.i: ; preds = %2 br label %.thread 6: ; preds = %2 - %7 = icmp ne ptr %.sroa.6.0.copyload, null - tail call void @llvm.assume(i1 %7) - %8 = load i64, ptr %.sroa.6.0.copyload, align 8, !noalias !636, !noundef !4 - %9 = icmp ne i64 %8, 0 - tail call void @llvm.assume(i1 %9) - %10 = add i64 %8, 1 - store i64 %10, ptr %.sroa.6.0.copyload, align 8, !noalias !636 - %11 = icmp eq i64 %10, 0 - br i1 %11, label %12, label %13 - -12: ; preds = %6 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.6.0.copyload) ] + %7 = load i64, ptr %.sroa.6.0.copyload, align 8, !noalias !636, !noundef !4 + %8 = icmp ne i64 %7, 0 + tail call void @llvm.assume(i1 %8) + %9 = add i64 %7, 1 + store i64 %9, ptr %.sroa.6.0.copyload, align 8, !noalias !636 + %10 = icmp eq i64 %9, 0 + br i1 %10, label %11, label %12 + +11: ; preds = %6 tail call void @llvm.trap() unreachable @@ -4511,38 +4510,37 @@ default.unreachable1.i: ; preds = %2 br i1 %15, label %"_ZN4core3ptr43drop_in_place$LT$syn..parse..Unexpected$GT$17h5bf2b0fced757446E.llvm.858133952616893155.exit", label %16 16: ; preds = %13 - %17 = icmp ne ptr %.sroa.44.0.copyload.pre, null - tail call void @llvm.assume(i1 %17) - %18 = load i64, ptr %.sroa.44.0.copyload.pre, align 8, !noalias !637, !noundef !4 - %19 = add i64 %18, -1 - store i64 %19, ptr %.sroa.44.0.copyload.pre, align 8, !noalias !637 - %20 = icmp eq i64 %19, 0 - br i1 %20, label %21, label %"_ZN4core3ptr43drop_in_place$LT$syn..parse..Unexpected$GT$17h5bf2b0fced757446E.llvm.858133952616893155.exit" - -21: ; preds = %16 - %22 = getelementptr inbounds nuw i8, ptr %.sroa.44.0.copyload.pre, i64 16 - invoke void @"_ZN4core3ptr67drop_in_place$LT$core..cell..Cell$LT$syn..parse..Unexpected$GT$$GT$17haf2750eab111b2d0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %22) - to label %.noexc unwind label %28 - -.noexc: ; preds = %21 - %23 = getelementptr inbounds nuw i8, ptr %.sroa.44.0.copyload.pre, i64 8 - %24 = load i64, ptr %23, align 8, !noalias !637, !noundef !4 - %25 = add i64 %24, -1 - store i64 %25, ptr %23, align 8, !noalias !637 - %26 = icmp eq i64 %25, 0 - br i1 %26, label %27, label %"_ZN4core3ptr43drop_in_place$LT$syn..parse..Unexpected$GT$17h5bf2b0fced757446E.llvm.858133952616893155.exit" - -27: ; preds = %.noexc + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.44.0.copyload.pre) ] + %16 = load i64, ptr %.sroa.44.0.copyload.pre, align 8, !noalias !637, !noundef !4 + %17 = add i64 %16, -1 + store i64 %17, ptr %.sroa.44.0.copyload.pre, align 8, !noalias !637 + %18 = icmp eq i64 %17, 0 + br i1 %18, label %19, label %"_ZN4core3ptr43drop_in_place$LT$syn..parse..Unexpected$GT$17h5bf2b0fced757446E.llvm.858133952616893155.exit" + +27: ; preds = %15 + %20 = getelementptr inbounds nuw i8, ptr %.sroa.44.0.copyload.pre, i64 16 + invoke void @"_ZN4core3ptr67drop_in_place$LT$core..cell..Cell$LT$syn..parse..Unexpected$GT$$GT$17haf2750eab111b2d0E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %20) + to label %.noexc unwind label %26 + +.noexc: ; preds = %19 + %21 = getelementptr inbounds nuw i8, ptr %.sroa.44.0.copyload.pre, i64 8 + %22 = load i64, ptr %21, align 8, !noalias !637, !noundef !4 + %23 = add i64 %22, -1 + store i64 %23, ptr %21, align 8, !noalias !637 + %24 = icmp eq i64 %23, 0 + br i1 %24, label %25, label %"_ZN4core3ptr43drop_in_place$LT$syn..parse..Unexpected$GT$17h5bf2b0fced757446E.llvm.858133952616893155.exit" + +25: ; preds = %.noexc tail call void @__rust_dealloc(ptr noundef nonnull %.sroa.44.0.copyload.pre, i64 noundef 32, i64 noundef 8) #22, !noalias !644 br label %"_ZN4core3ptr43drop_in_place$LT$syn..parse..Unexpected$GT$17h5bf2b0fced757446E.llvm.858133952616893155.exit" -28: ; preds = %21 +28: ; preds = %19 %29 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr43drop_in_place$LT$syn..parse..Unexpected$GT$17h5bf2b0fced757446E.llvm.858133952616893155"(ptr noalias noundef nonnull align 8 dereferenceable(16) %3) #25 - to label %32 unwind label %30 + to label %30 unwind label %30 -"_ZN4core3ptr43drop_in_place$LT$syn..parse..Unexpected$GT$17h5bf2b0fced757446E.llvm.858133952616893155.exit": ; preds = %.thread, %27, %.noexc, %16, %13 +"_ZN4core3ptr43drop_in_place$LT$syn..parse..Unexpected$GT$17h5bf2b0fced757446E.llvm.858133952616893155.exit": ; preds = %.thread, %25, %.noexc, %16, %13 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %3, i64 16, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %3) ret void 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/3zlxqcm5fmm23kyz1ebfkwze6.ll b/bench/tikv-rs/optimized/3zlxqcm5fmm23kyz1ebfkwze6.ll index d7e220c87ef..31d2d960ec5 100644 --- a/bench/tikv-rs/optimized/3zlxqcm5fmm23kyz1ebfkwze6.ll +++ b/bench/tikv-rs/optimized/3zlxqcm5fmm23kyz1ebfkwze6.ll @@ -365,9 +365,11 @@ _ZN4core3fmt9Formatter9write_fmt17h3bce49d3b5fbe92dE.exit: ; preds = %2 store ptr %8, ptr %7, align 8 %.sroa.47.0..sroa_idx = getelementptr inbounds nuw i8, ptr %7, i64 8 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h04c803757d9ea0daE", ptr %.sroa.47.0..sroa_idx, align 8 - %.val9 = load ptr, ptr %1, align 8, !nonnull !12, !noundef !12 + %.val9 = load ptr, ptr %1, align 8 %12 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val10 = load ptr, ptr %12, align 8, !nonnull !12, !noundef !12 + %.val10 = load ptr, ptr %12, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val9) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val10) ] call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !56 store ptr @anon.6061f5929ed42ce63391d20b5e0ca064.39, ptr %4, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -391,9 +393,11 @@ _ZN4core3fmt9Formatter9write_fmt17h3bce49d3b5fbe92dE.exit15: ; preds = %2 store ptr %6, ptr %5, align 8 %.sroa.43.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h95043d71ffe0904bE", ptr %.sroa.43.0..sroa_idx, align 8 - %.val = load ptr, ptr %1, align 8, !nonnull !12, !noundef !12 + %.val = load ptr, ptr %1, align 8 %14 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val8 = load ptr, ptr %14, align 8, !nonnull !12, !noundef !12 + %.val8 = load ptr, ptr %14, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val8) ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !59 store ptr @anon.6061f5929ed42ce63391d20b5e0ca064.39, ptr %3, align 8 %.sroa.517.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 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..2246a28ef00 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 } diff --git a/bench/tokio-rs/optimized/4mr1mvhll2ekuv31.ll b/bench/tokio-rs/optimized/4mr1mvhll2ekuv31.ll index dc3e563355d..ddbcb3e6ab3 100644 --- a/bench/tokio-rs/optimized/4mr1mvhll2ekuv31.ll +++ b/bench/tokio-rs/optimized/4mr1mvhll2ekuv31.ll @@ -184,10 +184,9 @@ define hidden void @"_ZN140_$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A to label %.noexc12.i unwind label %85 .noexc12.i: ; preds = %78 - %80 = icmp ne ptr %.sroa.027.sroa.5.0.copyload.i, null - call void @llvm.assume(i1 %80) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.027.sroa.5.0.copyload.i) ] invoke void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hf5c68628322ac647E.llvm.6873407450725468253"(ptr noundef nonnull %.sroa.027.sroa.5.0.copyload.i, ptr noundef %.sroa.027.sroa.6.0.copyload.i, ptr noalias noundef nonnull align 8 dereferenceable(32) %4) - to label %81 unwind label %85 + to label %80 unwind label %85 81: ; preds = %.noexc12.i call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !62 @@ -216,10 +215,9 @@ define hidden void @"_ZN140_$LT$alloc..collections..vec_deque..VecDeque$LT$T$C$A to label %.noexc24.i unwind label %85, !noalias !30 .noexc24.i: ; preds = %82 - %83 = icmp ne ptr %.sroa.0.sroa.5.0.copyload.i, null - call void @llvm.assume(i1 %83) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.0.sroa.5.0.copyload.i) ] invoke void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hf5c68628322ac647E.llvm.6873407450725468253"(ptr noundef nonnull %.sroa.0.sroa.5.0.copyload.i, ptr noundef %.sroa.0.sroa.6.0.copyload.i, ptr noalias noundef nonnull align 8 dereferenceable(32) %3) - to label %84 unwind label %85, !noalias !30 + to label %82 unwind label %85, !noalias !30 84: ; preds = %.noexc24.i call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !77 diff --git a/bench/tokio-rs/optimized/qqq7nw5h0oohsoh.ll b/bench/tokio-rs/optimized/qqq7nw5h0oohsoh.ll index e3a9f34ded6..251c4f95b4d 100644 --- a/bench/tokio-rs/optimized/qqq7nw5h0oohsoh.ll +++ b/bench/tokio-rs/optimized/qqq7nw5h0oohsoh.ll @@ -57,10 +57,8 @@ define hidden void @_ZN3std9panicking3try8do_catch17hb076c4d88da89025E.llvm.5480 6: ; preds = %2 %7 = extractvalue { ptr, ptr } %3, 0 %8 = extractvalue { ptr, ptr } %3, 1 - %9 = icmp ne ptr %7, null - tail call void @llvm.assume(i1 %9) - %10 = icmp ne ptr %8, 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 %8) ] store ptr %7, ptr %0, align 8 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %8, ptr %11, align 8 @@ -81,10 +79,8 @@ define hidden void @_ZN3std9panicking3try8do_catch17hb08f865dce84a07fE.llvm.5480 6: ; preds = %2 %7 = extractvalue { ptr, ptr } %3, 0 %8 = extractvalue { ptr, ptr } %3, 1 - %9 = icmp ne ptr %7, null - tail call void @llvm.assume(i1 %9) - %10 = icmp ne ptr %8, 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 %8) ] store ptr %7, ptr %0, align 8 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %8, ptr %11, align 8 diff --git a/bench/turborepo-rs/optimized/1cvlwe6zm1qaq81s6s5zko6gi.ll b/bench/turborepo-rs/optimized/1cvlwe6zm1qaq81s6s5zko6gi.ll index 12a46989347..869138acd7a 100644 --- a/bench/turborepo-rs/optimized/1cvlwe6zm1qaq81s6s5zko6gi.ll +++ b/bench/turborepo-rs/optimized/1cvlwe6zm1qaq81s6s5zko6gi.ll @@ -30,8 +30,10 @@ _ZN4core3fmt9Formatter9write_fmt17h7b1b66abcbe56eabE.exit: ; preds = %2 store ptr %7, ptr %8, align 8 %.sroa.43.0..sroa_idx = getelementptr inbounds nuw i8, ptr %8, i64 8 store ptr @_RNvXsR_NtCs1LoaDTb72WA_4core3fmtRNtNtCs68wO5nsWeTG_5alloc6string6StringNtB5_7Display3fmtCseUVAjF3xvPC_21turborepo_graph_utils, ptr %.sroa.43.0..sroa_idx, align 8 - %.val9 = load ptr, ptr %11, align 8, !nonnull !5, !noundef !5 - %.val10 = load ptr, ptr %12, align 8, !nonnull !5, !noundef !5 + %.val9 = load ptr, ptr %11, align 8 + %.val10 = load ptr, ptr %12, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val9) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val10) ] call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !6 store ptr @anon.b7d3d09f27a26dab8dbe7cd191086f5d.2, ptr %4, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -55,8 +57,10 @@ _ZN4core3fmt9Formatter9write_fmt17h7b1b66abcbe56eabE.exit15: ; preds = %2 store ptr %5, ptr %6, align 8 %.sroa.47.0..sroa_idx = getelementptr inbounds nuw i8, ptr %6, i64 8 store ptr @_RNvXsR_NtCs1LoaDTb72WA_4core3fmtRNtNtCs68wO5nsWeTG_5alloc6string6StringNtB5_7Display3fmtCseUVAjF3xvPC_21turborepo_graph_utils, ptr %.sroa.47.0..sroa_idx, align 8 - %.val = load ptr, ptr %11, align 8, !nonnull !5, !noundef !5 - %.val8 = load ptr, ptr %12, align 8, !nonnull !5, !noundef !5 + %.val = load ptr, ptr %11, align 8 + %.val8 = load ptr, ptr %12, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val8) ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !9 store ptr @anon.b7d3d09f27a26dab8dbe7cd191086f5d.4, ptr %3, align 8 %.sroa.517.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -90,8 +94,12 @@ declare void @llvm.lifetime.start.p0(ptr captures(none)) #1 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(ptr captures(none)) #1 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #2 + attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #2 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } !llvm.module.flags = !{!0, !1, !2} !llvm.ident = !{!3} diff --git a/bench/typst-rs/optimized/1ieizyrayutd063g.ll b/bench/typst-rs/optimized/1ieizyrayutd063g.ll index 2881b88f53a..d71712ce6d4 100644 --- a/bench/typst-rs/optimized/1ieizyrayutd063g.ll +++ b/bench/typst-rs/optimized/1ieizyrayutd063g.ll @@ -33,8 +33,7 @@ define hidden noundef nonnull ptr @_ZN3std2io5error5Error3new17h1b57fc4b74ea09c8 %5 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h23e3d73ccd62a191E"(i64 noundef %2, i1 noundef zeroext false), !noalias !5 %6 = extractvalue { i64, ptr } %5, 0 %7 = extractvalue { i64, ptr } %5, 1 - %8 = icmp ne ptr %7, null - tail call void @llvm.assume(i1 %8) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %7) ] tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %7, ptr nonnull readonly align 1 %1, i64 %2, i1 false) call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !5 store i64 %6, ptr %4, align 8, !noalias !5 @@ -58,7 +57,7 @@ define hidden noundef nonnull ptr @_ZN3std2io5error5Error3new17h1b57fc4b74ea09c8 %14 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr205drop_in_place$LT$$LT$alloc..boxed..Box$LT$dyn$u20$core..error..Error$u2b$core..marker..Send$u2b$core..marker..Sync$GT$$u20$as$u20$core..convert..From$LT$alloc..string..String$GT$$GT$..from..StringError$GT$17h8911977ba9debac0E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) #17 - to label %17 unwind label %15, !noalias !5 + to label %16 unwind label %15, !noalias !5 15: ; preds = %13 %16 = landingpad { ptr, i32 } @@ -675,8 +674,7 @@ _ZN3std2io5error5Error14is_interrupted17h17fdd2170cde44b1E.exit.i.i: ; preds = % %51 = call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h23e3d73ccd62a191E"(i64 noundef 26, i1 noundef zeroext false), !noalias !120 %52 = extractvalue { i64, ptr } %51, 0 %53 = extractvalue { i64, ptr } %51, 1 - %54 = icmp ne ptr %53, null - call void @llvm.assume(i1 %54) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %53) ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(26) %53, ptr noundef nonnull readonly align 1 dereferenceable(26) @anon.d51a752cba16742a43ff4c0cbaf1b4ab.15, i64 26, i1 false) call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !120 store i64 %52, ptr %3, align 8, !noalias !120 @@ -700,7 +698,7 @@ _ZN3std2io5error5Error14is_interrupted17h17fdd2170cde44b1E.exit.i.i: ; preds = % %60 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr205drop_in_place$LT$$LT$alloc..boxed..Box$LT$dyn$u20$core..error..Error$u2b$core..marker..Send$u2b$core..marker..Sync$GT$$u20$as$u20$core..convert..From$LT$alloc..string..String$GT$$GT$..from..StringError$GT$17h8911977ba9debac0E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %3) #17 - to label %63 unwind label %61, !noalias !120 + to label %62 unwind label %61, !noalias !120 61: ; preds = %59 %62 = landingpad { ptr, i32 } diff --git a/bench/typst-rs/optimized/1jbfz0m1n0wz4a3e.ll b/bench/typst-rs/optimized/1jbfz0m1n0wz4a3e.ll index 7bcf0656709..0475f0f5b2d 100644 --- a/bench/typst-rs/optimized/1jbfz0m1n0wz4a3e.ll +++ b/bench/typst-rs/optimized/1jbfz0m1n0wz4a3e.ll @@ -51,10 +51,8 @@ define hidden void @_ZN3std9panicking3try8do_catch17h40dc9d9f8747734dE.llvm.1261 6: ; preds = %2 %7 = extractvalue { ptr, ptr } %3, 0 %8 = extractvalue { ptr, ptr } %3, 1 - %9 = icmp ne ptr %7, null - tail call void @llvm.assume(i1 %9) - %10 = icmp ne ptr %8, 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 %9) ] store ptr %7, ptr %0, align 8 %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %8, ptr %11, align 8 @@ -658,6 +656,7 @@ define hidden void @_ZN5alloc3str17join_generic_copy17h716d1eb8bfde6aaaE(ptr noa 120: ; preds = %.lr.ph337 %121 = sub nuw i64 %.sroa.27.0336, %4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.016.0335) ] call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %.sroa.016.0335, ptr nonnull readonly align 1 %3, i64 %4, i1 false), !alias.scope !247, !noalias !251 %.not.i.i186 = icmp ugt i64 %.val3.i173, %121 br i1 %.not.i.i186, label %122, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17h30c4e47b29154378E.exit194" @@ -771,7 +770,7 @@ define hidden void @"_ZN6flate27deflate7bufread23DeflateDecoder$LT$R$GT$3new17hd %.sroa.5.0.copyload = load i64, ptr %.sroa.5.0..sroa_idx, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %3) invoke void @_ZN6flate23mem10Decompress3new17hdbcdc60c29433706E(ptr noalias noundef nonnull sret({ { ptr, i64, i64 } }) align 8 captures(none) dereferenceable(24) %3, i1 noundef zeroext false) - to label %8 unwind label %4 + to label %7 unwind label %4 4: ; preds = %2 %5 = landingpad { ptr, i32 } @@ -780,8 +779,7 @@ define hidden void @"_ZN6flate27deflate7bufread23DeflateDecoder$LT$R$GT$3new17hd br i1 %6, label %"_ZN4core3ptr73drop_in_place$LT$flate2..bufreader..BufReader$LT$$RF$$u5b$u8$u5d$$GT$$GT$17he16d6e56e8d2480fE.exit", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.llvm.9341850390877611223.exit.i.i.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h613b0af57122470fE.llvm.9341850390877611223.exit.i.i.i": ; preds = %4 - %7 = icmp ne ptr %.sroa.4.0.copyload, null - tail call void @llvm.assume(i1 %7) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.4.0.copyload) ] tail call void @__rust_dealloc(ptr noundef nonnull %.sroa.4.0.copyload, i64 noundef %.sroa.5.0.copyload, i64 noundef 1) #35, !noalias !263 br label %"_ZN4core3ptr73drop_in_place$LT$flate2..bufreader..BufReader$LT$$RF$$u5b$u8$u5d$$GT$$GT$17he16d6e56e8d2480fE.exit" diff --git a/bench/typst-rs/optimized/1ln40ib1b6suqgfg.ll b/bench/typst-rs/optimized/1ln40ib1b6suqgfg.ll index 0d56d155d9a..b56867e8fb5 100644 --- a/bench/typst-rs/optimized/1ln40ib1b6suqgfg.ll +++ b/bench/typst-rs/optimized/1ln40ib1b6suqgfg.ll @@ -991,7 +991,7 @@ _ZN3std3sys3pal4unix5locks11futex_mutex5Mutex4lock17hc0ad0852dc2618a8E.llvm.1041 unreachable common.resume: ; preds = %54, %20 - %common.resume.op = phi { ptr, i32 } [ %21, %20 ], [ %55, %54 ] + %common.resume.op = phi { ptr, i32 } [ %21, %20 ], [ %55, %53 ] resume { ptr, i32 } %common.resume.op "_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h1c671e24483864ceE.llvm.10413092223612615927.exit": ; preds = %"_ZN3std4sync5mutex19MutexGuard$LT$T$GT$3new17hde9bcae33d6d2902E.exit" @@ -1028,25 +1028,24 @@ common.resume: ; preds = %54, %20 %41 = getelementptr inbounds nuw i8, ptr %4, i64 20 store float 0.000000e+00, ptr %41, align 4, !noalias !66 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !66 - %42 = icmp ne ptr %.sroa.5.0.copyload, null - tail call void @llvm.assume(i1 %42) - %43 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.copyload, i64 8 - %44 = load ptr, ptr %43, align 8, !noalias !66, !nonnull !17, !noundef !17 - %45 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.copyload, i64 16 - %46 = load i64, ptr %45, align 8, !noalias !66, !noundef !17 - %47 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.copyload, i64 24 - %48 = load i32, ptr %47, align 8, !range !69, !noalias !66, !noundef !17 - %49 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.copyload, i64 28 - %50 = load i32, ptr %49, align 4, !range !69, !noalias !66, !noundef !17 - store ptr %44, ptr %3, align 8, !noalias !66 - %51 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i64 %46, ptr %51, align 8, !noalias !66 - %52 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store i32 %48, ptr %52, align 8, !noalias !66 - %53 = getelementptr inbounds nuw i8, ptr %3, i64 20 - store i32 %50, ptr %53, align 4, !noalias !66 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.5.0.copyload) ] + %42 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.copyload, i64 8 + %43 = load ptr, ptr %42, align 8, !noalias !66, !nonnull !17, !noundef !17 + %44 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.copyload, i64 16 + %45 = load i64, ptr %44, align 8, !noalias !66, !noundef !17 + %46 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.copyload, i64 24 + %47 = load i32, ptr %46, align 8, !range !69, !noalias !66, !noundef !17 + %48 = getelementptr inbounds nuw i8, ptr %.sroa.5.0.copyload, i64 28 + %49 = load i32, ptr %48, align 4, !range !69, !noalias !66, !noundef !17 + store ptr %43, ptr %3, align 8, !noalias !66 + %50 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store i64 %45, ptr %50, align 8, !noalias !66 + %51 = getelementptr inbounds nuw i8, ptr %3, i64 16 + store i32 %47, ptr %51, align 8, !noalias !66 + %52 = getelementptr inbounds nuw i8, ptr %3, i64 20 + store i32 %49, ptr %52, align 4, !noalias !66 invoke void @_ZN5resvg6render17hc4f11ff6ab987cd9E(ptr noalias noundef nonnull readonly align 8 dereferenceable(240) %26, ptr noalias noundef nonnull align 4 captures(none) dereferenceable(24) %4, ptr noalias noundef nonnull align 8 dereferenceable(24) %3) - to label %56 unwind label %54 + to label %55 unwind label %54 54: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h1c671e24483864ceE.llvm.10413092223612615927.exit" %55 = landingpad { ptr, i32 } diff --git a/bench/velox/optimized/SignatureBinder.ll b/bench/velox/optimized/SignatureBinder.ll index c27737dc73b..a8023ada546 100644 --- a/bench/velox/optimized/SignatureBinder.ll +++ b/bench/velox/optimized/SignatureBinder.ll @@ -854,12 +854,10 @@ invoke.cont119.thread: ; preds = %sw.bb115 land.rhs.i: ; preds = %sw.bb115 call void @llvm.experimental.noalias.scope.decl(metadata !7) call void @llvm.experimental.noalias.scope.decl(metadata !10) - %62 = icmp ne ptr %actualType.val, null - call void @llvm.assume(i1 %62) - %63 = call ptr @__dynamic_cast(ptr nonnull %actualType.val, ptr nonnull @_ZTIN8facebook5velox4TypeE, ptr nonnull @_ZTIN8facebook5velox7RowTypeE, i64 0) #24, !noalias !13 - %tobool.not.i.i.i = icmp ne ptr %63, null - call void @llvm.assume(i1 %tobool.not.i.i.i) - store ptr %63, ptr %ref.tmp.i, align 8, !alias.scope !13 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %actualType.val) ] + %62 = call ptr @__dynamic_cast(ptr nonnull %actualType.val, ptr nonnull @_ZTIN8facebook5velox4TypeE, ptr nonnull @_ZTIN8facebook5velox7RowTypeE, i64 0) #24, !noalias !13 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %62) ] + store ptr %62, ptr %ref.tmp.i, align 8, !alias.scope !13 store ptr %actualType.val32, ptr %_M_refcount.i.i.i.i.i, align 8, !alias.scope !13 %cmp.not.i.i.i.i.i.i = icmp eq ptr %actualType.val32, null br i1 %cmp.not.i.i.i.i.i.i, label %_ZN8facebook5velox9asRowTypeERKSt10shared_ptrIKNS0_4TypeEE.exit.i, label %if.then.i.i.i.i.i.i @@ -882,7 +880,7 @@ if.else.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i br label %_ZN8facebook5velox9asRowTypeERKSt10shared_ptrIKNS0_4TypeEE.exit.i _ZN8facebook5velox9asRowTypeERKSt10shared_ptrIKNS0_4TypeEE.exit.i: ; preds = %if.else.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i, %land.rhs.i - %67 = phi ptr [ %63, %land.rhs.i ], [ %63, %if.then.i.i.i.i.i.i.i.i ], [ %.pre.i, %if.else.i.i.i.i.i.i.i.i ] + %67 = phi ptr [ %62, %land.rhs.i ], [ %62, %if.then.i.i.i.i.i.i.i.i ], [ %.pre.i, %if.else.i.i.i.i.i.i.i.i ] %names_.i.i = getelementptr inbounds nuw i8, ptr %67, i64 24 %_M_finish.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %67, i64 32 %68 = load ptr, ptr %_M_finish.i.i.i.i.i, align 8 @@ -940,7 +938,7 @@ if.then.i.i.i.i.i96: ; preds = %if.then.i.i.i4.i %vtable.i.i.i.i.i = load ptr, ptr %71, align 8 %vfn.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i.i, i64 16 %74 = load ptr, ptr %vfn.i.i.i.i.i, align 8 - call void %74(ptr noundef nonnull align 8 dereferenceable(16) %71) #24 + call void %73(ptr noundef nonnull align 8 dereferenceable(16) %71) #24 br label %if.end8.sink.split.i.i.i.i.i if.end.i.i.i.i.i: ; preds = %if.then.i.i.i4.i @@ -966,7 +964,7 @@ if.then7.i.i.i.i.i: ; preds = %_ZN9__gnu_cxx27__ex %vtable.i.i.i.i.i.i.i = load ptr, ptr %71, align 8 %vfn.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %vtable.i.i.i.i.i.i.i, i64 16 %77 = load ptr, ptr %vfn.i.i.i.i.i.i.i, align 8 - call void %77(ptr noundef nonnull align 8 dereferenceable(16) %71) #24 + call void %76(ptr noundef nonnull align 8 dereferenceable(16) %71) #24 %_M_weak_count.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %71, i64 12 %78 = load i8, ptr @__libc_single_threaded, align 1 %tobool.i.i.not.i.i.i.i.i.i.i = icmp eq i8 %78, 0 @@ -991,7 +989,7 @@ if.end8.sink.split.i.i.i.i.i: ; preds = %_ZN9__gnu_cxx27__ex %vtable2.i.i.i.i.i.i.i = load ptr, ptr %71, align 8 %vfn3.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %vtable2.i.i.i.i.i.i.i, i64 24 %81 = load ptr, ptr %vfn3.i.i.i.i.i.i.i, align 8 - call void %81(ptr noundef nonnull align 8 dereferenceable(16) %71) #24 + call void %80(ptr noundef nonnull align 8 dereferenceable(16) %71) #24 br label %invoke.cont119 lpad.i93: ; preds = %if.then.i.i.i.i92 diff --git a/bench/velox/optimized/SsdFile.ll b/bench/velox/optimized/SsdFile.ll index 7bfc98e31f2..98afb167338 100644 --- a/bench/velox/optimized/SsdFile.ll +++ b/bench/velox/optimized/SsdFile.ll @@ -2143,6 +2143,7 @@ if.end20.i: ; preds = %while.end.i br i1 %exitcond.not, label %cleanup27.critedge, label %call6.i.noexc, !llvm.loop !15 cleanup: ; preds = %call11.i.noexc + call void @llvm.assume(i1 true) [ "nonnull"(ptr %8) ] %second = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 24 %18 = load i64, ptr %second, align 8 %regionPins_.i = getelementptr inbounds nuw i8, ptr %this, i64 192 @@ -2301,7 +2302,7 @@ call11.i.noexc: ; preds = %while.cond.i %12 = load i64, ptr %id_.i2.i.i.i, align 8 %cmp5.i.i.i = icmp eq i64 %key.coerce0, %12 %13 = select i1 %cmp.i.i.i59, i1 %cmp5.i.i.i, i1 false - br i1 %13, label %call6.i.noexc124, label %while.cond.i, !llvm.loop !14 + br i1 %13, label %invoke.cont8, label %while.cond.i, !llvm.loop !14 while.end.i: ; preds = %while.cond.i %cmp17.i = icmp eq i8 %8, 0 @@ -2313,6 +2314,10 @@ if.end20.i: ; preds = %while.end.i %exitcond.not = icmp eq i64 %tries.i.0112, %conv.i br i1 %exitcond.not, label %if.then.i.i.i95, label %call6.i.noexc, !llvm.loop !15 +invoke.cont8: ; preds = %call11.i.noexc + call void @llvm.assume(i1 true) [ "nonnull"(ptr %4) ] + br label %call6.i.noexc124 + lpad: ; preds = %if.then.i.i.i %14 = landingpad { ptr, i32 } cleanup @@ -2324,9 +2329,9 @@ lpad4: ; preds = %_ZNK5folly3f146deta %call1.i.i.i.i63 = call noundef i32 @pthread_rwlock_unlock(ptr noundef nonnull align 8 dereferenceable(56) %mutex_) #36 br label %ehcleanup -call6.i.noexc124: ; preds = %call11.i.noexc, %if.end20.i113 - %index.i85.0116 = phi i64 [ %add.i114, %if.end20.i113 ], [ %add.i52, %call11.i.noexc ] - %tries.i88.0115 = phi i64 [ %inc.i115, %if.end20.i113 ], [ 0, %call11.i.noexc ] +call6.i.noexc124: ; preds = %invoke.cont8, %if.end20.i113 + %index.i85.0116 = phi i64 [ %add.i52, %invoke.cont8 ], [ %add.i114, %if.end20.i113 ] + %tries.i88.0115 = phi i64 [ 0, %invoke.cont8 ], [ %inc.i115, %if.end20.i113 ] %and.i103 = and i64 %index.i85.0116, %conv.i %add.ptr.i104 = getelementptr inbounds nuw %"struct.folly::f14::detail::F14Chunk", ptr %3, i64 %and.i103 %16 = load <16 x i8>, ptr %add.ptr.i104, align 16 @@ -4075,6 +4080,7 @@ _ZN5folly3f146detail8F14ChunkIjE6setTagEmm.exit.i: ; preds = %if.end24.i invoke.cont128: ; preds = %while.body.i.i, %_ZN5folly3f146detail8F14ChunkIjE6setTagEmm.exit.i %idx.ext8.i.i.i.pre-phi = phi i64 [ %.pre294, %_ZN5folly3f146detail8F14ChunkIjE6setTagEmm.exit.i ], [ %idxprom.i.i, %while.body.i.i ] %97 = phi ptr [ %.pre292, %_ZN5folly3f146detail8F14ChunkIjE6setTagEmm.exit.i ], [ %59, %while.body.i.i ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %97) ] %add.ptr9.i.i.i = getelementptr inbounds nuw %"struct.std::pair", ptr %97, i64 %idx.ext8.i.i.i.pre-phi %second.i = getelementptr inbounds nuw i8, ptr %add.ptr9.i.i.i, i64 24 store i64 %or.i, ptr %second.i, align 8 @@ -5997,7 +6003,7 @@ call11.i.noexc: ; preds = %while.cond.i %arrayidx.i = getelementptr inbounds nuw %"struct.std::pair.228", ptr %3, i64 %idxprom.i %10 = load i64, ptr %arrayidx.i, align 8 %cmp.i.i21 = icmp eq i64 %id, %10 - br i1 %cmp.i.i21, label %cond.false, label %while.cond.i, !llvm.loop !51 + br i1 %cmp.i.i21, label %invoke.cont3, label %while.cond.i, !llvm.loop !51 while.end.i: ; preds = %while.cond.i %cmp17.i = icmp eq i8 %7, 0 @@ -6009,6 +6015,12 @@ if.end20.i: ; preds = %while.end.i %exitcond.not = icmp eq i64 %tries.i.052, %conv.i br i1 %exitcond.not, label %cond.true, label %call6.i.noexc, !llvm.loop !52 +invoke.cont3: ; preds = %call11.i.noexc + call void @llvm.assume(i1 true) [ "nonnull"(ptr %3) ] + %second = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 8 + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %second) + to label %cleanup.done unwind label %lpad8.body + cond.true: ; preds = %while.end.i, %if.end20.i call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp7) #36 %call.i26 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %agg.result) @@ -6028,16 +6040,11 @@ lpad8.body.thread: ; preds = %.noexc call void @_ZNSaIcED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %agg.result) #36 br label %cleanup.action14 -cond.false: ; preds = %call11.i.noexc - %second = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 8 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %agg.result, ptr noundef nonnull align 8 dereferenceable(32) %second) - to label %cleanup.done unwind label %lpad8.body - cleanup.action: ; preds = %.noexc call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp7) #36 br label %cleanup.done -cleanup.done: ; preds = %cond.false, %cleanup.action +cleanup.done: ; preds = %invoke.cont3, %cleanup.action %call1.i.i.i27 = call noundef i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %this) #36 ret void @@ -6046,7 +6053,7 @@ lpad8.body.thread48: ; preds = %call.i.noexc, %cond cleanup br label %cleanup.action14 -lpad8.body: ; preds = %cond.false +lpad8.body: ; preds = %invoke.cont3 %lpad.thr_comm.split-lp = landingpad { ptr, i32 } cleanup br label %ehcleanup @@ -7385,7 +7392,8 @@ invoke.cont108: ; preds = %if.then.i.invoke.co invoke.cont111: ; preds = %invoke.cont108 %55 = load ptr, ptr %rv.i.i, align 8, !noalias !78, !nonnull !33, !noundef !33 - %56 = load ptr, ptr %entries_, align 8, !noalias !78, !nonnull !33, !noundef !33 + %56 = load ptr, ptr %entries_, align 8, !noalias !78 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %56) ] %57 = load i32, ptr %55, align 4, !noalias !78 %idx.ext8.i.i.i = zext i32 %57 to i64 %add.ptr9.i.i.i = getelementptr inbounds nuw %"struct.std::pair", ptr %56, i64 %idx.ext8.i.i.i @@ -8396,8 +8404,7 @@ while.end.i: ; preds = %while.cond.i _ZNSt16allocator_traitsISaISt4pairIKN8facebook5velox5cache12FileCacheKeyENS3_6SsdRunEEEE7destroyIS7_EEvRS8_PT_.exit.i: ; preds = %while.body.i %arrayidx.i.i.i.i.le = getelementptr inbounds nuw %"union.std::aligned_storage<4, 4>::type", ptr %rawItems_.i.i, i64 %conv9.i store i32 %1, ptr %arrayidx.i.i.i.i.le, align 4 - %cmp11 = icmp ne ptr %0, null - call void @llvm.assume(i1 %cmp11) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %0) ] %arrayidx13 = getelementptr inbounds nuw %"struct.std::pair", ptr %0, i64 %conv.i21 %second.i.i = getelementptr inbounds nuw i8, ptr %arrayidx13, i64 24 store ptr null, ptr %arrayidx, align 8 @@ -10415,6 +10422,7 @@ for.body.i: ; preds = %_ZN5folly6detail18r %i.012.i = phi i64 [ %inc.i, %_ZNSt16allocator_traitsISaISt4pairIKN8facebook5velox5cache12FileCacheKeyENS3_6SsdRunEEEE7destroyIS7_EEvRS8_PT_.exit.i ], [ 0, %_ZN5folly6detail18rawOverAlignedImplISaIhELm16ELb1EEEvRKT_mRPv.exit.i ] %src.addr.011.i = phi ptr [ %incdec.ptr.i, %_ZNSt16allocator_traitsISaISt4pairIKN8facebook5velox5cache12FileCacheKeyENS3_6SsdRunEEEE7destroyIS7_EEvRS8_PT_.exit.i ], [ %0, %_ZN5folly6detail18rawOverAlignedImplISaIhELm16ELb1EEEvRKT_mRPv.exit.i ] %dst.addr.010.i = phi ptr [ %incdec.ptr4.i, %_ZNSt16allocator_traitsISaISt4pairIKN8facebook5velox5cache12FileCacheKeyENS3_6SsdRunEEEE7destroyIS7_EEvRS8_PT_.exit.i ], [ %add.ptr, %_ZN5folly6detail18rawOverAlignedImplISaIhELm16ELb1EEEvRKT_mRPv.exit.i ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %dst.addr.010.i) ] %second.i.i = getelementptr inbounds nuw i8, ptr %src.addr.011.i, i64 24 store ptr null, ptr %dst.addr.010.i, align 8 %id_.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %dst.addr.010.i, i64 8 @@ -10534,8 +10542,7 @@ for.body.i.i.i: ; preds = %_ZNSt16allocator_tr %i.012.i.i.i = phi i64 [ %inc.i.i.i, %_ZNSt16allocator_traitsISaISt4pairIKN8facebook5velox5cache12FileCacheKeyENS3_6SsdRunEEEE7destroyIS7_EEvRS8_PT_.exit.i.i.i ], [ 0, %if.then.i.i ] %src.addr.011.i.i.i = phi ptr [ %incdec.ptr.i.i.i, %_ZNSt16allocator_traitsISaISt4pairIKN8facebook5velox5cache12FileCacheKeyENS3_6SsdRunEEEE7destroyIS7_EEvRS8_PT_.exit.i.i.i ], [ %27, %if.then.i.i ] %dst.addr.010.i.i.i = phi ptr [ %incdec.ptr4.i.i.i, %_ZNSt16allocator_traitsISaISt4pairIKN8facebook5velox5cache12FileCacheKeyENS3_6SsdRunEEEE7destroyIS7_EEvRS8_PT_.exit.i.i.i ], [ %23, %if.then.i.i ] - %cmp2.i.i.i = icmp ne ptr %dst.addr.010.i.i.i, null - tail call void @llvm.assume(i1 %cmp2.i.i.i) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %dst.addr.010.i.i.i) ] %second.i.i.i.i = getelementptr inbounds nuw i8, ptr %src.addr.011.i.i.i, i64 24 store ptr null, ptr %dst.addr.010.i.i.i, align 8 %id_.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %dst.addr.010.i.i.i, i64 8 diff --git a/bench/wasmedge/optimized/function.ll b/bench/wasmedge/optimized/function.ll index 6e2dcdaec01..dc5590070c5 100644 --- a/bench/wasmedge/optimized/function.ll +++ b/bench/wasmedge/optimized/function.ll @@ -539,7 +539,7 @@ define linkonce_odr hidden void @_ZN8WasmEdge7Runtime8Instance14ModuleInstance17 %8 = alloca %"class.std::unique_ptr", align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !13) %9 = tail call noalias noundef nonnull dereferenceable(96) ptr @_Znwm(i64 noundef 96) #17, !noalias !13 - %10 = load ptr, ptr %3, align 8, !noalias !13, !nonnull !16, !noundef !16 + %10 = load ptr, ptr %3, align 8, !noalias !13 %11 = load i32, ptr %4, align 4, !noalias !13 %12 = load ptr, ptr %6, align 8, !noalias !13 %13 = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -560,6 +560,7 @@ define linkonce_odr hidden void @_ZN8WasmEdge7Runtime8Instance14ModuleInstance17 store ptr %16, ptr %21, align 8, !noalias !13 %22 = getelementptr inbounds nuw i8, ptr %9, i64 88 store i8 1, ptr %22, align 8, !noalias !13 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %10) ] store ptr %9, ptr %8, align 8, !alias.scope !13 %23 = getelementptr inbounds nuw i8, ptr %1, i64 8 %24 = load ptr, ptr %23, align 8 @@ -613,15 +614,15 @@ _ZNKSt6vectorISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14d .lr.ph.i.i.i.i: ; preds = %.noexc12, %.lr.ph.i.i.i.i %.012.i.i.i.i = phi ptr [ %47, %.lr.ph.i.i.i.i ], [ %43, %.noexc12 ] %.0911.i.i.i.i = phi ptr [ %46, %.lr.ph.i.i.i.i ], [ %31, %.noexc12 ] - tail call void @llvm.experimental.noalias.scope.decl(metadata !17) - tail call void @llvm.experimental.noalias.scope.decl(metadata !20) - %45 = load i64, ptr %.0911.i.i.i.i, align 8, !alias.scope !20, !noalias !17 - store i64 %45, ptr %.012.i.i.i.i, align 8, !alias.scope !17, !noalias !20 - store ptr null, ptr %.0911.i.i.i.i, align 8, !alias.scope !20, !noalias !17 + tail call void @llvm.experimental.noalias.scope.decl(metadata !16) + tail call void @llvm.experimental.noalias.scope.decl(metadata !19) + %45 = load i64, ptr %.0911.i.i.i.i, align 8, !alias.scope !19, !noalias !16 + store i64 %45, ptr %.012.i.i.i.i, align 8, !alias.scope !16, !noalias !19 + store ptr null, ptr %.0911.i.i.i.i, align 8, !alias.scope !19, !noalias !16 %46 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i.i, i64 8 %47 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 8 %.not.i.i.i.i10 = icmp eq ptr %46, %24 - br i1 %.not.i.i.i.i10, label %_ZNSt6vectorISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14default_deleteIS4_EESaIS7_EE11_S_relocateEPS7_SA_SA_RS8_.exit22.i, label %.lr.ph.i.i.i.i, !llvm.loop !22 + br i1 %.not.i.i.i.i10, label %_ZNSt6vectorISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14default_deleteIS4_EESaIS7_EE11_S_relocateEPS7_SA_SA_RS8_.exit22.i, label %.lr.ph.i.i.i.i, !llvm.loop !21 _ZNSt6vectorISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14default_deleteIS4_EESaIS7_EE11_S_relocateEPS7_SA_SA_RS8_.exit22.i: ; preds = %.lr.ph.i.i.i.i, %.noexc12 %.0.lcssa.i.i.i.i = phi ptr [ %43, %.noexc12 ], [ %47, %.lr.ph.i.i.i.i ] @@ -796,7 +797,7 @@ define linkonce_odr hidden void @_ZSt10__do_visitIvZNSt8__detail9__variant16_Var tail call void @_ZN8WasmEdge3AST11Instruction5resetEv(ptr noundef nonnull align 16 dereferenceable(25) %.05.i.i.i.i.i.i.i.i.i.i) #14 %10 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i.i.i.i.i.i.i, i64 32 %.not.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %10, %9 - br i1 %.not.i.i.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyIPN8WasmEdge3AST11InstructionES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i.i.i.i.i.i.i, label %.lr.ph.i.i.i.i.i.i.i.i.i.i, !llvm.loop !23 + br i1 %.not.i.i.i.i.i.i.i.i.i.i, label %_ZSt8_DestroyIPN8WasmEdge3AST11InstructionES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i.i.i.i.i.i.i, label %.lr.ph.i.i.i.i.i.i.i.i.i.i, !llvm.loop !22 _ZSt8_DestroyIPN8WasmEdge3AST11InstructionES2_EvT_S4_RSaIT0_E.exitthread-pre-split.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i.i.i.i %.pr.i.i.i.i.i.i.i = load ptr, ptr %6, align 8 @@ -1020,26 +1021,27 @@ declare void @llvm.memmove.p0.p0.i64(ptr writeonly captures(none), ptr readonly ; Function Attrs: mustprogress uwtable define linkonce_odr hidden void @_ZN8WasmEdge7Runtime8Instance14ModuleInstance17unsafeAddInstanceINS1_16FunctionInstanceEJPS2_RKjRKNS_3AST12FunctionTypeEN5cxx204spanIKSt4pairIjNS_7ValTypeEELm18446744073709551615EEENSD_IKNS8_11InstructionELm18446744073709551615EEEEEENSt9enable_ifIX11IsInstanceVIT_EEvE4typeERSt6vectorISt10unique_ptrISN_St14default_deleteISN_EESaISU_EERSQ_IPSN_SaISY_EEDpOT0_(ptr noundef nonnull align 8 dereferenceable(920) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 8 dereferenceable(72) %5, ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %7) local_unnamed_addr #0 comdat align 2 personality ptr @__gxx_personality_v0 { %9 = alloca %"class.std::unique_ptr", align 8 - tail call void @llvm.experimental.noalias.scope.decl(metadata !24) - %10 = tail call noalias noundef nonnull dereferenceable(96) ptr @_Znwm(i64 noundef 96) #17, !noalias !24 - %11 = load ptr, ptr %3, align 8, !noalias !24, !nonnull !16, !noundef !16 - %12 = load i32, ptr %4, align 4, !noalias !24 - %.sroa.0.0.copyload.i = load ptr, ptr %6, align 8, !noalias !24 + tail call void @llvm.experimental.noalias.scope.decl(metadata !23) + %10 = tail call noalias noundef nonnull dereferenceable(96) ptr @_Znwm(i64 noundef 96) #17, !noalias !23 + %11 = load ptr, ptr %3, align 8, !noalias !23 + %12 = load i32, ptr %4, align 4, !noalias !23 + %.sroa.0.0.copyload.i = load ptr, ptr %6, align 8, !noalias !23 %.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %6, i64 8 - %.sroa.2.0.copyload.i = load i64, ptr %.sroa.2.0..sroa_idx.i, align 8, !noalias !24 - %.sroa.0.sroa.0.0.copyload.i = load ptr, ptr %7, align 8, !noalias !24 + %.sroa.2.0.copyload.i = load i64, ptr %.sroa.2.0..sroa_idx.i, align 8, !noalias !23 + %.sroa.0.sroa.0.0.copyload.i = load ptr, ptr %7, align 8, !noalias !23 %.sroa.0.sroa.2.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %7, i64 8 - %.sroa.0.sroa.2.0.copyload.i = load i64, ptr %.sroa.0.sroa.2.0..sroa_idx.i, align 8, !noalias !24 - store ptr %11, ptr %10, align 8, !noalias !24 + %.sroa.0.sroa.2.0.copyload.i = load i64, ptr %.sroa.0.sroa.2.0..sroa_idx.i, align 8, !noalias !23 + store ptr %11, ptr %10, align 8, !noalias !23 %13 = getelementptr inbounds nuw i8, ptr %10, i64 16 - store i32 %12, ptr %13, align 8, !noalias !24 + store i32 %12, ptr %13, align 8, !noalias !23 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %11) ] %14 = getelementptr inbounds nuw i8, ptr %10, i64 24 - store ptr %5, ptr %14, align 8, !noalias !24 + store ptr %5, ptr %14, align 8, !noalias !23 %15 = getelementptr inbounds nuw i8, ptr %10, i64 32 - tail call void @_ZN8WasmEdge7Runtime8Instance16FunctionInstance12WasmFunctionC2EN5cxx204spanIKSt4pairIjNS_7ValTypeEELm18446744073709551615EEENS5_IKNS_3AST11InstructionELm18446744073709551615EEE(ptr noundef nonnull align 8 dereferenceable(57) %15, ptr %.sroa.0.0.copyload.i, i64 %.sroa.2.0.copyload.i, ptr %.sroa.0.sroa.0.0.copyload.i, i64 %.sroa.0.sroa.2.0.copyload.i) #14, !noalias !24 + tail call void @_ZN8WasmEdge7Runtime8Instance16FunctionInstance12WasmFunctionC2EN5cxx204spanIKSt4pairIjNS_7ValTypeEELm18446744073709551615EEENS5_IKNS_3AST11InstructionELm18446744073709551615EEE(ptr noundef nonnull align 8 dereferenceable(57) %15, ptr %.sroa.0.0.copyload.i, i64 %.sroa.2.0.copyload.i, ptr %.sroa.0.sroa.0.0.copyload.i, i64 %.sroa.0.sroa.2.0.copyload.i) #14, !noalias !23 %16 = getelementptr inbounds nuw i8, ptr %10, i64 88 - store i8 0, ptr %16, align 8, !noalias !24 - store ptr %10, ptr %9, align 8, !alias.scope !24 + store i8 0, ptr %16, align 8, !noalias !23 + store ptr %10, ptr %9, align 8, !alias.scope !23 %17 = getelementptr inbounds nuw i8, ptr %1, i64 8 %18 = load ptr, ptr %17, align 8 %19 = getelementptr inbounds nuw i8, ptr %1, i64 16 @@ -1092,15 +1094,15 @@ _ZNKSt6vectorISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14d .lr.ph.i.i.i.i: ; preds = %.noexc13, %.lr.ph.i.i.i.i %.012.i.i.i.i = phi ptr [ %41, %.lr.ph.i.i.i.i ], [ %37, %.noexc13 ] %.0911.i.i.i.i = phi ptr [ %40, %.lr.ph.i.i.i.i ], [ %25, %.noexc13 ] - tail call void @llvm.experimental.noalias.scope.decl(metadata !27) - tail call void @llvm.experimental.noalias.scope.decl(metadata !30) - %39 = load i64, ptr %.0911.i.i.i.i, align 8, !alias.scope !30, !noalias !27 - store i64 %39, ptr %.012.i.i.i.i, align 8, !alias.scope !27, !noalias !30 - store ptr null, ptr %.0911.i.i.i.i, align 8, !alias.scope !30, !noalias !27 + tail call void @llvm.experimental.noalias.scope.decl(metadata !26) + tail call void @llvm.experimental.noalias.scope.decl(metadata !29) + %39 = load i64, ptr %.0911.i.i.i.i, align 8, !alias.scope !29, !noalias !26 + store i64 %39, ptr %.012.i.i.i.i, align 8, !alias.scope !26, !noalias !29 + store ptr null, ptr %.0911.i.i.i.i, align 8, !alias.scope !29, !noalias !26 %40 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i.i, i64 8 %41 = getelementptr inbounds nuw i8, ptr %.012.i.i.i.i, i64 8 %.not.i.i.i.i11 = icmp eq ptr %40, %18 - br i1 %.not.i.i.i.i11, label %_ZNSt6vectorISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14default_deleteIS4_EESaIS7_EE11_S_relocateEPS7_SA_SA_RS8_.exit22.i, label %.lr.ph.i.i.i.i, !llvm.loop !22 + br i1 %.not.i.i.i.i11, label %_ZNSt6vectorISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14default_deleteIS4_EESaIS7_EE11_S_relocateEPS7_SA_SA_RS8_.exit22.i, label %.lr.ph.i.i.i.i, !llvm.loop !21 _ZNSt6vectorISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14default_deleteIS4_EESaIS7_EE11_S_relocateEPS7_SA_SA_RS8_.exit22.i: ; preds = %.lr.ph.i.i.i.i, %.noexc13 %.0.lcssa.i.i.i.i = phi ptr [ %37, %.noexc13 ], [ %41, %.lr.ph.i.i.i.i ] @@ -1267,7 +1269,7 @@ _ZNSt6vectorISt4pairIjN8WasmEdge7ValTypeEESaIS3_EE17_S_check_init_lenEmRKS4_.exi %30 = add i32 %29, %.07.i %31 = getelementptr inbounds nuw i8, ptr %.sroa.02.06.i, i64 12 %.not.i = icmp eq ptr %31, %scevgep.i.i - br i1 %.not.i, label %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPKSt4pairIjN8WasmEdge7ValTypeEESt6vectorIS5_SaIS5_EEEEjZNS3_7Runtime8Instance16FunctionInstance12WasmFunctionC1EN5cxx204spanIS6_Lm18446744073709551615EEENSH_IKNS3_3AST11InstructionELm18446744073709551615EEEEUljRKT_E_ET0_SN_SN_SR_T1_.exit, label %.lr.ph.i, !llvm.loop !32 + br i1 %.not.i, label %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPKSt4pairIjN8WasmEdge7ValTypeEESt6vectorIS5_SaIS5_EEEEjZNS3_7Runtime8Instance16FunctionInstance12WasmFunctionC1EN5cxx204spanIS6_Lm18446744073709551615EEENSH_IKNS3_3AST11InstructionELm18446744073709551615EEEEUljRKT_E_ET0_SN_SN_SR_T1_.exit, label %.lr.ph.i, !llvm.loop !31 _ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPKSt4pairIjN8WasmEdge7ValTypeEESt6vectorIS5_SaIS5_EEEEjZNS3_7Runtime8Instance16FunctionInstance12WasmFunctionC1EN5cxx204spanIS6_Lm18446744073709551615EEENSH_IKNS3_3AST11InstructionELm18446744073709551615EEEEUljRKT_E_ET0_SN_SN_SR_T1_.exit: ; preds = %.lr.ph.i, %.thread, %21 %.0.lcssa.i = phi i32 [ 0, %21 ], [ 0, %.thread ], [ %30, %.lr.ph.i ] @@ -1332,28 +1334,28 @@ _ZNSt12_Vector_baseIN8WasmEdge3AST11InstructionESaIS2_EE11_M_allocateEm.exit: ; .lr.ph.i.i.i: ; preds = %_ZNSt12_Vector_baseIN8WasmEdge3AST11InstructionESaIS2_EE11_M_allocateEm.exit, %.lr.ph.i.i.i %.012.i.i.i = phi ptr [ %31, %.lr.ph.i.i.i ], [ %19, %_ZNSt12_Vector_baseIN8WasmEdge3AST11InstructionESaIS2_EE11_M_allocateEm.exit ] %.0911.i.i.i = phi ptr [ %30, %.lr.ph.i.i.i ], [ %8, %_ZNSt12_Vector_baseIN8WasmEdge3AST11InstructionESaIS2_EE11_M_allocateEm.exit ] - tail call void @llvm.experimental.noalias.scope.decl(metadata !33) - tail call void @llvm.experimental.noalias.scope.decl(metadata !36) - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(25) %.012.i.i.i, ptr noundef nonnull align 16 dereferenceable(25) %.0911.i.i.i, i64 16, i1 false), !alias.scope !38 + tail call void @llvm.experimental.noalias.scope.decl(metadata !32) + tail call void @llvm.experimental.noalias.scope.decl(metadata !35) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(25) %.012.i.i.i, ptr noundef nonnull align 16 dereferenceable(25) %.0911.i.i.i, i64 16, i1 false), !alias.scope !37 %20 = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 16 %21 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i, i64 16 - %22 = load i32, ptr %21, align 16, !alias.scope !36, !noalias !33 - store i32 %22, ptr %20, align 16, !alias.scope !33, !noalias !36 + %22 = load i32, ptr %21, align 16, !alias.scope !35, !noalias !32 + store i32 %22, ptr %20, align 16, !alias.scope !32, !noalias !35 %23 = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 20 %24 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i, i64 20 - %25 = load i32, ptr %24, align 4, !alias.scope !36, !noalias !33 - store i32 %25, ptr %23, align 4, !alias.scope !33, !noalias !36 + %25 = load i32, ptr %24, align 4, !alias.scope !35, !noalias !32 + store i32 %25, ptr %23, align 4, !alias.scope !32, !noalias !35 %26 = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 24 %27 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i, i64 24 - %28 = load i8, ptr %27, align 8, !alias.scope !36, !noalias !33 - store i8 %28, ptr %26, align 8, !alias.scope !33, !noalias !36 + %28 = load i8, ptr %27, align 8, !alias.scope !35, !noalias !32 + store i8 %28, ptr %26, align 8, !alias.scope !32, !noalias !35 %29 = and i8 %28, -16 - store i8 %29, ptr %27, align 8, !alias.scope !36, !noalias !33 - tail call void @_ZN8WasmEdge3AST11Instruction5resetEv(ptr noundef nonnull align 16 dereferenceable(25) %.0911.i.i.i) #14, !noalias !33 + store i8 %29, ptr %27, align 8, !alias.scope !35, !noalias !32 + tail call void @_ZN8WasmEdge3AST11Instruction5resetEv(ptr noundef nonnull align 16 dereferenceable(25) %.0911.i.i.i) #14, !noalias !32 %30 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i, i64 32 %31 = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 32 %.not.i.i.i = icmp eq ptr %30, %15 - br i1 %.not.i.i.i, label %_ZNSt6vectorIN8WasmEdge3AST11InstructionESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit.loopexit, label %.lr.ph.i.i.i, !llvm.loop !39 + br i1 %.not.i.i.i, label %_ZNSt6vectorIN8WasmEdge3AST11InstructionESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit.loopexit, label %.lr.ph.i.i.i, !llvm.loop !38 _ZNSt6vectorIN8WasmEdge3AST11InstructionESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit.loopexit: ; preds = %.lr.ph.i.i.i %.pre = load ptr, ptr %0, align 8 @@ -1421,7 +1423,7 @@ _ZNSt12_Vector_baseIN8WasmEdge3AST11InstructionESaIS2_EE11_M_allocateEm.exit.i: %21 = getelementptr inbounds nuw i8, ptr %.0810.i.i.i.i.i, i64 32 %22 = getelementptr inbounds nuw i8, ptr %.011.i.i.i.i.i, i64 32 %.not.i.i.i.i.i = icmp eq ptr %21, %2 - br i1 %.not.i.i.i.i.i, label %_ZNSt6vectorIN8WasmEdge3AST11InstructionESaIS2_EE20_M_allocate_and_copyIPKS2_EEPS2_mT_S9_.exit.loopexit, label %.lr.ph.i.i.i.i.i, !llvm.loop !40 + br i1 %.not.i.i.i.i.i, label %_ZNSt6vectorIN8WasmEdge3AST11InstructionESaIS2_EE20_M_allocate_and_copyIPKS2_EEPS2_mT_S9_.exit.loopexit, label %.lr.ph.i.i.i.i.i, !llvm.loop !39 _ZNSt6vectorIN8WasmEdge3AST11InstructionESaIS2_EE20_M_allocate_and_copyIPKS2_EEPS2_mT_S9_.exit.loopexit: ; preds = %.lr.ph.i.i.i.i.i %.pre36 = load ptr, ptr %0, align 8 @@ -1439,7 +1441,7 @@ _ZNSt6vectorIN8WasmEdge3AST11InstructionESaIS2_EE20_M_allocate_and_copyIPKS2_EEP tail call void @_ZN8WasmEdge3AST11Instruction5resetEv(ptr noundef nonnull align 16 dereferenceable(25) %.05.i.i.i) #14 %26 = getelementptr inbounds nuw i8, ptr %.05.i.i.i, i64 32 %.not.i.i.i = icmp eq ptr %26, %25 - br i1 %.not.i.i.i, label %_ZSt8_DestroyIPN8WasmEdge3AST11InstructionES2_EvT_S4_RSaIT0_E.exitthread-pre-split, label %.lr.ph.i.i.i, !llvm.loop !23 + br i1 %.not.i.i.i, label %_ZSt8_DestroyIPN8WasmEdge3AST11InstructionES2_EvT_S4_RSaIT0_E.exitthread-pre-split, label %.lr.ph.i.i.i, !llvm.loop !22 _ZSt8_DestroyIPN8WasmEdge3AST11InstructionES2_EvT_S4_RSaIT0_E.exitthread-pre-split: ; preds = %.lr.ph.i.i.i %.pr = load ptr, ptr %0, align 8 @@ -1520,7 +1522,7 @@ _ZN8WasmEdge3AST11InstructionaSERKS1_.exit.i.i.i.i.i: ; preds = %45, %44 %55 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 32 %56 = add nsw i64 %.012.i.i.i.i.i, -1 %57 = icmp sgt i64 %.012.i.i.i.i.i, 1 - br i1 %57, label %44, label %_ZSt4copyIPKN8WasmEdge3AST11InstructionEPS2_ET0_T_S7_S6_.exit.loopexit, !llvm.loop !41 + br i1 %57, label %44, label %_ZSt4copyIPKN8WasmEdge3AST11InstructionEPS2_ET0_T_S7_S6_.exit.loopexit, !llvm.loop !40 _ZSt4copyIPKN8WasmEdge3AST11InstructionEPS2_ET0_T_S7_S6_.exit.loopexit: ; preds = %_ZN8WasmEdge3AST11InstructionaSERKS1_.exit.i.i.i.i.i %.pre = load ptr, ptr %35, align 8 @@ -1537,7 +1539,7 @@ _ZSt4copyIPKN8WasmEdge3AST11InstructionEPS2_ET0_T_S7_S6_.exit: ; preds = %_ZSt4c call void @_ZN8WasmEdge3AST11Instruction5resetEv(ptr noundef nonnull align 16 dereferenceable(25) %.05.i.i.i.i) #14 %59 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i, i64 32 %.not.i.i.i.i = icmp eq ptr %59, %58 - br i1 %.not.i.i.i.i, label %_ZSt8_DestroyIPN8WasmEdge3AST11InstructionES2_EvT_S4_RSaIT0_E.exit.i, label %.lr.ph.i.i.i.i, !llvm.loop !23 + br i1 %.not.i.i.i.i, label %_ZSt8_DestroyIPN8WasmEdge3AST11InstructionES2_EvT_S4_RSaIT0_E.exit.i, label %.lr.ph.i.i.i.i, !llvm.loop !22 _ZSt8_DestroyIPN8WasmEdge3AST11InstructionES2_EvT_S4_RSaIT0_E.exit.i: ; preds = %.lr.ph.i.i.i.i store ptr %.08.lcssa.i.i.i.i.i, ptr %35, align 8 @@ -1592,7 +1594,7 @@ _ZN8WasmEdge3AST11InstructionaSERKS1_.exit.i.i.i.i.i26: ; preds = %66, %65 %76 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i21, i64 32 %77 = add nsw i64 %.012.i.i.i.i.i20, -1 %78 = icmp sgt i64 %.012.i.i.i.i.i20, 1 - br i1 %78, label %65, label %_ZSt4copyIPKN8WasmEdge3AST11InstructionEPS2_ET0_T_S7_S6_.exit27.loopexit, !llvm.loop !41 + br i1 %78, label %65, label %_ZSt4copyIPKN8WasmEdge3AST11InstructionEPS2_ET0_T_S7_S6_.exit27.loopexit, !llvm.loop !40 _ZSt4copyIPKN8WasmEdge3AST11InstructionEPS2_ET0_T_S7_S6_.exit27.loopexit: ; preds = %_ZN8WasmEdge3AST11InstructionaSERKS1_.exit.i.i.i.i.i26 %.pre35 = load ptr, ptr %35, align 8 @@ -1610,7 +1612,7 @@ _ZSt4copyIPKN8WasmEdge3AST11InstructionEPS2_ET0_T_S7_S6_.exit27: ; preds = %_ZSt %80 = getelementptr inbounds nuw i8, ptr %.0810.i.i.i.i, i64 32 %81 = getelementptr inbounds nuw i8, ptr %.011.i.i.i.i, i64 32 %.not.i.i.i.i29 = icmp eq ptr %80, %2 - br i1 %.not.i.i.i.i29, label %_ZSt22__uninitialized_copy_aIPKN8WasmEdge3AST11InstructionEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit, label %.lr.ph.i.i.i.i28, !llvm.loop !40 + br i1 %.not.i.i.i.i29, label %_ZSt22__uninitialized_copy_aIPKN8WasmEdge3AST11InstructionEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit, label %.lr.ph.i.i.i.i28, !llvm.loop !39 _ZSt22__uninitialized_copy_aIPKN8WasmEdge3AST11InstructionEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit: ; preds = %.lr.ph.i.i.i.i28, %_ZSt4copyIPKN8WasmEdge3AST11InstructionEPS2_ET0_T_S7_S6_.exit27 %.0.lcssa.i.i.i.i = phi ptr [ %79, %_ZSt4copyIPKN8WasmEdge3AST11InstructionEPS2_ET0_T_S7_S6_.exit27 ], [ %81, %.lr.ph.i.i.i.i28 ] @@ -1829,29 +1831,28 @@ attributes #18 = { builtin nounwind } !13 = !{!14} !14 = distinct !{!14, !15, !"_ZSt11make_uniqueIN8WasmEdge7Runtime8Instance16FunctionInstanceEJPNS2_14ModuleInstanceERKjRKNS0_3AST12FunctionTypeENS0_6SymbolIvEEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_: argument 0"} !15 = distinct !{!15, !"_ZSt11make_uniqueIN8WasmEdge7Runtime8Instance16FunctionInstanceEJPNS2_14ModuleInstanceERKjRKNS0_3AST12FunctionTypeENS0_6SymbolIvEEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_"} -!16 = !{} -!17 = !{!18} -!18 = distinct !{!18, !19, !"_ZSt19__relocate_object_aISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14default_deleteIS4_EES7_SaIS7_EEvPT_PT0_RT1_: argument 0"} -!19 = distinct !{!19, !"_ZSt19__relocate_object_aISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14default_deleteIS4_EES7_SaIS7_EEvPT_PT0_RT1_"} -!20 = !{!21} -!21 = distinct !{!21, !19, !"_ZSt19__relocate_object_aISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14default_deleteIS4_EES7_SaIS7_EEvPT_PT0_RT1_: argument 1"} +!16 = !{!17} +!17 = distinct !{!17, !18, !"_ZSt19__relocate_object_aISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14default_deleteIS4_EES7_SaIS7_EEvPT_PT0_RT1_: argument 0"} +!18 = distinct !{!18, !"_ZSt19__relocate_object_aISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14default_deleteIS4_EES7_SaIS7_EEvPT_PT0_RT1_"} +!19 = !{!20} +!20 = distinct !{!20, !18, !"_ZSt19__relocate_object_aISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14default_deleteIS4_EES7_SaIS7_EEvPT_PT0_RT1_: argument 1"} +!21 = distinct !{!21, !8} !22 = distinct !{!22, !8} -!23 = distinct !{!23, !8} -!24 = !{!25} -!25 = distinct !{!25, !26, !"_ZSt11make_uniqueIN8WasmEdge7Runtime8Instance16FunctionInstanceEJPNS2_14ModuleInstanceERKjRKNS0_3AST12FunctionTypeEN5cxx204spanIKSt4pairIjNS0_7ValTypeEELm18446744073709551615EEENSD_IKNS8_11InstructionELm18446744073709551615EEEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_: argument 0"} -!26 = distinct !{!26, !"_ZSt11make_uniqueIN8WasmEdge7Runtime8Instance16FunctionInstanceEJPNS2_14ModuleInstanceERKjRKNS0_3AST12FunctionTypeEN5cxx204spanIKSt4pairIjNS0_7ValTypeEELm18446744073709551615EEENSD_IKNS8_11InstructionELm18446744073709551615EEEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_"} -!27 = !{!28} -!28 = distinct !{!28, !29, !"_ZSt19__relocate_object_aISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14default_deleteIS4_EES7_SaIS7_EEvPT_PT0_RT1_: argument 0"} -!29 = distinct !{!29, !"_ZSt19__relocate_object_aISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14default_deleteIS4_EES7_SaIS7_EEvPT_PT0_RT1_"} -!30 = !{!31} -!31 = distinct !{!31, !29, !"_ZSt19__relocate_object_aISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14default_deleteIS4_EES7_SaIS7_EEvPT_PT0_RT1_: argument 1"} -!32 = distinct !{!32, !8} -!33 = !{!34} -!34 = distinct !{!34, !35, !"_ZSt19__relocate_object_aIN8WasmEdge3AST11InstructionES2_SaIS2_EEvPT_PT0_RT1_: argument 0"} -!35 = distinct !{!35, !"_ZSt19__relocate_object_aIN8WasmEdge3AST11InstructionES2_SaIS2_EEvPT_PT0_RT1_"} -!36 = !{!37} -!37 = distinct !{!37, !35, !"_ZSt19__relocate_object_aIN8WasmEdge3AST11InstructionES2_SaIS2_EEvPT_PT0_RT1_: argument 1"} -!38 = !{!34, !37} +!23 = !{!24} +!24 = distinct !{!24, !25, !"_ZSt11make_uniqueIN8WasmEdge7Runtime8Instance16FunctionInstanceEJPNS2_14ModuleInstanceERKjRKNS0_3AST12FunctionTypeEN5cxx204spanIKSt4pairIjNS0_7ValTypeEELm18446744073709551615EEENSD_IKNS8_11InstructionELm18446744073709551615EEEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_: argument 0"} +!25 = distinct !{!25, !"_ZSt11make_uniqueIN8WasmEdge7Runtime8Instance16FunctionInstanceEJPNS2_14ModuleInstanceERKjRKNS0_3AST12FunctionTypeEN5cxx204spanIKSt4pairIjNS0_7ValTypeEELm18446744073709551615EEENSD_IKNS8_11InstructionELm18446744073709551615EEEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_"} +!26 = !{!27} +!27 = distinct !{!27, !28, !"_ZSt19__relocate_object_aISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14default_deleteIS4_EES7_SaIS7_EEvPT_PT0_RT1_: argument 0"} +!28 = distinct !{!28, !"_ZSt19__relocate_object_aISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14default_deleteIS4_EES7_SaIS7_EEvPT_PT0_RT1_"} +!29 = !{!30} +!30 = distinct !{!30, !28, !"_ZSt19__relocate_object_aISt10unique_ptrIN8WasmEdge7Runtime8Instance16FunctionInstanceESt14default_deleteIS4_EES7_SaIS7_EEvPT_PT0_RT1_: argument 1"} +!31 = distinct !{!31, !8} +!32 = !{!33} +!33 = distinct !{!33, !34, !"_ZSt19__relocate_object_aIN8WasmEdge3AST11InstructionES2_SaIS2_EEvPT_PT0_RT1_: argument 0"} +!34 = distinct !{!34, !"_ZSt19__relocate_object_aIN8WasmEdge3AST11InstructionES2_SaIS2_EEvPT_PT0_RT1_"} +!35 = !{!36} +!36 = distinct !{!36, !34, !"_ZSt19__relocate_object_aIN8WasmEdge3AST11InstructionES2_SaIS2_EEvPT_PT0_RT1_: argument 1"} +!37 = !{!33, !36} +!38 = distinct !{!38, !8} !39 = distinct !{!39, !8} !40 = distinct !{!40, !8} -!41 = distinct !{!41, !8} diff --git a/bench/wasmi-rs/optimized/4m6wfct6oj4zo483nw31mpwkd.ll b/bench/wasmi-rs/optimized/4m6wfct6oj4zo483nw31mpwkd.ll index ce48d9264cb..ebb1c168b23 100644 --- a/bench/wasmi-rs/optimized/4m6wfct6oj4zo483nw31mpwkd.ll +++ b/bench/wasmi-rs/optimized/4m6wfct6oj4zo483nw31mpwkd.ll @@ -797,8 +797,7 @@ define internal void @"_ZN145_$LT$wasmi..module..init_expr..ConstExpr..eval_with store i32 %7, ptr %4, align 4, !noalias !5 %9 = getelementptr inbounds nuw i8, ptr %4, i64 4 store i32 %8, ptr %9, align 4, !noalias !5 - %10 = icmp ne ptr %.val1, null - tail call void @llvm.assume(i1 %10) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1) ] call void @_ZN5wasmi6global6Global3get17h3534a01282cc003cE(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %0, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %.val1) call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !5 ret void @@ -818,8 +817,7 @@ define internal void @"_ZN145_$LT$wasmi..module..init_expr..ConstExpr..eval_with store i32 %7, ptr %4, align 4, !noalias !8 %9 = getelementptr inbounds nuw i8, ptr %4, i64 4 store i32 %8, ptr %9, align 4, !noalias !8 - %10 = icmp ne ptr %.val1, null - tail call void @llvm.assume(i1 %10) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1) ] call void @_ZN5wasmi6global6Global3get17h8c045997016d95b9E(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %0, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %.val1) call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !8 ret void @@ -838,8 +836,7 @@ define internal void @"_ZN145_$LT$wasmi..module..init_expr..ConstExpr..eval_with store i32 %7, ptr %4, align 4, !noalias !11 %9 = getelementptr inbounds nuw i8, ptr %4, i64 4 store i32 %8, ptr %9, align 4, !noalias !11 - %10 = icmp ne ptr %.val1, null - tail call void @llvm.assume(i1 %10) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val1) ] call void @_ZN5wasmi6global6Global3get17h8c045997016d95b9E(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %0, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %.val1) call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !11 ret void @@ -1864,8 +1861,9 @@ define internal void @"_ZN4core3ptr84drop_in_place$LT$alloc..boxed..Box$LT$$u5b$ br i1 %3, label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6d048680836a00deE.exit", label %4 4: ; preds = %1 - %.val = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 + %.val = load ptr, ptr %0, align 8 %5 = shl nuw nsw i64 %.val1, 4 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.val, i64 noundef range(i64 1, -9223372036854775808) %5, i64 noundef 8) #9 br label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6d048680836a00deE.exit" diff --git a/bench/wasmi-rs/optimized/cj4u4ke91rmwgbf3jeowkct8u.ll b/bench/wasmi-rs/optimized/cj4u4ke91rmwgbf3jeowkct8u.ll index de4c9f90e41..a1bd5c69bdd 100644 --- a/bench/wasmi-rs/optimized/cj4u4ke91rmwgbf3jeowkct8u.ll +++ b/bench/wasmi-rs/optimized/cj4u4ke91rmwgbf3jeowkct8u.ll @@ -235,7 +235,7 @@ switch.lookup: ret i1 %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 { ptr, i64 } @"_ZN5alloc3vec9into_iter21IntoIter$LT$T$C$A$GT$8as_slice17h7e130510a82b7404E"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(32) %0) unnamed_addr #1 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 %3 = load ptr, ptr %2, align 8, !nonnull !3, !noundef !3 @@ -442,6 +442,7 @@ define hidden void @_ZN5wasmi4func2ty8FuncType3new17h290989b8929d6290E(ptr dead_ 75: ; preds = %71 %76 = load i8, ptr %73, align 1, !range !11, !alias.scope !97, !noalias !100, !noundef !3 call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull align 1 %73, i64 noundef 1, i64 noundef 1) #16, !noalias !100 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.sroa.039.056.i.i.i) ] store i8 %76, ptr %.sroa.039.056.i.i.i, align 1, !noalias !69 %77 = icmp eq ptr %69, %62 br i1 %77, label %.loopexit.i.i, label %67 @@ -1108,7 +1109,7 @@ declare void @llvm.lifetime.end.p0(ptr captures(none)) #13 declare void @llvm.experimental.noalias.scope.decl(metadata) #14 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 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } attributes #4 = { cold minsize noreturn nounwind nonlazybind optsize uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } diff --git a/bench/wasmi-rs/optimized/enc4l3d98u1r0eousbwvhx9r5.ll b/bench/wasmi-rs/optimized/enc4l3d98u1r0eousbwvhx9r5.ll index 92efa61424d..1274acaf4d6 100644 --- a/bench/wasmi-rs/optimized/enc4l3d98u1r0eousbwvhx9r5.ll +++ b/bench/wasmi-rs/optimized/enc4l3d98u1r0eousbwvhx9r5.ll @@ -139,10 +139,9 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G ; Function Attrs: nonlazybind uwtable define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders9DebugList7entries17h9a9ed12681b3bdafE(ptr noalias noundef returned align 8 dereferenceable(16) %0, ptr noundef nonnull %1, ptr noundef readnone captures(address) %2) unnamed_addr #0 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 .lr.ph: ; preds = %3, %.lr.ph %.sroa.0.07 = phi ptr [ %7, %.lr.ph ], [ %1, %3 ] @@ -160,8 +159,7 @@ define hidden noundef nonnull align 8 dereferenceable(16) ptr @_ZN4core3fmt8buil ; Function Attrs: nounwind nonlazybind uwtable define internal fastcc void @"_ZN4core3ptr85drop_in_place$LT$alloc..boxed..Box$LT$wasmi_c_api..types..val..wasm_valtype_t$GT$$GT$17h62abf551547faf92E"(ptr %.0.val) unnamed_addr #1 personality ptr @rust_eh_personality { - %1 = icmp ne ptr %.0.val, null - tail call void @llvm.assume(i1 %1) + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.0.val) ] tail call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %.0.val, i64 noundef 1, i64 noundef 1) #19 ret void } diff --git a/bench/yara-x-rs/optimized/1x4vc187urox7v1altiglt5df.ll b/bench/yara-x-rs/optimized/1x4vc187urox7v1altiglt5df.ll index a10144e46c5..7c653938ad6 100644 --- a/bench/yara-x-rs/optimized/1x4vc187urox7v1altiglt5df.ll +++ b/bench/yara-x-rs/optimized/1x4vc187urox7v1altiglt5df.ll @@ -405,11 +405,12 @@ define hidden { i64, i1 } @"_ZN8indexmap3map4core25IndexMapCore$LT$K$C$V$GT$11in %8 = load i64, ptr %7, align 8, !noundef !3 %9 = getelementptr inbounds nuw i8, ptr %0, i64 24 tail call void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h2f06fe1fe25f2ea4E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %9, i64 noundef 1, ptr noalias noundef nonnull readonly align 8 %6, i64 noundef %8), !noalias !36 - %.val.i = load ptr, ptr %9, align 8, !alias.scope !39, !noalias !41, !nonnull !3, !noundef !3 + %.val.i = load ptr, ptr %9, align 8, !alias.scope !39, !noalias !41 %10 = getelementptr inbounds nuw i8, ptr %0, i64 32 %.val6.i = load i64, ptr %10, align 8, !alias.scope !39, !noalias !41, !noundef !3 %11 = lshr i64 %1, 57 %12 = trunc nuw nsw i64 %11 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.0.0.vec.insert.i.i.i = insertelement <16 x i8> poison, i8 %12, i64 0 %.sroa.0.15.vec.insert.i.i.i = shufflevector <16 x i8> %.sroa.0.0.vec.insert.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer br label %13 @@ -750,11 +751,12 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G %6 = getelementptr inbounds nuw i8, ptr %0, i64 32 %7 = call noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h93e1a022cfd99fc5E(ptr noalias noundef nonnull readonly align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %4) call void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h86883947e3aa4ed2E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef 1, ptr noalias noundef nonnull readonly align 1 %6), !noalias !91 - %.val.i = load ptr, ptr %0, align 8, !alias.scope !94, !noalias !96, !nonnull !3, !noundef !3 + %.val.i = load ptr, ptr %0, align 8, !alias.scope !94, !noalias !96 %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val6.i = load i64, ptr %8, align 8, !alias.scope !94, !noalias !96, !noundef !3 %9 = lshr i64 %7, 57 %10 = trunc nuw nsw i64 %9 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.0.0.vec.insert.i.i.i = insertelement <16 x i8> poison, i8 %10, i64 0 %.sroa.0.15.vec.insert.i.i.i = shufflevector <16 x i8> %.sroa.0.0.vec.insert.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer br label %11 @@ -883,11 +885,12 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G %6 = getelementptr inbounds nuw i8, ptr %0, i64 32 %7 = call noundef i64 @_ZN4core4hash11BuildHasher8hash_one17h776b0f4acc9083b9E(ptr noalias noundef nonnull readonly align 1 %6, ptr noalias noundef nonnull readonly align 4 dereferenceable(8) %4) call void @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hf42741ea64eb490bE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %0, i64 noundef 1, ptr noalias noundef nonnull readonly align 1 %6), !noalias !112 - %.val.i = load ptr, ptr %0, align 8, !alias.scope !115, !noalias !117, !nonnull !3, !noundef !3 + %.val.i = load ptr, ptr %0, align 8, !alias.scope !115, !noalias !117 %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val6.i = load i64, ptr %8, align 8, !alias.scope !115, !noalias !117, !noundef !3 %9 = lshr i64 %7, 57 %10 = trunc nuw nsw i64 %9 to i8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val.i) ] %.sroa.0.0.vec.insert.i.i.i = insertelement <16 x i8> poison, i8 %10, i64 0 %.sroa.0.15.vec.insert.i.i.i = shufflevector <16 x i8> %.sroa.0.0.vec.insert.i.i.i, <16 x i8> poison, <16 x i32> zeroinitializer br label %11 diff --git a/bench/yara-x-rs/optimized/8a9gse2aldv1htkmin7yrr01c.ll b/bench/yara-x-rs/optimized/8a9gse2aldv1htkmin7yrr01c.ll index becd0cc8d48..e135ccf9188 100644 --- a/bench/yara-x-rs/optimized/8a9gse2aldv1htkmin7yrr01c.ll +++ b/bench/yara-x-rs/optimized/8a9gse2aldv1htkmin7yrr01c.ll @@ -23,9 +23,11 @@ define hidden noundef zeroext i1 @"_ZN50_$LT$$RF$mut$u20$W$u20$as$u20$core..fmt. "_ZN57_$LT$core..fmt..Formatter$u20$as$u20$core..fmt..Write$GT$9write_fmt17h1a27f04a8335bbb3E.exit": %2 = alloca [48 x i8], align 8 %3 = load ptr, ptr %0, align 8, !nonnull !3, !align !5, !noundef !3 - %.val = load ptr, ptr %3, align 8, !nonnull !3, !noundef !3 + %.val = load ptr, ptr %3, align 8 %4 = getelementptr i8, ptr %3, i64 8 - %.val1 = load ptr, ptr %4, align 8, !nonnull !3, !noundef !3 + %.val1 = load ptr, ptr %4, 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 !6 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %2, ptr noundef nonnull readonly align 8 dereferenceable(48) %1, i64 48, i1 false) %5 = call noundef zeroext i1 @_ZN4core3fmt5write17h0a51fad3804c5e7cE(ptr noundef nonnull align 1 %.val, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %.val1, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %2), !noalias !6 @@ -61,9 +63,13 @@ declare void @llvm.lifetime.start.p0(ptr captures(none)) #2 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(ptr captures(none)) #2 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #3 + attributes #0 = { nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #3 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } !llvm.module.flags = !{!0, !1} !llvm.ident = !{!2} diff --git a/bench/yara-x-rs/optimized/a34pw7z58x6o14kcmfroib8up.ll b/bench/yara-x-rs/optimized/a34pw7z58x6o14kcmfroib8up.ll index 35fc2fc693b..311809c6e98 100644 --- a/bench/yara-x-rs/optimized/a34pw7z58x6o14kcmfroib8up.ll +++ b/bench/yara-x-rs/optimized/a34pw7z58x6o14kcmfroib8up.ll @@ -80,7 +80,7 @@ define internal void @"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.s br i1 %.not.i.i, label %5, label %_ZN4core3ops8function6FnOnce9call_once17h9f387718ae0c9090E.exit, !prof !5 5: ; preds = %2 - tail call void @_ZN4core6option13unwrap_failed17hec54eb4737b382caE(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.8078691d20a3a0f6955885fa8411f9c7.2) #12, !noalias !12 + tail call void @_ZN4core6option13unwrap_failed17hec54eb4737b382caE(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.8078691d20a3a0f6955885fa8411f9c7.2) #13, !noalias !12 unreachable _ZN4core3ops8function6FnOnce9call_once17h9f387718ae0c9090E.exit: ; preds = %2 @@ -467,9 +467,11 @@ _ZN4core3fmt9Formatter9write_fmt17h698142d355d1673aE.exit: ; preds = %2 store ptr @anon.8078691d20a3a0f6955885fa8411f9c7.13, ptr %5, align 8 %.sroa.43.0..sroa_idx = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr @"_ZN4core3fmt3num53_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$u32$GT$3fmt17hbec324fd4074f0c3E", ptr %.sroa.43.0..sroa_idx, align 8 - %.val = load ptr, ptr %1, align 8, !nonnull !3, !noundef !3 + %.val = load ptr, ptr %1, align 8 %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.val6 = load ptr, ptr %10, align 8, !nonnull !3, !noundef !3 + %.val6 = load ptr, ptr %10, align 8 + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val) ] + call void @llvm.assume(i1 true) [ "nonnull"(ptr %.val6) ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !19 store ptr @anon.8078691d20a3a0f6955885fa8411f9c7.14, ptr %3, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -674,6 +676,9 @@ declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr no ; Function Attrs: nonlazybind uwtable declare noundef zeroext i1 @_ZN4core3fmt5write17h0a51fad3804c5e7cE(ptr noundef nonnull align 1, ptr noalias noundef readonly align 8 dereferenceable(48), ptr noalias noundef align 8 captures(none) dereferenceable(48)) unnamed_addr #4 +; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #10 + ; Function Attrs: nonlazybind uwtable declare noundef zeroext i1 @"_ZN4core3fmt3num53_$LT$impl$u20$core..fmt..LowerHex$u20$for$u20$u32$GT$3fmt17hbec324fd4074f0c3E"(ptr noalias noundef readonly align 4 dereferenceable(4), ptr noalias noundef align 8 dereferenceable(24)) unnamed_addr #4 @@ -711,9 +716,10 @@ attributes #6 = { nounwind nonlazybind uwtable "probe-stack"="inline-asm" "targe attributes #7 = { cold nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #8 = { cold noreturn nonlazybind uwtable "probe-stack"="inline-asm" "target-cpu"="x86-64" } attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } -attributes #10 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #10 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: write) } attributes #11 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } -attributes #12 = { noreturn } +attributes #12 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } +attributes #13 = { noreturn } !llvm.module.flags = !{!0, !1} !llvm.ident = !{!2} 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=""